2011-05-25 14 views
0

私は安定した実験ブランチを持つリポジトリを使って作業しています。時々私は実験ブランチ上に安定したブランチの準備ができていないファイルを追加します。私がマージするとき、私は両方のブランチに共通するファイルの変更をマージしたいが、ブランチの1つに存在しないファイルは無視する。Mercurialでマージするときに存在しないファイルを無視します。

は、ここで簡単な例です:私は、マージツールの設定を変更しかし

hg init 
hg branch stable 
(create file A) 
hg add A 
hg commit -m "Added A" 

hg branch exp 
(create file B) 
hg add B 
hg commit -m "Added B, which is really experimental" 

(modify file A) 
hg commit -m "Some changes to A" 

hg update stable 
hg merge exp 

、Mercurialは常にマージと一緒にBを取るように見えます。安定したブランチには存在しないので、決して矛盾しません。

私は、次の操作を行うことができます:

hg update stable 
hg merge exp 
hg commit -m "Merged" 
hg revert -r 0 B 

が、それは元に戻す必要があるファイルを知っている私を必要とします。

マージを行う最も簡単な方法についての考えは、1つのブランチには存在しないファイルを無視しますが、自動的に行うことをお勧めしますか?

+0

Mercurialは、あなたが言ったことを正確に行っています。あなたは 'exp'ブランチで変更を行い、' stable'ブランチにそれらをマージすると言ったのです。それには新しいファイルが含まれています。代わりに 'stable'の変更を' exp'にマージしようとしましたか? –

+2

おそらく、あなたのブランチの概念を考えて、実際に実験的な変更を行うために3番目のブランチを使うべきでしょう。 –

答えて

1

Mercurialにあなたがしたいことをすることはできません。

個々のファイルをマージしないと、ブランチ全体をマージします。つまり、ブランチの一部であるすべてのファイルがマージの一部になります。これは、Mercurialがどのように設計され、どのように動作するかです。

コミットする前に不要なファイルを元に戻す/忘れる/削除することができますが、その後は災害のために自分自身を設定するだけです。

残しておきたいことを、分かりやすくするために分離しておくことをお勧めします。これにより、1つのブランチをマージし、もう1つのブランチを別々にすることができます。

関連する問題