2008-12-03 12 views
38

Birçok projeyle SVN deposuyla çalışıyorum. Bu depodan birkaç projeyi, her bir proje için birer birer depoya, geçmişi koruyabilmem gerekiyor.Birden fazla proje içeren bir SVN deposundan bir projeyi nasıl dökerim?

başka depoya tüm depoyu ve svnadmin load o dökümü svnadmin dump kullanabilmek için oldum ama ben bu yüzden yeni birine yükleyebilirsiniz orijinal deposundan tek proje damping bir yol bulamıyorum . Mümkün mü? Öyleyse nasıl?

+1

Çalıştığım bir tuzağı paylaşmak istiyorum: bir alt klasör için filtreleme, ayrıca ana klasörün oluşturulmasını filtreler. Dolayısıyla, hedef depoda üst klasörün el ile oluşturulması gerekir. –

cevap

58

Bunu yapmak için svndumpfilter yardımcı programını kullanabilirsiniz. SVN kitabında bunun nasıl yapılacağı hakkında bir good explanation vardır.

Örneğin, tek yönlü olacaktır:


$ svnadmin dump /path/to/repo 
    | svndumpfilter include /proj > dump-file 
$ svnadmin create /new/proj/repo 
$ svnadmin load --ignore-uuid /new/proj/repo < dump-file 
$ svn rm file:///path/to/repo/proj 
+0

Teşekkürler Avi, sadece dokümanları okudum ve ihtiyacım olan şey buydu. –

+1

dumpfile svnadmin load komutunu girmeyi unutmuşsunuzdur. – wimh

+0

Teşekkürler, Wimmel. Aslında unutmadım; İşaretten daha az kaçmayı unuttum. Şimdi sabit. – Avi

0

Sadece bir küçük ekleme cevap ve @Kit yorumunu @Avi için.

svndumpfilter kullanırsanız, depoyu yüklemek için gereken bir işlemi kaybedebilirsiniz (source). Benim durumumda

:

cat dump | svndumpfilter --drop-empty-revs --renumber-revs include trunk/project > project.dump 
svnadmin load --ignore-uuid /opt/svn/newlocation < project.dump 
<<< Started new transaction, based on original revision 1 
svnadmin: File not found: transaction '0-0', path 'trunk/project' 

çözüm ilk bir üst dizin trunk işlemeye oldu.

+1

Bu çözüm, düzeltmeleri yeniden adlandırır. Düzeltmeleri yeniden numaralandırmak istemediğinizde, sadece -dev-boş-devir ve -renren-devirleri kullanmayın. – Prikkeldraad

İlgili konular