Mercurialにリモートリポジトリを追加するにはどうすればよいですか?


99

私は次の方法でGitリポジトリを操作しています。

  • マスターリポジトリといくつかのリモートが異なる本番マシンにあります。
  • 生産コードをリモートにプッシュし、サービスを再起動して変更を有効にします。

私はGitからMercurialに切り替えようとしています。そのようなことを実現する方法を先に知りたいです。

回答:


130

[paths]ローカルクローンの.hg/hgrcファイルのセクションにエントリを追加します。.hg/hgrcファイルに入るセクションの例を次に示します。

[paths]
remote1 = http://path/to/remote1
remote2 = http://path/to/remote2

次にhg push remote1、そのようなコマンドを使用して、そのリポジトリに変更セットを送信できます。更新するリモートリポジトリが作業ディレクトリである場合は、更新を行うchangegroupフックをそのリモートの場所に配置する必要があります。それは次のようになります:

[hooks]
changegroup = hg update 2>&1 > /dev/null && path/to/script/restart-server.sh

誰もがリモートリポジトリにプッシュ時に作業ディレクトリを自動的に更新させることの大ファンであるとは限りません。これは確かにデフォルトではありません。


23
hg paths相当するリモコンの使用を見たいだけの人のためにgit remote -v
Keyo、

5
default-push(たとえば、remote1の代わりに)を使用すると、「hg push」と入力できます。次に、デフォルトのプッシュリポジトリが使用されます。非常に役立ちます。
クリスチャン、

6
@Christian default-pushは、通常のプッシュターゲットが通常のプルソースと異なる場合にのみ必要/有用です。それらが同じである(または引っ張らない)場合は、defaultそれで十分です。
Ry4an Brase

2
これについてさらに追加するだけです:両方がdefault-pushありdefault、設定ファイルにある場合、最初のものがプッシュに使用され、後者がプルに使用されます。同じリモートリポジトリからプッシュとプルを行う場合(おそらくMercurialを集中管理された方法で使用している場合に行います)、defaultファイルにのみ配置します。最初のプッシュ時にそれを行うための小さなコマンドラインオプションを追加した場合、それはとてもクールです...(または、多分私はCVSの人が多すぎる
;

MacにMercurial v2.6.2がインストールされていて、パスを設定するファイルが入っています.hg/hgrc(ファイル名の前にDOTがありません)。
Regis Zaleman 2013年

9

デフォルトのパスを追加する場合defaultは、~project/.hg/hgrcファイルで作業する必要があります。次のように:

[paths]
default = https://path/to/your/repo

幸運を。


5

あなたはhg-git GitHubプラグインを見ることができます

hg-gitの一般的なアイデア

MercurialのGitサーバーリポジトリにプッシュおよびプルする機能を追加します。
つまり、MercurialのGitベースのプロジェクトでコラボレーションしたり、GitサーバーをGitとMercurialの両方を使用する開発者とのチームのコラボレーションポイントとして使用したりできます。

注:Mercurialの最新バージョンでそのツールをテストしていません。


1
すべてをMercurialに移植できます。ソース管理に1つのツールのみを使用したいと思います。リポジトリが適切な構造を構築してから、本番用の水銀コマンドのみを変換します。私はgitとmercurialの両方が連携できることを知っていますが、試したことはありません。
トップレスの

2
^クリスは?:ので、あなたの質問です:?私はMercurialののものにGitのリポジトリを変換する方法を行う「または『/セットアップリモート水銀レポを宣言する方法』(のようsuperuser.com/questions/43686/...)、または」どこリモートのHgで宣言されている「(?crazythinking.wordpress.com/2009/03/07/...
VonC

0

Unixを使用していて、Gitがインストールされている場合は、このbash関数を使用して、テキストエディターなしでリモートへのパスを簡単に追加できます。

add-hg-path() {
    git config -f $(hg root)/.hg/hgrc --add paths.$1 $2
    awk '{$1=$1}1' $(hg root)/.hg/hgrc > /tmp/hgrc.tmp
    mv /tmp/hgrc.tmp $(hg root)/.hg/hgrc
}

それからそれを呼び出します:

$ add-hg-path remote1 https://path.to/remote1

誰かがPowershellに相当するものを構築したい場合は、それも含めたいと思います。その他の潜在的な改善には、パラメーターのエラーチェックやへの呼び出しの除外などがあります$(hg root)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.