BTSやバーンダウンチャートが標準搭載された新しいDVCS、veracityがおもしろい

ちょっと面白いものを見つけたので紹介。

DVCSといえばMercurialやGitが有名だ。
BitbucketやGitHubのお陰でDVCSをインストールするだけで個人でも簡単にBTSを利用できるようになった。
しかし、仕事で使っていると外部のリポジトリにpushできないこともある。
そういった場合はTracRedmineなど本格的なBTSを導入する必要があるだろう。

ただ、ちょっとしたプロダクトを作るのにわざわざBTSをインストールするのは面倒だと感じることもある。
そんなときにちょっと使ってみたいDVCSがあった。それがveracityだ。

これはなに?

2010年ごろにリリースされたDVCS。以下のような特徴を持つ。InfoQでも紹介されていたようだ。

  • Apache License v2
  • Mac、Windowsで利用可能
  • CおよびJavaScriptで記述されており、拡張機能JavaScriptで作成できる
  • データ構造がJSON形式
  • 履歴管理のDBを分散型DBで管理する
  • BTS、リポジトリビューワー、バーンダウンチャート、ビルド管理、ユーザーアカウント管理のWebUIが標準搭載されている
  • Tortoiseシェル拡張が開発中

こちらにリポジトリビューワーのデモサイトがある。

どうやって使うの?

ダウンロード画面から自分の環境に合わせたバイナリをインストールする。
今回はWindows 64-bit MSIを使った。

vv から始めるコマンドで利用することが出来る。

$ vv help

Usage: vv command [options]

Commands:

add         Pend the addition of a file or directory to the current r
addremove   Pend additions for all Found files and removals for all L
branch      Create, delete, manipulate or list named branches
cat         Unix-style cat on a repository file
checkout    Create a new working copy of a repository version
clone       Create a new instance of an existing repository
comment     Add a comment to a changeset
commit      Commit the pending changeset to the repository
config      View and manipulate configuration settings
diff        Show differences between versions of files or folders
diffmerge   Diff from root using SourceGear DiffMerge
export      Export a repository version to a non-version-controlled d
fast-export Export a repository as a fast-import stream
fast-import Import from a fast-import stream
heads       List the heads of all active named branches
help        List supported commands
history     Show the history of a repository, directory, or file
incoming    List changesets that would be pulled
init        Create a new repository and optionally create a working c
leaves      List all leaves of a repository
lock        Lock a file
locks       Show the status of all locks on the current branch
merge       Merge branches
move        Pend the moving of a file or directory
outgoing    List changesets that would be pushed
parents     List the parent changesets of the working copy
pull        Pull committed changes from another repository instance
push        Push committed changes to another repository instance
remove      Pend the removal of an item from the current repository
rename      Pend the renaming of an item in the current repository
repo        Create, list, delete, rename, or show details about repos
resolve     Resolve merge conflicts
revert      Revert changes in the pending changeset
serve       Launch veracity in server mode
stamp       Stamp a changeset with a user-specified label
status      Show the status of the working copy
tag         Tag the specified changeset with a unique, user-specified
unlock      Unlock a file
update      Update the working copy contents to match a repository ve
user        Create, rename, or list user accounts
whoami      Set or print current user account
zip         Export a repository version to a zip file

input "vv help command" for details on a particular command or topic

コマンド体系はややMercurialに似ている。

基本的な使い方は以下

$ vv init my_first_repo testdir
$ cd testdir
$ vv whoami --create myemail@example.com
$ echo Hello, world > file.txt
$ vv add file.txt
$ vv commit -m "my first commit!"

また、他のリポジトリからクローンして利用する場合には以下のようにする。

$ vv clone http://vvhost/repos/repo my_repo
$ vv checkout my_repo testdir
$ cd testdir
$ vv whoami --create myemail@example.com
$ echo Hello, world > file.txt
$ vv add file.txt
$ vv commit -m "my first commit!"
$ vv push

試しにデモサイトのリポジトリをクローンしてみた。

$ vv clone http://public.veracity-scm.com/repos/veracity veracity
$ vv checkout veracity -b master veracity_test

serveコマンドでWebUIを立ち上げることができる

$ vv serve --port 8080

ブラウザでアクセスするとWebUIから課題(workitem)の登録やソース・バーンダウンチャートの閲覧ができる。

  • サマリー

  • ヒストリーブラウザ

  • ワークアイテムの登録

  • バーンダウンチャート

課題管理の方法はAgileを強く意識して作られているようだ。
diffコマンドで日本語が文字化けするなどの問題はあるが、ちょっとしたプロジェクトにさくっと導入するには便利かもしれない。