Issue/Bug トラッキングシステム/Git リポジトリ Unfuddle を試してみる
Issue/Bug トラッキングシステムであり、Git/Subversion リポジトリの管理(Viewer だけではない)も行えるサービス。
Issue/Bug トラッキングシステムとソースリポジトリの連携は今では無くてはならない環境と(個人的には)なっている。
チケット駆動型の開発に慣れてしまうと、チケットを作成せずにソースに手を入れるというのは何となく心許ない。。
このような Issue 管理システムを使わずとも、リポジトリだけでもコメントは残せて、何故そのような commit を残したのかは記録され、振り返りは行える。
だが、その commit を残すまでの経緯、その commit を残すことになるトリガーを Issue 管理システム側のチケットを利用して記録し、経過を管理しておくことで、作業の漏れが少なくなり、一緒に作業を行っているメンバ間での途中経過の情報共有も行え、時間の節約に繋がる。
また、あれやこれやと空いた時間で手をつけている自分のような状況の者にとってすると、時間が経過した後に以前の作業に戻り易くなる。
Redmine は愛用しているのだが、現在内部ネットワークの閉じた環境で使用している。
- 「あちら側」(クラウド)へ Issue 管理システムとソースリポジトリを移行したい
- システムの運用管理はサービス提供者側にお任せしたい
(もの作り、プロジェクトの運用に専念したい)
という思いがあり、Unfuddle を試してみることにした。
何故 Unfuddle なのか?は以下の記事に感化され、「agile reporting!」をやってみたくなったのもある。。
他にも同様のサービスはあるので、もしかするともっと素敵なサービスがあるかもしれない。現在他サービスの検証までは行っていない。
ここでは、
- Issue/Bug トラッキングシステム Unfuddle のアカウント開設
- Git リポジトリの登録
- “Agile Reporting” のお試し (結局、次回の投稿に回すことに)
までをやってみる。
Unfuddle でアカウントを作成する
まずは Unfuddle でアカウントの作成を行う。

Unfuddle: Subversion Hosting, Git Hosting, Bug and Issue Tracking のトップページ “Start Unfuddling Now!” からアカウントを作成する。

まずはお試しなので “Private FREE” で。本格的に使うとした場合、最低“Compact” のパッケージにはしたい。月 24 ドルか・・・。

Unfuddle で利用する自身のサイトの URI は、上記で指定する “Subdomain” になる。必要項目を入力して“Continue”。アカウントが作成される。
以下はアカウントのトップページになる Dashboard と、プロジェクト単位の Dashboard。


Trac、Redmine などを使ったことのある方などは、さくさくと使い込なせるのではないかと思う。
利用方法については、本家のサイトのツアーを見て頂くのがよいかと思う。
Git リポジトリの登録と利用
Unfuddle のリポジトリには、Git、Subversion が利用できる。
ここでは Git を使用する。
Unfuddle にリモートリポジトリを作成し、ローカルリポジトリとの連携は、通常通り git コマンドを使用して行うことになる。 作成したリモートリポジトリとローカルリポジトリとのネットワークプロトコルは SSH になる。
手順としては、git でリモートリポジトリを利用する方法と同様。リモートリポジトリの管理部分だけ Unfuddle の UI を使って実施することになる。 ざっくりとした流れは以下の通り。
- リモートリポジトリを作成 - Unfuddle のサイトで
- SSH で利用する鍵ペアの作成 (作成していない場合) - ローカル環境
- ユーザアカウントに SSH 公開鍵を登録する - Unfuddle のサイトで
- ローカルリポジトリの準備 (作成していない場合) と反映する状態の FIX - ローカル環境
- ローカルリポジトリに Unfuddle のリモートリポジトリを追加 - ローカル環境
- ローカルリポジトリをリモートリポジトリに反映(push) - ローカル環境
アクセス管理を含めたリモートリポジトリの管理の手間が減るのが自前でやるのと比べてうれしい。
1. Unfuddle のサイトでリモートリポジトリを作成
Account、もしくは、Project の “Repositories” メニューから “Repositories” のページを開く。 “New Repository” をクリックし、新規のリポジトリ情報を入力する。

