2009-08-27 8 views
3

背景:私はPh.Dのデータを分析するためにいくつかのMATLABコードを継承しました。研究。コードを理解しやすくするために、サンプルテストケースのコードを実行するために必要なファイルの最小サブセットまでコードを分解しました。1つのブランチが別のブランチのサブセットである開発ブランチを維持する

質問:私は2つのブランチとしてバージョン管理システムにこのコードをコミットし、すべてのコードを含むmaster支店、およびコードの私の切り詰めダウンバージョンを含むminimal支店、およびできるようにしたいと思いますこれらのブランチ間で前後に変更をマージします。どうすればこれを達成できますか?

私はこれをGitまたはMercurialの1つの作業ディレクトリとブランチで行いたいと思っていますが、私は他の提案をしています。

編集:私は、私はこれらの線に沿って、前のスタックオーバーフローの質問を見て思った と私はちょうどそれを見つけた:Pushing updates to a pruned Mercurial branch。 で受け入れ答えにコメント、それは は私が が何をしようとしているため、用語「狭いクローニング」であり、それはGitの とMercurialの両方のために進行中の作業だ ということを述べたのです。

答えて

4

gitとmercurialの両方が正常に動作するはずです。マスターブランチを作成し、それを最小限のブランチにコピーしてから、すでにあるインプリメンテーションのように見えるように最小ブランチを削除します(追加のファイルをすべて削除し、変更したファイルをコピーします)。

その後、ブランチ間で通常のマージコマンドを使用します。主に最小ブランチからマスターブランチにマージすることが最善の方法です。他の方法を丸めようとすると、ファイルの一部が削除されたファイル/削除された関数に適用されるため、マージが失敗した(コンフリクトあり)という苦情が返されます。

+1

1つのリポジトリで2つの初期コミットを行うこともできます。これにより、多数のファイルを削除するコミットが不要になりますが、最初のコミットの間に重複情報があります。 – Cascabel

関連する問題