hg cloneする時に利用できるリポジトリの指定方法について #mercurialjp
このエントリはMercurial Advent Calendar 2013 の7日目です。*1
hg clone
するときのURLについて書きます。
基本編
通常hg clone
に次のようなURLを渡すことでリポジトリをクローンすることができます。
$ hg clone path/to/local/repo $ hg clone file:///absolute/path/to/local/repo $ hg clone http://bitbucket.org/troter/home $ hg clone https://bitbucket.org/troter/home $ hg clone ssh://hg@bitbucket.org/troter/home
省略形を利用する
Schemes エクステンション*2を有効にすると、Mercurialのホスティングサイトに向けの省略記法が利用できるようになります。
# .hgrc [extensions] schemes =
Schemes エクステンションを有効にすると、次の省略形が利用可能になります。
省略形 | 展開されるURL |
---|---|
py://cpython | http://hg.python.org/cpython |
bb://troter/home | https://bitbucket.org/troter/home |
bb+ssh://troter/home | ssh://hg@bitbucket.org/troter/home |
gcode://go | https://go.googlecode.com/hg/ *3 |
kiln://hoge/bar | https://hoge.kilnhg.com/Repo/bar |
詳しくは次を参考にしてください。
省略形を定義する
schemesというセクションを利用することで自分で省略形を定義することもできます。定義してみましょう。
# .hgrc [schemes] codeplex = https://hg.codeplex.com/
この定義で、次の省略形が利用可能になります。
省略形 | 展開されるURL |
---|---|
codeplex://nakedobjects | https://hg.codeplex.com/nakedobjects |
社内リポジトリ用に設定すると便利です。
hg clone
後に移動したいリビジョンを指定する
省略形を含めURLにフラグメントを使うとhg clone
後に移動するリビジョンを指定できます。次の例ではリポジトリクローン後stableブランチに移動します。
$ hg clone http://hg.intevation.org/mercurial/crew/#stable destination directory: crew adding changesets adding manifests adding file changes added 20047 changesets with 38585 changes to 2219 files updating to branch stable 1032 files updated, 0 files merged, 0 files removed, 0 files unresolved
追記:この方法を利用するとhg pull
時のリビジョン(ブランチ)もフラグメントのものが利用されます。特定のブランチのみ利用するリポジトリ(CIサーバーや、ステージング環境、など)で活用してください。 id:flying-foozyさんアドバイスありがとうございます。
まとめ
- 省略形を使ってリポジトリをクローンできる。
- 社内リポジトリ用に省略形を定義してあげると便利。
gcodeの場合のみ挙動が違うのでschemesエクステンションのソースを調べる。- バグでした。。 Bug 3880 – schemes extension clones repo into current dir instead of repo name @yujauja さんありがとうございます。