2010-03-23 19 views
9

Bir freelancer olarak, çoğunlukla Subversion depolarını kullanan şirketlerde çalışıyorum.Mercurial'i yerel olarak kullanabilir ve/Subversion deposuna/push'den güncelleyebilir miyim?

Bu depolardan kod almak için Mercurial'i kullanabilir, çevrimdışı olduğumda değişiklikleri takip edebilir ve daha sonra çevrimiçi olduğumda tüm yerel değişikliklerimi şirketinizin Subversion sunucusuna gönderirseniz kullanışlıdır.

Bu işe yarar mı? Spesifikler hakkında iyi dersler okudunuz mu?

+0

Benzer soru burada: http://stackoverflow.com/questions/799860/ kullanarak-civalı-yerel-only-ile-yıkılma sunucu. Sanırım sorum benim de orada kalmalı; Bu, birkaç farklı şekilde ifade edilebilen sorulardan biridir. –

+0

Aaave bu bir: http://stackoverflow.com/questions/826938/interoperation-between-mercurial-and-subversion –

+0

İşte Kiln Overflow aynı soru, ya da ne denir? Http://kiln.stackexchange.com/ sorular/948/can-i-use-mercurial-yerel-ve-update-it-a-subversion-repository/950 # 950 –

cevap

5

HgSubversion ürününü deneyin. Sadece bunu yapmana izin veriyor. Svn deposunu yerel olarak bir hg deposuna klonlayabilir ve yerel olarak hg ve svn ile uzaktan çalıştırabilirsiniz (itme ve çekme beklediğiniz şeyleri yapar).

Geçmişte biraz başarı ile kullandım ama onunla çok fazla tecrübesi yok.

2

Bu wiki page üzerinde bazı bilgileri bulabilirsiniz.

8

CVS kullanan bir şirkette çalışıyorum, bu yüzden HgSubversion bir seçenek değildi. Bunun dayalı bir iş akışı birkaç gün önce aynı soru vardı ve gelişmiş:

http://momentaryfascinations.com/programming/how.to.use.mercurial.for.local.source.code.management.with.a.public.subversion.server.html

ben "salt okunur" olarak muamele benim CVS deposu olan Mercurial depo yarattı. Daha sonra bu "readonly" hg repo'yu yerel olarak değişiklik/düzeltmeler yaptığım çalışma depolarına klonladım. Yaptığım her özellik ve düzeltme için repo'yu klonlamaktayım, ama aynı zamanda sadece bir repoya sahip olabilirsiniz ve gelişimini yönetmek için farklı bir dallanma stratejisi kullanabilirsiniz. İşte bu tür stratejilerin a good overview.

Bu iş akışının anahtarı, "salt okunur" bir depoya sahip olmaktır. Değişikliklerimi, CVS'nin zirvesinde olan ilk Mercurial deposunda yaptım. Bu çalıştı, ancak CVS güncellenirken kafa karıştırıcı oldu. Bu ek katmanı yaparak kendi değişikliklerinizi yapmaya ve CVS'den ayrı ayrı güncelleme yapmaya başlayabilirsiniz.

CVS değişiklikler vardır her CVS ile senkronize

tutulması, bir cvs update. "Readonly" hg deposuna, bu değiştirilmiş dosyalar olarak görünecektir. Mercurial senkronize etmek için, ben sadece bunu bir

hg ci -m "Updated from CVS." 

(Yani, benim hg günlüklerinde çok sayıda ileti görürsünüz). Bu noktada "readonly" depomuz CVS ile senkronize edildi. Şimdi, kopyaladığım herhangi bir depoya gidebilir ve bunları eşitlemek için hg pull ve daha sonra hg update yayınlayabilirim.

Ben CVS taahhüt istediğiniz zaman hg zaten benim değişiklikleri taahhüt ettik nerede benim çalışma havuzlarından birine gidersiniz, diğer yöne gidiyor geri CVS

için hg gelen değişiklikleri işlemek . Sonra hg push "değişikliklerim" "readonly" e geri dönüyorum, "readonly" havuzuna atlayın, bir hg update yapın. CVS'nin bakış açısıyla, bu yeni değiştirilmiş olarak görünecektir. Sonra bir cvs commit CVS'ye geri döndüm. Burada günlük mesajımda hg depomda yaptığım işi tekrar etmem/özetlemem gerekecek.

Bu iş akışında pürüzlü noktalar var.CVS/SVN'de tek bir değişikliği toplayan hg'de birden çok değişiklik yapabilirdiniz, böylece geçmiş CVS/SVN'de tutulmayacak ve taahhüt mesajlarınızı özetlemeniz gerekecek. CVS'yi ve "readonly" deponuzu senkronize olarak el ile yönetmeniz gerekir. Bunun avantajı, herhangi bir ek uzantı yüklemeniz gerekmemesidir - sadece dosyaları her iki açıdan da ele alıyorsunuz. Olan her şey oldukça şeffaf ve kontrolünüz altında.

Hala hg üzerinde dişlerimi kesiyorum, ama şimdiye kadar bu iş akışı oldukça iyi çalışıyor.

Harvey

bu güzel diyagram sağlanan ve bu iş akışı başka VCS için geçerli olduğunu mükemmel bir noktaya değinmiş etti:

alt text http://sr105.com/other_vcs_to_hg_workflow.png

+1

“Ben CVS kullanan bir şirkette çalışıyorum” - yikes. –

+3

@bentsai: Bu, muhtemelen * herhangi bir diğer VCS ile mercurial kullanmanın en temel yolunun iyi bir açıklamasıdır. Danışmanlar için iyi. Bir şemaya ihtiyacı var. – Harvey

+2

Diyagramı cevabınıza koyabilirsiniz: http://sr105.com/other_vcs_to_hg_workflow.png – Harvey

İlgili konular