訳者より

この訳文について、誤植や誤訳などの問題があった場合、その責任は私(fumiu)にあります。
以下の日本語訳に関するご連絡は作者ではなく私へメール(fumiu at raythebm.net)して下さるようお願いいたします。

あなたは沢山のバージョン管理用リポジトリを持っています。
時にはそれらを一度に update したくなる事もあるでしょう。
あるいはローカルでそれらに行った変更をまとめて push したくなる事も。
ワークフローに合わせるために、いくつかのリポジトリ用に定型のコマンドラインを打っていませんか。

Myrepos は、どのバージョン管理リポジトリの管理にも使える便利な mr コマンドを提供します。

使い始めてみるには

始めるにあたって必要なのは、既存のリポジトリがいくつかチェックアウトしてある事だけです。
git, bzr, mercurial, darcs あるいはそのほか数あるバージョン管理システムのどれであっても構いません。
本当に気にしなくていいのです。全てをサポートしていますから。

それぞれのリポジトリの中で mr register コマンドを走らせてください。
これによって ~/.mrconfig ファイルの中にリポジトリが追加されていきます。

さて、これで mr update を実行する準備ができました。
ホームディレクトリでコマンドを走らせると、myrepos に登録した各リポジトリを一度に update することができます。

もっと速くするため、並列に実行したいですか?
mr -j5 update のようにすれば 5つのジョブが並列実行されます!

特定のリポジトリ内で mr update すると、そのリポジトリだけが更新されます。
より一般的に言えば、どの mr コマンドも現在のリポジトリ以下 あるいはカレントディレクトリ以下の全てのリポジトリに再帰的に作用します。

そのほか mr commit, mr push, mr status, mr diff など様々なコマンドが利用できます。
これらは対象のリポジトリがどんなバージョン管理システムであっても同じように使えます。
当然ながら、そのバージョン管理システム固有のコマンドも利用できます。

また、コマンドは mr up, mr pu のように 他のコマンドと明白に区別できる部分まで打てば、後は省略できます。

さて、もしあなたが mr update した場合は常に、標準の git pull の代わりに git pull --rebase を利用したいとしましょう。
そんな時には ~/.mrconfig を編集することで動作を変更できます。
各リポジトリに Makefile があるような感じですね。

[foo]
checkout = git@github.com:joeyh/foo.git
update = git pull --rebase

あなた独自のコマンドを作ることもできます。

[bar]
# リポジトリには fork 元があり、checkout の際には
# そちらを remote の upstream として設定したい場合
checkout = 
    git clone git@github.com:joeyh/bar.git
    cd bar
    git remote add upstream git@github.com:barbar/bar.git
# `mr zap` としたら upstream と統合します
zap = 
    git pull upstream
    git merge upstream/master
    git push origin master

グローバルに利用できるようコマンドを設定する事もできます。
そうすると mr は全てのリポジトリでそのコマンドを使えるようになります。

[DEFAULT]
# git リポジトリ内で `mr gc` した場合の動作を mr に教えます
git_gc = git gc "$@"

さて、ここまで myrepos を使って多数のリポジトリを簡単に管理する方法を見てきましたが、 これでもまだ機能の表面をなぞっただけに過ぎません。

他にできる事の例をいくつか挙げてみます。

  • 12時間ごとに一度だけリポジトリを update する
  • リポジトリに commit する際、その直前に任意のコマンドを実行する
  • パソコンがオフラインだったために失敗した動作を覚えておき、 オンラインになった時にそれらを再実行する
  • 複数の関連しあったリポジトリを一つのディレクトリにまとめ、そこに置いた .mrconfig ファイルにリポジトリのリストを格納する。 そのファイルを ~/.mrconfig から読み込むことで 結合した一つの論理リポジトリとして扱う
  • ホームディレクトリ全体をバージョン管理下に置く (VCS-Home(英語) を参照のこと)

news

version 1.20130826
Posted Mon Aug 26 16:40:38 2013
version 1.20130710
Posted Wed Jul 10 17:58:34 2013
version 1.20130705.1
Posted Fri Jul 5 21:02:58 2013
version 1.20130705
Posted Fri Jul 5 18:44:20 2013
Room fooへ戻る