簡単に:
2つ(またはそれ以上)の「開発の流れ」/環境を相互に追跡し、完全に収束することなく、相互に変更を双方向に送信し、特定の重要な重要な違いを維持したいですか?
詳細、1 つの特定の例:
以下に特定の例を示します。
私はホーム ディレクトリ glew-home のバージョン管理を 28 年間行ってきました。RCS、SCCS、多くの RCS ラッパー、CVS、SVN、Monotone や Darcs、bzr、git、そして現在の Mercurial などの初期の DVCS による短期間の実験。必要に応じて git や bzr に戻りますが、現時点では主に Mercurial を使用して満足しています。
現在、私のホーム ディレクトリは、多くのシステムで似ていますが、同一ではありません。最大の違いは、Cygwin と動作中のさまざまな Linux の間にあります。私はそれらをできるだけ似せようとしますが、違いが生じ、多くの場合、それらを維持する必要があります。
違いの簡単な例を次に示します。Cygwin では、私の個人所有のラップトップでは、~/LOG は ~/LOG.dir/LOG.cygwin.glew-home へのシンボリック リンクですが、職場では ~/LOG は何かへのシンボリック リンクです。 ~/work/LOG.dir/LOG.work のように。
理由: プロプライエタリなものはすべて機能し続ける必要があります。~/work は別のリポジトリ ~/work/.hg であり、プッシュ/プルされたり、パーソナル コンピューターと同期されたりしません。
問題: これらのシンボリック リンク (および他のいくつかのファイル) を別々に保ちたい。しかし、他のすべてのファイルを同期したい。私は両方の場所で自分の環境に変更を加えます。仕事で ~/.emacs に変更を加えた場合は、それを家に送りたいと思います。
Q: これを最も便利に行うにはどうすればよいですか?
古き良き時代には、共通のリポジトリ、たとえば共通の CVS リポジトリを使用していました。CVS はシンボリック リンクを処理しませんが、CVS に格納されたテンプレートからシンボリック リンクを生成するスクリプトを作成したとします。~/LOG のシンボリックリンクテンプレートが cygwin-laptop と仕事用に異なるブランチを持つように手配します。ほとんどのファイルが対応する RCS/CVS リポジトリの同じブランチを指すようにワークスペースを作成しますが、cygwin-linux と work の間で異なるファイルには、対応するブランチが対応するワークスペースにチェックアウトされます。
これは機能しましたが、維持するのは少し面倒でした。
Mercurial (または Got、Bzr) などの最新の DVCS でこれを行う良い方法がわかりませんでした。
これらの最新の DVCS ツールは、ファイルごとの分岐ではなく、リポジトリ全体の分岐を行います。彼らは、ほとんどのファイルで同一であるが、特定のファイルのみが異なる 2 つのブランチの概念を理解していません。
2 つのブランチを追跡しようとすると、常に本質的な違いが伝播されてしまいます。
Makefile を提案する人もいます。魅力的ではありません。
本質的な変更をベース回転数に加え、常にリベースすることを検討しました。しかし、リベースはあまり好きではありません。
より良いアイデアをいただければ幸いです。
キルト?