2011-02-10 17 views
5

Bir süre önce Subversion'dan dönüştürülmüş bir Mercurial deponuz var ve bugün depoda no tarihine sahip olan bir dosya olduğunu fark ettik. Klonlamadan sonra depoda dosya yok, ancak tarih yok

> hg clone [repo] 
> hg st -c FileWithMissingHistory.cs 

C FileWithMissingHistory.cs 

> hg blame FileWithMissingHistory.cs 
FileWithMissingHistory.cs: no such file in rev [...] 
> hg log FileWithMissingHistory.cs 
> hg log FileWithMissingHistory.cs -f 
abort: cannot follow nonexistent file: "FileWithMissingHistory.cs" 

> hg log -v | grep FileWithMissingHistory.cs 

[gives output, there arechangesets mentioning the file] 

Açıkçası dosya adları örnekte değiştirildi: Bu davranışın sympomts ait

biri hg aynı dosya için raporlara göz hiçbir changesets log ederken hg durum, temiz bir dosya rapor olmasıdır. Hg doğrulama kullanarak denedim, ancak bu komut repo'nun iyi olduğunu bildiriyor. Bunu deneyimleyen var mı ve geçmişi "hayata döndürmek" için yapabileceğimiz bir şey var mı? Söz konusu dosyalara kukla tarihin yerleştirilmesi kabul edilebilir, ancak suboptimal olabilir.

DÜZENLEME: Biraz daha araştırma yaptıysanız ve ben hg -r238 güncelleyebilirim ve oturum hg "Eğer FileWithMissingHistory.cs" revizyon 238. yılında (+ delete hg kopyası) Başka bir dosya adı yeniden adlandırıldı olduğunu fark ettik dosya bu revizyonda hiçbir tarih almıyorum. Özgün dosyada oturum açma günlüğü, geçmişi beklendiği gibi bildirir, bu nedenle geçmişin kopya sırasında bir şekilde kaybolduğu görülür (dosya yeniden hg kopyası kullanılarak yeniden adlandırılır ve değişiklik kümesi dosyanın kopyalandığını açıkça belirtir).

+1

Aşağıdaki komutların çıkışı nedir? hg sürümü, hg kimlik, hg özeti ve hg doğrulaması? Ve bu dosyayı listeliyor mu? –

+0

hg sürüm = 1.7.3, hg, geçerli değişikliklerin kimliğini (başka hiçbir şey değil) yazdırır, hg özeti, w/mesajını ve üstteki iletiyi (yalnızca bir üst öğe) yazdırır. hg manifest söz konusu dosyayı listeler. – larsmoa

+0

"hg verification" konusunda ne var? –

cevap

1

Sonunda yukarıda bahsedilen etkilerin nedenini izledim ve bunun karışık kasa sorunları nedeniyle olduğu anlaşılıyor. Bazı dosyalar küçük harfli dizinlerde bulunur, diğerleri ise eşit isimlerle dizinlere yerleştirilir, sadece durum karma (ör. "Dizin/FileWithHistory.cs" ve "DiReCtOrY/FileWithMissingHistory.cs"). Windows'ta, her iki dosya da sorunlara neden olan aynı dizinde bulunur.

+0

.hgignore dosyamda, içinde "ayarları" kelimesine sahip olan proje dosyalarından birkaçını yoksaymasına neden olan bir şablonun bulunduğu bir benzer sorun yaşadım. – JulianDavid

2

Kulağa garip geliyor, aslında imkansız. Bu sorunun hatalarını ayıklamaya çalışacağım, farklı düzeltmeleri güncellemek ve dosyanın çalışma kopyasında ilk defa hangi revizyonda görüneceğini kontrol etmektir. Bunu ikili arama modunda yaparsanız (bisect extension'un nasıl çalıştığına benzer), birkaç güncelleştirmeden sonra dosyayı tanıtan bir düzeltme bulunmalıdır.

Bu, sorunu çözmez, ancak kaynağını izlemede yardımcı olabilir.

İlgili konular