2011-05-12 33 views
32

Eğer svn: gerçekten büyük bir klasörü yoksayarsam SVN güncellemeleri sırasında performansı artırır mı?SVN güncellemeleri sırasında bir klasörü yok sayma

Projemde gerçekten çok büyük (> 600MB) bir klasör var. Bu klasördeki dosyalar hiç değişmemelidir. Sorun, "svn update" dediğim her zaman sonsuza dek sürüyor. Güncelleme işlemi sırasında güncelleme işlemini hızlandırmak için bu klasörü göz ardı etmenin bir yolu var mı?

+0

Bu SO gönderisine benzer http://stackoverflow.com/questions/116074/how-to-ignore-a-directory-with-svn –

+3

svn: ignore yalnızca * * sürümlenmemiş * dosyaları yok saymak için kullanılabilir. Yine de svn: ignore ile eşleşen dosyaları ekleyebilir ve bunlar depodaki başka herhangi bir dosya gibi ele alınacaktır. –

+0

Bunu deneyebilir ve yardımcı olup olmadığını görebilirsiniz. – MichaelHouse

cevap

44

svn:ignore zaten olmayan dosyaların içindir: Eğer çalışma kopyada büyük klasörü istemiyorsanız size svn up --ignore-externals

yapabilirsiniz Bu şekilde, seyrek checkouts bir göz olabilir Subversion deposunda. Bu klasör zaten.

Sen çalışma dizinden Bu klasörü kaldırmak svn update --set-depth excludefolderName kullanabilirsiniz: Eğer bir güncelleme yapmak

$ svn update --set-depth exclude bigFolder #Removes "bigFolder" from workdir 
D bigFolder 

$ 

dahaki sefere bigFolder çalışma dizininde görünmez. Onu geri istiyorsanız, derinliği sıfırlamak gerekir:

$ svn update --set-depth infinity 
U bigFolder 
U bigFolder/File1 
U bigFolder/File2 
... 
+8

Klasörü silen şeyi sevmiyorum. Sadece mevcut olanı güncellemeyi istemiyorum. –

9

Bir svn güncellemesi yapabilir ve özellikle her dizini, örn. Ya da ne istemediğinizi grep -v olarak kaydedin.

svn update `ls | grep -v big_dir` 

Veya svn mv başka bir klasöre big_dir yukarı ve diğer dizinden içeriği almak için inşa sistemini değiştirecek.

+2

Sadece mevcut olan yeni klasörleri güncellemez. –

3

@Bill Brasky'nin söylediklerinden başka, bir öneri, büyük klasörü harici bir yere taşımaktır.

svn checkout repo . --depth empty 
svn up other dirs 
8

Hemen yapın: Yerel olarak mevcut dizinleri ve dosyaları, ancak yeni

svn up `svn ls | grep -v big_dir` 

"svn ls" Kullanma update olmakla kalmaz depodan dosyalar. Dolayısıyla, güncelleme yalnızca hariç tutmaktan daha eksiksizdir. Ve zaten var olan dosyaları silmek zorunda değilsiniz, "--set derinlik hariç" gibi görünüyor.

+0

Parsing 'ls' çıktı genellikle kötü bir fikirdir [http://mywiki.wooledge.org/ParsingLs](http://mywiki.wooledge.org/ParsingLs) – Doppelganger

+1

@Doppelganger Makalede' ls' hakkında. Cevap kodunda 'svn ls'. Biraz farklı. –

+2

Haklısınız. 'Ls 'çözümleme ile ortak tuzak, isimlerinde yeni satırlarla dosya isimlerini iyi işlememesidir. 'svn ls', svn, adlarında yeni satırlarla dosya eklemenize izin vermeyeceği için bu sorunu önler.svn 'a b' svn: E160005: '/ svn-test/a \ 012b'' yolunda geçersiz kontrol karakteri' 0x0a '' – Doppelganger

İlgili konular