2011-06-03 9 views
5

Varolan bir SCCS deposunu SVN biçimine dönüştürmeye çalışıyorum ve önerilen sccs2svn python komut dosyasını kullanıyorum. Ancak, aşağıdaki gibi revizyon bilgileri "karıştırma" gibi görünen:Sccs2svn dönüştürmesinden sonra düzeltme bilgileri uyuşmuyor

SCCS prt verir:

 
revision 5, date 5, author 5, comment 5 
revision 4, date 4, author 4, comment 4 
revision 3, date 3, author 3, comment 3 
revision 2, date 2, author 2, comment 2 
revision 1, date 1, author 1, comment 1 

SVN log verir:

 
revision 8, today's date, today's author, comment = 'Automated keyword replacement' 
revision 7, date 5, today's author, comment = 'Automated property set' 
revision 6, today's date, author 5, comment 5 
revision 5, date 5, author 4, comment 4 
revision 4, date 4, author 3, comment 3 
revision 3, date 3, author 2, comment 2 
revision 2, date 2, author 1, comment 1 
revision 1, date 1, author 1, comment 1 

Bazı detaylı sccs2svn içine araştırmaya başlamadan önce. py, daha önce bu problemi gören var mı? run() bir kapalı-birer hata var

:

+1

: yukarı işlevinin sırası her şeyi aşağıdaki gibi şimdi çağırır maçları ters eğer Subversion Yani 1'den sayarken Maalesef sccs2svn, sıfırdan kendi revizyon numaralarını sayar yazar alanları. Yazar 2 ve/veya yorum 2 ile ilgili olarak, kullanılmalarını engelleyen özel bir şey var mı? – Pete

cevap

1

SonyaH burada bir temizlemiş cevap olarak ise, söz konusu bu yayınlanmıştır. Bu kod:

mergedVersions = [[versions[0]]] 
i = 0 
while i < len(versions): 
    if versions[i].match(mergedVersions[-1][-1]): 
     mergedVersions[-1].append(versions[i]) 
    else: 
     mergedVersions.append([versions[i]]) 
    i += 1 
Ayrıca

mergedVersions = [[versions[0]]] 
for v in versions([1:]): 
    if v.match(mergedVersions[-1][-1]): 
     mergedVersions[-1].append(v) 
    else: 
     mergedVersions.append([v]) 

ile ikame eğer iyi çalışır

, SVNInterface sınıfında _commit yöntem bir sorunu vardı. En son revizyon numarasındaki tarihi değiştirir (sccs2svn tarafından bilinir) ve sonra bu revizyonu yapar. Bu açıklamada bir ve tarafından bir kapalı gibi görünüyor

def _commit(self, rev, date, txn, subpool): 
    svn_rev = repos.svn_repos_fs_commit_txn(self.repos_ptr, txn, subpool) 
    fs.change_rev_prop(self.fsob, svn_rev, core.SVN_PROP_REVISION_DATE, 
         date, subpool) 
    return svn_rev