“Create Repository” を実行し、リポジトリを作成する。

2. SSH で利用する鍵ペアの作成 (作成していない場合)
まだ作成していない場合には、SSH の鍵ペアの作成を行う。SSH の鍵ペアの生成方法については、Unfuddle でドキュメントを用意してくれている。
3. ユーザアカウントに SSH 公開鍵を登録する
Unfuddle のサイトで 2. で作成した SSH 公開鍵(~/.ssh/id_rsa.pub)をユーザアカウントに紐付ける。
“People” タブで “Personal Settings” ページを開き、ユーザアカウントを選択する。

該当ユーザアカウントの“Edit”クリックし、“Edit Person” ページを開く。ページの下の方に“Public Keys”という項目があるので、“New Public Key..” をクリックする。

上記 2. で作成した SSH 公開鍵のファイル(通常は、~/.ssh/id_rsa.pub)を開き、その内容を“Value”にコピペする。

“Add” をクリックし、公開鍵を登録する。

4. ローカルリポジトリの準備 (作成していない場合) と反映する状態の FIX
管理するリポジトリをまだ準備していない場合には、準備しておく。
Unfuddle 固有の話ではなく、Git に関する話なのでここでは割愛する。以下の Unfuddle の提供しているドキュメントが参考になると思う。
5. ローカルリポジトリに Unfuddle のリモートリポジトリを追加
Unfuddle のリモートリポジトリの情報をローカルリポジトリに追加する。
まずは、ローカルの環境にて以下を実施。<subdomain>と<abbreviation>は、以下の情報に置き換える。
-
<subdomain>: アカウントのサブドメイン -
<abbreviation>: 1. でリモートリポジトリを作成した際に登録を行った “Avvreviation” の情報。
反映するローカルリポジトリのディレクトリに移動して実施。
$ cd /path/to/repository
$ git remote add unfuddle git@<subdomain>.unfuddle.com:<subdomain>/<abbreviation>.git
$ git config remote.unfuddle.push refs/heads/master:refs/heads/master
Git の設定情報に以下が追加される。
$ git config --list
...
remote.unfuddle.url=git@<subdomain>.unfuddle.com:<subdomain>/<abbreviation>.git
remote.unfuddle.fetch=+refs/heads/*:refs/remotes/unfuddle/*
remote.unfuddle.push=refs/heads/master:refs/heads/master
6. ローカルリポジトリをリモートリポジトリに反映(push)
準備は整ったので、ローカルリポジトリをリモートリポジトリに反映(push)する。
$ git push unfuddle master
The authenticity of host '<subdomain>.unfuddle.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '<subdomain>.unfuddle.com,xxx.xxx.xxx.xxx' (RSA) to the list of known hosts.
Counting objects: 307, done.
Compressing objects: 100% (282/282), done.
Writing objects: 100% (307/307), 214.83 KiB, done.
Total 307 (delta 111), reused 0 (delta 0)
To git@<subdomain>.unfuddle.com:<subdomain>/<abbreviation>.git
* [new branch] master -> master
Unfuddle のサイトで確認してみる。

リモートリポジトリからの clone は、以下の通りとなる。
$ git clone git@<subdomain>.unfuddle.com:<subdomein>/<abbreviation>.git
感想
感想の前に、、
「”Agile Reporting” のお試し」を誌面(?)の都合でまとめて書くことができなかったので、別の投稿に分けて記載する。
まだ感想を書けるまでは使い込なしていないが、現在使用している Redmine が持っている機能的なところでの比較としては、
- リポジトリは Issue 管理システムからの参照ではなく、Issue 管理システム内で管理される
- プロジェクトとリポジトリを M対N で紐付けることができる(できそう)
というところがうれしい。