2010-08-27 18 views
8

r0'u nasıl değiştirebilirim? .hgignore kodumu oluşturduğumda veya geçerli bir r0 öncesi benim için bir ekleme eklediğimde nasıl görünüyor?Mercury revizyonunu nasıl ekleyebilirim veya değiştirebilirim

Sadece ccurvn ile hgsvn kullanarak büyük bir SVN repo dönüştürdüm. Birkaç saat sürdü ve her şeyi elde etmek için yaklaşık bir düzine daldan geçmek zorunda kaldı. Benim sorunum şimdi .hgignore taahhüt değil, bu yüzden hgimportsvn bir şube, .hgignore onunla gelmiyor gibi görünüyor. Bu dosyayı r0'un bir parçası olarak eklemek veya bunu daha önce eklemek istiyorum (ve her şeyi 1'e kaydır). Ayrıca, Mercurial trunk çıkışımın sonunda bunu yapmayı denedim, ancak hgimportsvn gibi her zaman klonlar (şubeler?) Aynı Mercurial revizyondan çıkarılmış benim SVN şubem .hgignore yeniden oluşturulmuştur.

+0

hg geçmişinin değişmez olması için tasarlanmıştır. Bununla birlikte, en iyi bahsiniz ya (1) her şeyi yeniden ifade etmektir, ancak dosyanızı içe aktarmadan önce ekleyebilir veya (2) bazı hg sıraları dans etmeyi tercih edebilirsiniz. –

cevap

5

Muhtemelen ConvertExtension gibi bir şeye ihtiyacınız vardır. --splicemap seçeneğini kontrol edin.

ilk revizyon olarak eklenen bir .hgignore dosyasıyla yeni tarih oluşturmak için:

  1. olan tek revizyon işlemek .hgignore olan yeni bir depo oluşturun.
  2. İki 40-char hashes içeren bir splicemap dosyası oluşturun: geçerli veritabanınızın rev 0'ı ve yeni veritabanınızın 0'ı.
  3. Bu yeni veritabanına geçerli veritabanında her revizyon ekleyen hg convert <current_db_dir> <new_db_dir> --splicemap splice_filename

çalıştırın. Splicemap, ebeveynlerin düzenlenmesini belirtir. Bu nedenle, güncel veritabanının revizyonu 0, üst öğesinin yeni veritabanının revizyon 0'ı olarak ayarlanmasını sağlar.

Aşağıda, 3 revizyonlu bir veritabanı ve bir .hgignore dosyası içeren 1 sürümlü bir veritabanı oluşturan bir Windows toplu iş dosyası vardır, bunları birleştirir. Sonuç, aradığınız şey olmalıdır. Büyük bir orijinal veritabanınız varsa, kaynak veritabanının tüm geçmişi hedef veritabanına yeniden yazıldığından, bir süre alabilir.

@echo off 

@REM Create a 3-revision database 
hg init current 
cd current 
echo >file1 
hg add 
hg ci -m file1 
echo >file2 
hg add 
hg ci -m file2 
echo >file3 
hg add 
hg ci -m file3 

@REM Add the first revision to the splice map 
hg log -r 0 --template "{node} " > ..\map 

@REM Display the result 
hg log 
cd .. 

@REM Create a 1-revision database 
hg init ignore 
cd ignore 
echo glob:*.txt>.hgignore 
hg add 
hg ci -m ignore 

@REM Specify this node as the parent of the other 
@REM database's first revision in the splice map 
hg log -r 0 --template "{node}\n" >> ..\map 
hg log 
cd .. 

@REM Here's the resulting splice map 
type map 

@REM Make a copy to store the result 
hg clone ignore result 

@REM Add revisions from "current" to "result" honoring 
@REM the splice map 
hg convert current result --splicemap map 

@REM Display the result 
cd result 
hg log 
+0

hgsvn kullanıyorum çünkü ConvertExtension'ı istediğimi yapamadım. Ekleme doğru çözüm olsa da, durumumu nasıl kullanacağımı anlamıyorum. –

+0

@Asa, “hg convert” kullanarak cevabımı bir örnekle güncelledim. Umarım bu yardımcı olur. –

+0

Brillant anwer, teşekkürler! – CharlesB

İlgili konular