Mercurial greft kullanmanın sonuçları
Son zamanlarda birkaç soru Mercurial sürüm dalları bakımı değişiklikleri atlama hakkında oldu. Örneğin:
- Mercurial: Branch specific changes keep coming back after dummy merge
- Why are Mercurial backouts in one branch affecting other branches?
graft
Bu sorunu önlemek için kullanma hakkında merak etmişimdir 2.0, piyasaya çıktığından beri. Revizyon bir ağaca verilen bu gibi:
A---B---C---D---E---F---G---H---I---J
Kötülük değişikliği E
atlar serbest bir şube oluşturmak zorunda kalabiliriz.
hg update -r D
hg graft "F::J"
bize vererek:
A---B---C---D---E---F---G---H---I---J
\
--F'--G'--H'--I'--J'
- Sadece burada Ne oldu? S1: Anlayabiliyorum
transplant
olurdu oluşturulan yamalar dışarıF::J
ve sonra uygulanan onları üzerineD
amagraft
dedi kullanmak için 3-yollu birleştirme yerine yamalar. ......Yani. nasıl çalışır? Neden daha iyidir?
Diyorum ki şimdi E
, düzeltme ve benim albüm şube içine birleştirme sağlar.
--E2-----------------
/ \
A---B---C---D---E---F---G---H---I---J---M1
\ \
--F'--G'--H'--I'--J'---------M2--
M1 bir düz birleştirme; orada hiçbir şey özel. M2 olan şubeleri birleştirme "aynı" (veya en azından eşdeğer) değişiklikleri.
- S2: bu 3-yollu birleştirme sadece normal
D
,J'
M1
kullanarak birleştirme? - S3: mercurial saklı/greft operasyonu hakkında ek bilgi yardımcı olmak için kullanılan birleştirme ile değil mi?
Ve son olarak...
- Böyle bir akım ile potansiyel sorunların Neler? S4:
CEVAP
24 ** güncelleme ne zaman ve greft F::J
, Mercurial samimi bir dizi çalışır. Bu birleştirme ile başlar:
M = three_way_merge(local=D, other=F, base=E)
Eğer Birleşik Devletleri C
D
, arasında delta d
yazma ile başlayalım:
d e f
---- C ---- D ---- E ---- F ----
Devre grafik 90 derece saat yönünde ve yukarıdaki üç yollu birleştirme bu gibi görünüyor:
-e
.---- D
/
E
\
'---- F
f
Yani, biz E
ile başlayan ve -e
ters D
ulaşmak için de geçerli olduğunu farz et. e
ters yama olarak düşünüyorum. E
başlangıç biz de devlet için gitti normal delta f
37*. Garip bir şey var — bütün devletler (D
, E
F
) depo içinde zaten var. Yani böyle bakınca, D
F
birleşmeden çok açık.
Birleştirme meselesi "elmas tamamlanıyor". Çok yeni bir devlet M
bir karışımı D
F
ve nerede fark D
M
benzer f
fark F
51* benzer -e
. Bu gibi görünüyor:
-e f'
.---- D ----.
/ \
E M
\ /
'---- F ----'
f -e'
f
delta f'
oldu -e
delta -e'
oldu. Bu üç yollu birleştirme sadece normal değil, ama etkisi ilginç: D
yerine E
! üzerine F
başvurduk
Birleşmeden sonra, F
61 *ikinci ebeveyn düştü
-e f'
.---- D ----.
/ \
E M
\
'---- F
f
Söylüyorum: Biz kopyalanan "etkisi" F
üzerine D
, yani, elimizde bulunan bir delta ( f'
) uygulanan D
ver aynı etkiye f
uygulanan E
. Grafik biraz düzelteceğiz
f'
--- D ---- M
\
'---- E ---- F
e f
Sonuç F
D
üç yönlü bir makine kullanarak tam üzerine aşılı.
S1:Sadece burada ne oldu? ......Yani. nasıl çalışır? Neden daha iyidir?
A1:Samimi makine birleştirme beri yamalar daha iyidir kullanarak dikkate adlandırır gibi şeyler alır.
S2:Bu sadece normal bir 3-yollu D, J kullanarak birleştirme' ve M1? birleştirme.
A2:Evet, aşılama grafik topoloji değiştirmez.
S3:Mercurial saklı/greft operasyonu hakkında ek bilgi yardımcı olmak için kullanılan birleştirme ile değil mi?
A3:Hayır.
S4:Böyle bir akım ile potansiyel sorunlar nelerdir?
A4:Bir bakış açısı birleştirme Tamam çalışması gerekir. İnsanlar için kafa karıştırıcı olabilir ve bazı tarih yinelenen.
İlişkisel veritabanına göre MongoDB gi...
Nasıl doğru Mercurial özelliği, bir şu...
Neden Mercurial SQL dosyalarımı ikili ...
Mercurial varsayılan diff aracı değişt...
Nasıl mercurial için git deposu dönüşt...