Mercurial'de iki proje nasıl birleştirilir?


84

İki ayrı mercurial depom var. Bu noktada, iki proje üzerinde aynı anda çalışmak istediğim için "bir olmaları" mantıklı geliyor.

İki projenin her birinin yeni depoda bir alt dizin olmasını gerçekten çok isterim.

  1. İki projeyi nasıl birleştiririm?
  2. Bu iyi bir fikir mi yoksa onları ayrı tutmalı mıyım?

Görünüşe göre bir depodan diğerine aktarabilmem gerekiyor ... Belki de bu gerçekten basittir?

Yanıtlar:


69

İki depomu şu şekilde birleştirebildim:

  1. Kullanım hg clone first_repositoryDepolardan birini klonlamak için .
  2. Kullanım hg pull -f other_repositorydiğer deposundan kodu çekin.

-fPull (kuvvet) bayrağı anahtarıdır - bu iki depoları aynı kaynaktan olmadığını gerçeğini görmezden söylüyor.

İşte bu özelliğin belgeleri .


1
Bu, ikinci depodaki taahhütlerin karma anahtarlarını da koruyor mu? (Sanmıyorum, ama birleştirme yapana kadar sorun olmayabilir.)
Macke

6
Bu işe yarıyor, ancak hg mergesonunda her şeyin çalışmasını sağlamak için koşmanız gerekecek
Factor Mystic

7
@Marcus Lindblom: Bir değişiklik kümesi çekmek , hash değerini asla ve asla değiştirmez. Bunu hg glogyaptıktan sonra bakarsanız, iki alakasız değişiklik setiniz olduğunu göreceksiniz. Her satırdaki ilk değişiklik setinin ebeveyni yoktur, ancak bu Mercurial için bir sorun değildir. Bir kez çektiğinizde, her hg mvşeyi uygun alt klasöre yerleştirdiğiniz her satır için yeni bir değişiklik seti yapmak isteyeceksiniz , ardından satırları birleştiriyorsunuz ve artık hazırsınız.
Steve Losh

1
Ya iki deponun her ikisi için de ortak kodu varsa? Bu, birleştirme tarafından otomatik olarak ele alınır mı? ve birleştirmeye gelince, sadece $ hg birleştirme diyebiliriz?
kamal

2
referans amaçlı olarak, işte bu işleme ilişkin dokümanlar mercurial.selenic.com/wiki/MergingUnrelatedRepositories
Gent

7

hg 1.3'ten (2009-07-01) itibaren mahkeme emri almaya başladı . İlk sürümler eksik ve titriyordu ancak şimdi oldukça kullanışlı.


2
Çalışmak için acı verici bir alt-suni buldum. İşe yarıyorlar, ancak davranışlarını sağlamak için bazı çemberlerden atlamanız gerekiyor ve dikkatli olmazsanız birçok baş ağrısının kaynağı olabilir.
Pete Duncananson

4
Alt kaynakların resmi olarak son çare olarak görüldüğünü belirtmekte fayda var: mercurial.selenic.com/wiki/Subrepository (2013.11.12 itibariyle)
jtpereyda

3

Projelerde aynı kodu kullanmıyorsanız, onları ayrı tutun. Ayarlayabilirsiniz senin dışında sadece bir dizin olması için bu projelerin her birinin kişisel depo. Neden gerekmediğinde tüm dalları karıştırın, birleştirin ve yorum yapın.

Düzenlemeniz hakkında: Bir depodan diğerine aktarma. Her zaman transplantkomutu kullanabilirsiniz . Bununla birlikte, tüm bunlar ikisini birleştirme arzunuzu gerçekten bir adım öteye taşıyor, bu yüzden önerilerimi kullanırken kendinizi rahatsız hissedebilirsiniz. O zaman orman uzantısını veya başka bir şeyi kullanabilirsiniz.

hg transplant -s REPOSITORY lower_rev:high_rev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.