Bisakah saya mengabaikan folder di svn checkout? Saya perlu mengabaikan folder DOC saat checkout di server build saya.
edit: Abaikan eksternal bukanlah pilihan. Saya memiliki beberapa hal eksternal yang saya butuhkan.
Bisakah saya mengabaikan folder di svn checkout? Saya perlu mengabaikan folder DOC saat checkout di server build saya.
edit: Abaikan eksternal bukanlah pilihan. Saya memiliki beberapa hal eksternal yang saya butuhkan.
Jawaban:
Anda tidak bisa mengabaikan folder secara langsung saat checkout, tetapi Anda bisa menggunakan checkout jarang di svn 1.5. Sebagai contoh:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
Ini akan memeriksa file dan direktori dari trunk proyek Anda ke 'my_checkout', tetapi tidak masuk kembali ke direktori tersebut. Misalnya:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
Kemudian untuk menurunkan konten 'bar':
$ cd bar && svn update --set-depth infinity
svn: Shallowing of working copy depths is not yet supported
Ya, Anda dapat menggunakan SVN 1.6. Anda harus melakukan pembayaran terlebih dahulu, lalu tandai folder untuk pengecualian, lalu hapus folder yang tidak diinginkan.
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs
Mulai sekarang, pembaruan apa pun pada copy pekerjaan tidak akan mengisi kembali folder dokumen.
Lihat http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/ dan http://subversion.apache.org/docs/release-notes/1.6.html#sparse- direktori-pengecualian untuk lebih jelasnya.
Tom
Dengan versi sebelum 1.5 saya telah menemukan bahwa jika Anda hanya checkout folder paling atas dan kemudian secara selektif memperbarui, sejak saat itu pembaruan hanya mempengaruhi apa yang telah Anda periksa. Yaitu.
svn co -N foo
cd foo
svn up -N bar
svn up
Bendera -N membuat operasi menjadi non-rekursif. Di atas tidak akan memeriksa apa pun di tingkat foo, mis. mengatakan ada folder lala
, svn terakhir tidak akan memeriksa folder itu, tetapi akan diperbarui bar
.
Tapi di lain waktu Anda bisa svn up lala
dan dengan demikian, menambahkannya ke kasir.
Agaknya ini juga bekerja dengan 1.5.
Anda dapat meletakkan folder dokumen di repositori eksternal dan kemudian menggunakan svn checkout --ignore-externals
.
external repository
artinya. Bisakah Anda menjelaskannya?
Ya, Subversion 1.5 memiliki fitur yang disebut pemeriksaan Sparse yang dapat melakukan hal semacam ini.
Saya menemukan pertanyaan ini mencari cara untuk memeriksa sumber WebKit sambil mengecualikan tes regresi. Saya berakhir dengan yang berikut:
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)
Perhatikan bahwa Anda dapat mengubah pengecualian sesuai keinginan Anda, tetapi. * Disarankan untuk melewati direktori kerja (yang sudah diperbarui) dan semua direktori .svn.
Saya baru saja menyelesaikan tugas yang sama. Idenya adalah untuk mendapatkan daftar folder / file langsung di bawah repositori mengecualikan entri yang Anda butuhkan, kemudian periksa folder yang tersisa dan perbarui file langsung jika ada. Inilah solusinya:
# 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"`
Ubah ke direktori kerja sumber. Salin perintahnya. Tempel. Ubah URL yang sesuai dan kecualikan pola. Jalankan perintahnya.
Terima kasih,
Tidak, abaikan hanya untuk menambahkan file.
Anda dapat menggunakan pembayaran jarang (jika Anda menggunakan svn 1.5)
Seperti yang telah disebutkan beberapa orang lain, Anda dapat menggunakan properti svn: externals dan kemudian opsi --ignore-externals saat Anda melakukan pembayaran. Satu hal yang perlu catatan, bagaimanapun, adalah svn bahwa: eksternal tidak tidak perlu harus merujuk ke repositori lain. Ini bisa menjadi referensi ke beberapa folder lain di repo yang sama.