2010-10-16 17 views
11

Mercurial'da bir grup işverenle bir projem var. Ne yazık ki, bazı taraftarlar birkaç kez isimleri değiştirmişlerdir, örn. önce "takma ad" idi ve sonra "Ad Soyad" oldu ve sonra başka bir şey oldu.Mürit isim değişikliği ile nasıl başa çıkılır Mercurial

Depo analiz araçlarının çoğu, projenin seyri boyunca aynı adı taşıyan bir komisyoncu olmasını bekler. Bu nedenle, ideal olarak, ana depomuzdaki önceki revizyonların yapıcılarını yeniden adlandırmak ve herkesin yeni bir klon yapmasını istiyorum. Mümkün mü?

Bu sorunla uğraşmanın başka yolları var mı?

+5

Çoğu repo analiz aracının gerçekte, isminin isimleri için bir eşleme/takma dosyaya izin vermesini beklerdim, sorun hg'ye özgü değil ve çok yaygın. – tonfa

+0

Evet, ikinci tonfa'ya, özellikle hangi veri analiz araçlarına bakıyorsunuz? Gördüğüm tüm bunlar (cüruf, aktivite ve mercurial wiki'den gelen grafik) hepsi analiz zamanında kolay haritalama sağlar. Kullanıcı @ ana bilgisayar favori kullanıcı adı değeri olduğundan farklı iletişim adları çok yaygındır. Repo'nuz daha muntazam olmaktan ziyade analizinizi daha akıllı hale getirmekten daha iyidir, çünkü repo tekrar isim değiştirmeye başlayacaktır. –

+1

Mercurial geliştiricilerin Git gibi tüm geçmiş tarama komutları için '.mailmap' özelliği sağlamasını isteyin (bkz. [Git-shortlog] (http://www.kernel.org/pub/software/scm/git/docs/git- shortlog.html) manpage); --P –

cevap

19

Evet, mümkün. Convert extension ve daha sonra hg convert adresinden depodaki adlardan yeni adlarla yeni adlara ve bir authormap kullanın. Dönüştürme uzantısını kullanarak ve Mercurial'dan başka Mercurial repo'ya dönüştürerek yapabileceğiniz birçok şey var. Sonra

Eric Hopper <[email protected]>=Eric Hopper <[email protected]> 
Eric M. Hopper <[email protected]>=Eric Hopper <[email protected]> 
Eric Hopper <[email protected]>=Eric Hopper <[email protected]> 

:

hg convert -s hg -d hg --authormap authormap badnamesrepo goodnamesrepo 

Not: dair bir hg deposuna bir hg dönüştürme hep oluşturmaz iken

Authormap dosyası, Eric Hopper <[email protected]> supposing yazar için kurallı adıdır Çok sayıda yeni değişiklik listesi, bu durumda olacaktır ve orijinal depodaki (ancak farklı) değişikliklere eşdeğer olacaktır. Bu, bu havuzun kullanıldığı herkesin'un sahip oldukları herhangi bir klonu silmek ve yenilerini almak zorunda kalacağı anlamına gelir. Genel durumda, bir hg deposunu bir hg deposuna dönüştürmenin en az birkaç yeni değişiklik oluşturması muhtemeldir ya da bunu yapmak için bir neden olmazdı. Ve bu neredeyse herkesin tüm klonlarını yok etmesi ve yeniden klonlanmasını gerektirecektir.

Analiz aracınız yazar adlarını yeniden yazabilirse, muhtemelen daha iyi bir yoldur. Ama istediğin bu değildi, o yüzden sana istediğin cevabı verdim. :-)

+8

Bir ** çok önemli uyarı: hg convert * break * karmaşıklar değişeceğinden beri orada bulunan tüm klonlar, itme/çekme artık herkesin klonu arasında çalışmaz reclones. – tonfa

+1

tonfa: Soru, bu sebepten dolayı herkesin taze bir klon yapmasını içermiştir. –

+0

@tonfa - Evet, bunu düşündüm, fakat OP, herkesin taze bir klon alması gerektiğini söyledi, bu yüzden farkında olduğunu fark ettim. Gelecekte bu kadar istemsiz ve dikkatsiz okuyucular beklenmedik sonuçlar elde etmese de cevaba katmalıyım. – Omnifarious

İlgili konular