状況はこんな感じです。ラップトップAとワークステーションBという2台のコンピュータがあります。 Bには固定IPがあり、Aには動的IPがあり、BからAへの接続を避けたい(Sshトンネル設定など、パラメータのためにBからAへのSSHは不可能であると仮定します)。
/home/user/foo.git
両方のシステムにgitリポジトリがあります。問題:A:/home/user/foo.git
Aの変更を処理し、マージB:/home/user/foo.git
。結局のところ、両方のリポジトリは同じでなければなりません。
私が考えることができる最も簡単な解決策は次のとおりです。
A:~$ cd foo.git
A:~/foo.git$ git commit -a
A:~/foo.git$ ssh B
B:~$ cd foo.git
B:~/foo.git$ git commit -a
B:~/foo.git$ logout
A:~/foo.git$ git pull ssh://B/home/user/foo.git
A:~/foo.git$ git push ssh://B/home/user/foo.git master
(これを行うには、これに対する答えで説明されているように、Bのgit設定を変更し、受信後にフックを追加する必要がありました。スタックオーバーフローの質問)
私の質問:
1)上記の内容は正しいですか? 2)同じ目標を達成するより簡単な方法はありますか?
ベストアンサー1
あなたが受け取った後フック私の考えでは、非常に怖い警告がいくつかあります!
同様の設定がありますが、サーバーBには2つのストレージコピーがあります。 1つは、デフォルトのリモート(「ソース」)として使用されるベアストアです。これにより、「git push」と「git pull」のパラメータを指定する必要はありません。最後に、あなたが言及したコマンドを単純化したのがこれです。 (私の場合、Bはサーバーです。そのままにすることができるARMボックスがあります。)
「Gitを実際に使用しない」場合、これは必ずしも最善の考えではありません。 Gitは強力に設計されていますが、UIはまだ他のDVCSほど一貫性がありません。この目的のためのより簡単なツールは次のとおりです。
http://git-annex.branchable.com/assistant/(新しい - まだ試していません)
http://www.cis.upenn.edu/~bcpierce/unison/(古いスタンバイ、SSH経由で動作)
Dropbox(無料ではなくインターネット接続が必要ですが、柔軟でLAN経由での転送も最適化されています)
あるいは、MercurialやDarcsもあります。私はどちらも追加のベアリポジトリを要求したり、コミットフックを心配するGitの問題を避けると思います。 MercurialはGitよりもユーザーフレンドリーでなければなりません。 Darcsのデザインは他のDVCSとは異なるため、これが最善のアイデアではない可能性があります。ドキュメントを見ると、Bazaarはこのシナリオについて懐疑的なようです。