このセットアップにおける Mercurial の適切な使用パターンは何ですか?
-
08-06-2019 - |
質問
同じ閉鎖された (ああ、愚かな政府の) ネットワーク上に 2 人の開発者がいます。別の開発者は車で数分のところにあり、4 人目の開発者は国を半分越えたところにいます。電子メール、ftp、およびリムーバブル メディアはすべて、同じネットワーク上にいない人々が使用できる転送方法です。
私は 2 人のクローズド ネットワーク開発者のうちの 1 人であり、私たちを「マスター」ロケーションと考えてください。
グループに最適な Mercurial セットアップ/パターンは何ですか?リモート開発者との間で変更を送信する最善の方法は何ですか?私は責任者なので、少なくとも 1 つのマスター リポジトリと、開発可能な別のローカル リポジトリを保持する必要があると考えました。他の人にはマスターのクローンが必要なだけです。これは正しいですか?これは私にも合併の責任があると思いますか?
ご覧のとおり、私はまだ分散バージョン管理について理解しようとしています。接続状況を考えるとこれ以外に方法はないと思います。
解決
ネットワーク外のユーザーができること パッチ, 、および/または使用 Eメール 更新をメイン リポジトリまたは自分のような誰かに送信して、それらをマージします。あなたと同じように、内部の他の人々はローカル コピーを持ってマージを行うことができますが、ネットワーク外のパッチを使用している場合は、誰も混乱しないように 1 人がそれらに対処する方が良いかもしれませんが、それはあなたがしなければならないことです。自分自身を考えてください。
逆の方法で同期すると、パッチを作成し、リモート開発者に電子メールを送信するかフラッシュ ドライブを入手して、システムにパッチを適用することになります。あなたにはチームマンとしての十分なコミュニケーションが必要になるでしょう。私があなたの立場にないことに感謝します。
これらが私の唯一の提案です。当然のことですが、VPN 接続を取得してください。それがどのように進むか、どのような計画が毎週の溝に安定するかなどを聞きたいです。
他のヒント
パッチはシンプルで多用途なソリューションです。
より大きな変更グループ (特にバイナリ変更とマージ) を移動するために、Mercurial はバイナリ バンドルを提供しています。バンドルは基本的に、実行時にネットワーク上に送信されるバイナリです。 hg push
, しかし、ここではファイルにキャプチャされています。
何らかの方法で (フラッシュ ドライブ、DVD などで) クローンを入手したと想像してみましょう。あれを呼べ upstream
. 。次に 2 番目のクローンを作成し、それを呼び出します devel
. 。私はすべての開発を devel
そしてたくさんのコミットやマージなどを行います。Mercurial は配布されているので、これらすべてをオフラインで行うことができます。
どの変更セットが欠落しているかを確認するには upstream
私はします
% hg outgoing ../upstream
送りたいものがあるときに使えます
% hg bundle changes.hg ../upstream
すべてのメタデータを含む変更セットを含むバイナリ圧縮ファイルを取得します。このファイルを CD に書き込み、メールで送信できます...
バンドルの受信者ができること
% hg incoming changes.hg
変更セットのリストを表示し、
% hg pull changes.hg
変更セットを解凍してリポジトリに追加します。その後、彼はおそらくマージする必要があります。これは、彼が HTTP または SSH 経由でリポジトリから直接プルしたのとまったく同じです。
注意してください、 upstream
リポジトリは、どの変更セットが上流リポジトリですでに見つかっているかを記憶する便利な方法としてのみ使用されます。変更セット ID を書き留めて使用することもできます。 hg bundle --base
バンドルするときに、ベース (共通) チェンジセットを指定します。見る hg help bundle
または ウィキを見てください.
正しい。何かが閉じたネットワークに侵入する唯一の方法は、フラッシュ ドライブを経由することです。