Mercurial'da uzak depoları nasıl ekleyebilirim?


99

Git depolarıyla şu şekilde çalışıyorum:

  • Ana depom ve farklı üretim makinelerinde birkaç uzaktan kumandam var.
  • Üretim kodunu uzaktan kumandalara gönderiyorum ve değişikliklerin geçerli olması için hizmetleri yeniden başlatıyorum.

Git'ten Mercurial'e geçmek üzereyim ve böyle bir şeyi nasıl başarabileceğimi önceden bilmek istiyorum.

Yanıtlar:


130

[paths]Yerel klon .hg/hgrcdosyanızın bölümüne girişler eklersiniz . .hg/hgrcDosyaya girecek bir bölüm örneği :

[paths]
remote1 = http://path/to/remote1
remote2 = http://path/to/remote2

Daha sonra hg push remote1bu depoya değişiklik setleri göndermek gibi komutları kullanabilirsiniz . Bu uzak deponun güncellenmesini istiyorsanız changegroup, bu uzak konuma güncelleme yapan bir kanca yerleştirmeniz gerekir . Bu şuna benzer:

[hooks]
changegroup = hg update 2>&1 > /dev/null && path/to/script/restart-server.sh

Herkes, uzak depoların itme durumunda çalışma dizinlerini otomatik olarak güncellemesinin büyük bir hayranı değildir ve bu kesinlikle varsayılan değildir.


23
Sadece uzaktan kumandayı görmek isteyenler için hg pathseşdeğer olanı kullanın git remote -v.
Keyo

5
default-push (örneğin remote1 yerine), birinin sadece "hg push" yazmasını sağlar. Varsayılan itme havuzu daha sonra kullanılır. Çok yararlı.
Christian

6
@Christian default-pushyalnızca normal itme hedefiniz normal çekme kaynağınızdan farklıysa gerekli / kullanışlıdır. Eğer aynıysa (veya asla çekmezseniz), o zaman defaultyeterlidir.
Ry4an Brase

2
Sadece bununla ilgili daha da fazla bilgi vermek gerekirse: eğer ikisine de sahipseniz default-pushve defaultyapılandırma dosyanızda, o zaman ilki itmek ve ikincisi çekmek için kullanılacaktır. Aynı uzak depodan itmek ve çekmek istiyorsanız (muhtemelen Mercurial'i merkezi bir şekilde kullanıyorsanız yaparsınız), o zaman sadece defaultdosyayı koyun . Bunu sadece ilk
basışta

Mac'imde Mercurial v2.6.2 yüklüyüm ve yolları belirleyecek dosya içeride .hg/hgrc(dosya adından önce DOT yok).
Regis Zaleman

9

varsayılan yol eklemek istiyorsanız default, ~project/.hg/hgrcdosyanızda çalışmanız gerekir . Aşağıdaki gibi:

[paths]
default = https://path/to/your/repo

İyi şanslar.


5

Hg-git GitHub eklentisine bir göz atabilirsiniz :

hg-git genel fikir

Mercurial'den bir Git sunucu havuzuna gönderme ve buradan çekebilme özelliği ekleyerek.
Bu, Mercurial'den Git tabanlı projeler üzerinde işbirliği yapabileceğiniz veya hem Git hem de Mercurial kullanan geliştiricilerden oluşan bir ekip için işbirliği noktası olarak bir Git sunucusu kullanabileceğiniz anlamına gelir.

Not: Bu aracı Mercurial'in en son sürümleriyle test etmedim.


1
Her şeyi müşteriye taşıma yeteneğim var, kaynak yönetimim için yalnızca bir araç kullanmak istiyorum. Depo uygun yapıları oluşturduktan sonra dönüştürün ve ardından üretim için yalnızca değişken komutları kullanın. Hem git hem de mercurial'ın işbirliği yapabileceğinin ama asla denemediğinin farkındayım.
üstsüz

2
^ Chris: Sorunuz şu: Git depolarını Mercurial depolarına nasıl dönüştürebilirim? "Veya" uzak Hg deposu nasıl bildirilir / kurulur? "( Superuser.com/questions/43686/… gibi ) veya" nerede uzaktan Hg olarak mı ilan edildi? "( crazythinking.wordpress.com/2009/03/07/… )
VonC

0

Unix'teyseniz ve Git yüklüyse, bu bash işlevini bir metin editörü olmadan uzaktan kumandalara kolayca bir yol eklemek için kullanabilirsiniz:

add-hg-path() {
    git config -f $(hg root)/.hg/hgrc --add paths.$1 $2
    awk '{$1=$1}1' $(hg root)/.hg/hgrc > /tmp/hgrc.tmp
    mv /tmp/hgrc.tmp $(hg root)/.hg/hgrc
}

Sonra şununla çağırın:

$ add-hg-path remote1 https://path.to/remote1

Birisi bir Powershell eşdeğeri inşa etmek isterse, bunu da eklemek isterim. Diğer potansiyel iyileştirmeler arasında parametreler üzerinde hata denetimi ve çağrının dikkate alınmaması yer alır $(hg root).

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.