Svn kontrolünde bir klasörü yok sayabilir miyim? Derleme sunucumda ödeme sırasında DOC klasörünü yok saymam gerekiyor.
düzenleme: Hariciları yok saymak bir seçenek değildir. İhtiyacım olan bazı harici malzemelerim var.
Svn kontrolünde bir klasörü yok sayabilir miyim? Derleme sunucumda ödeme sırasında DOC klasörünü yok saymam gerekiyor.
düzenleme: Hariciları yok saymak bir seçenek değildir. İhtiyacım olan bazı harici malzemelerim var.
Yanıtlar:
Bir ödünç verme işleminde klasörleri doğrudan göz ardı edemezsiniz, ancak svn 1.5'te seyrek teslim almayı kullanabilirsiniz. Örneğin:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
Bu, proje gövdenizden 'my_checkout' içine dosya ve dizinleri kontrol edecek, ancak bu dizinlerde tekrarlanmayacaktır. Örneğin:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
Ardından 'bar'ın içeriğini aşağı indirmek için:
$ cd bar && svn update --set-depth infinity
svn: Shallowing of working copy depths is not yet supported
Evet, SVN 1.6'yı kullanabilirsiniz. Önce bir ödeme yapmanız, ardından dışlama için klasörü işaretlemeniz ve ardından istenmeyen klasörü silmeniz gerekecektir.
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs
Şu andan itibaren, çalışan kopyada yapılacak herhangi bir güncelleme, dokümanlar klasörünü yeniden doldurmayacaktır.
Http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ ve http://subversion.apache.org/docs/release-notes/1.6.html#sparse- sayfalarına bakın daha fazla ayrıntı için dizin dışlama .
Tom
1.5'ten önceki sürümlerde, yalnızca en üstteki klasörü teslim alır ve ardından seçici olarak güncellerseniz, o andan itibaren güncellemelerin yalnızca teslim aldığınız şeyi etkilediğini gördüm. Yani.
svn co -N foo
cd foo
svn up -N bar
svn up
-N bayrağı işlemi yinelemesiz hale getirir. Yukarıdakiler, örneğin foo düzeyinde başka hiçbir şeyi kontrol etmeyecektir. bir klasör olduğunu söyleyin lala
, son svn bu klasörü kontrol etmeyecek, ancak güncellenecektir bar
.
Ancak daha sonra yapabilir svn up lala
ve böylece kasaya ekleyebilirsiniz.
Muhtemelen bu da 1.5 ile çalışır.
Dokümanlar klasörünü harici bir depoya koyabilir ve ardından kullanabilirsiniz svn checkout --ignore-externals
.
external repository
geldiğini anlamıyorum . Bunu açıklayabilir misin?
Evet, Subversion 1.5 , tam olarak bu tür şeyleri yapabilen Seyrek teslim alma adı verilen bir özelliğe sahiptir .
Bu soruyu, regresyon testlerini hariç tutarken WebKit kaynaklarını kontrol etmenin bir yolunu ararken buldum. Aşağıdakilerle sonuçlandım:
svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \
--depth immediates
cd WebKit
find . \
-maxdepth 1 -type d \
-not -name '.*' \
-not -name '*Tests' \
-not -name 'Examples' \
-not -name 'Websites' \
| (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)
İstisnaları uygun gördüğünüz şekilde değiştirebileceğinizi unutmayın, ancak. * Çalışma dizinini (zaten güncel olan) ve .svn dizinlerinin tümünü atlamanız önerilir.
Yakın zamanda aynı görevi çözdüm. Buradaki fikir, depo altındaki klasör / dosyaların listesini hemen almak, ihtiyacınız olan girişleri hariç tutmak, ardından kalan klasörleri kontrol etmek ve varsa hemen dosyaları güncellemektir. İşte çözüm:
# Path to the svn repository to be checked out
rpath=https://svn-repo.company.com/sw/trunk/ && \
# This files are to be excluded (folders are ending with '/')
# this is a regex pattern with OR ('|') between enties to be excluded
excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \
# Get list of the files/folders right under the repository path
filtered=`svn ls $rpath | egrep -v $excludep` && \
# Get list of files out of filtered - they need to be 'uped'
files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]$'` && \
# Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]$'` && \
# Initial nonrecursive checkout of repository - just empty
# to the current (./) working directory
svn co $rpath ./ --depth empty && \
# Update the files
svn up $files &&\
# Check out the all other folders finally.
svn co `echo $folders | sed "s|\<|$rpath|g"`
Kaynak çalışma dizinine geçin. Komutları kopyalayın. Yapıştırmak. Uygun URL'yi değiştirin ve kalıbı hariç tutun. Komutu çalıştırın.
Teşekkürler,
Hayır, yok saymak yalnızca dosya eklemek içindir.
Seyrek kontrolleri kullanabilirsiniz (svn 1.5 kullanıyorsanız)
Diğer birkaç kişinin de bahsettiği gibi, sadece svn: externals özelliklerini ve ardından ödeme yaparken --ignore-externals seçeneğini kullanabilirsiniz. Nota bir şey, ancak, o svn geçerli: externals yok değil mutlaka başka depo başvurmak gerekir. Aynı depodaki başka bir klasöre referans olabilir.