2012-01-25 27 views
12

Mercurial ve Python ile uğraşmaktan vazgeçiyorum, çünkü işleri zorlaştırıyor. Ben önemsiz bir çatışma varsa ve Mercurial ben bile bilmiyorum ne yapacağını herhangi bir öneri vermez çünkü bu nasıl önemsiz dosya çatışmayı çözmek için:Bu Mercurial ihtilafı nasıl çözülür?

KDiff3

çatışma önemsiz ama çözemezsek Bu da karmaşık bir şeyi çözemiyorum. Dosyayı istediğim şekilde düzenleyebilir ve herhangi bir yerden tekrar işleyebilir miyim? hg merge mu çalıştırmalıyım? Mercurial neden olmasın bile bırakmam için bir versiyon seçmeme izin verdi? 1000 kötü yazılmış man sayfadan kazı yapmaksızın neden imkânsız hale getirmenin neredeyse imkansız olduğu bir şey var?

+1

Sadece kayıtlar için bu, Mercurial ve Python hakkında bir şeyleri yapmakla ilgili değil, kdiff3 'programının kullanımı hakkındadır. – Tobias

cevap

24

KDiff3 documentation, özellikle de merging and the output window numaralı bölüme bakmanız gerekir. Çatışmayı çözmek için, live veya january satır için doğru seçim olup olmadığına karar vermeniz gerekir. Bu karar sizin vereceğiniz bir şeydir, bir aracın diğerini mi kastettiğinizi bilemezsiniz. KDiff3 yılında

, sen basın Ctrl + january veya alt pencerenin kenar boşluğunda sağ tıklayın ve istediğiniz satırı seçmek seçmek için + live seçmek için Ctrl basın. Alt pencerede de tıklayabilir ve çizgiyi manuel olarak düzenleyebilirsiniz.

Mercurial size configure your merge tool dilediğiniz şekilde izin verin. TortoiseHg, KDiff3'ü listenin en üstüne getiren bir varsayılan yapılandırmayla birlikte gönderilir, ancak isterseniz başka bir araç kullanabilirsiniz. Birleştirme aracı gerçekten sadece dört dosya adını kabul eden bir programdır: karşılaştırılacak üç dosya (temel, üst 1, üst 2) ve bir çıkış dosya adı.

Komut satırındaki çakışmaları gidermek için uygun bir komut satırı üç yollu birleştirme aracı başlatmanız gerekir. İsterseniz, örneğin merge with vim. (Ben vimdiff hakkında hiçbir şey bilmiyorum korkuyorum, kendimi KDiff3 kullanın.)

Eğer araçlar açılır birleştirme görmek sevmiyorum, o zaman

[ui] 
merge = internal:merge 

yapmak için ayarlayabilirsiniz Mercurial sadece dahili üç yönlü birleşme kullanır. Düzenlemeler çatışmalarda olmadığında dosyaları birleştirir. Bir çakışma olduğunda, dosya "çözülmemiş" olarak işaretlenir ve çakışma işaretleri dosyada saklanır.

Ardından, istediğiniz sürümü almak için dosyayı el ile düzenlemeniz gerekir. Sen hg resolve your-file tamamen birleştirme yeniden

$ hg resolve --tool internal:other your-file 

:

$ hg resolve --tool internal:local your-file 

veya başka versiyonu: Ayrıca yerel (sizin) sürümünü ya yeniden birleştirme ve alabiliriz. Dosya, işlenmeden önce "çözümlendi" olarak işaretlenmelidir. Bu hg resolve --mark your-file ile yapılır. Geçerli birleştirme durumunun durumu için hg resolve --list'a bakın.

+0

Teşekkür ederim Martin. Ayrıca, eğer uygunsa, komut satırında çözmeyi de isterim. –

+1

Yine de haklısınız - KDiff3, arayüzlerin en sezgisine sahip değil. Bir süre sonra çok basit olduğunu fark edeceksiniz, ancak ekranın ilk ortaya çıktığında ne kadar göz korkuttuğunu unutmak kolay. Bu arada, hangi bitin duracağına karar vermek için araç çubuğundaki "A", "B" ve "C" düğmelerini de kullanabilirsiniz. –

+0

@NickRosencrantz: Birleştirme aracını nasıl yapılandırabileceğiniz hakkında biraz bilgi ekledim. –

19

Base, yerel sisteminizde bir önceki sürümdür, Geçerli 1'in geçerli değişiklikler, üst 2, sunucudan dosyadır.

Yaptığınız değişikliklerin gerekirse kontrol edilmesi gerekiyorsa, birleştirme menüsündeki her yerde B'yi seçin. Yerel makinenizdeki en yeni sunucu sürümünü istiyorsanız, birleştirme menüsünde her yerde C'yi seçin

+5

Teşekkürler! "Base" in daha önceki bir versiyonu nasıl bildin? Gizemli ve anlamsız "taban", "ebeveyn1", "ebeveyn2" kelimeleri hakkında bir saatliğine şaka yaptım, tanrım! – Slav