ฉันสามารถละเว้นโฟลเดอร์ในการชำระเงิน svn ได้หรือไม่ ฉันต้องละเว้นโฟลเดอร์ DOCs ในขั้นตอนการชำระเงินที่บิลด์เซิร์ฟเวอร์ของฉัน
แก้ไข: การละเว้นภายนอกไม่ใช่ตัวเลือก ฉันมีสิ่งภายนอกที่ฉันต้องการ
ฉันสามารถละเว้นโฟลเดอร์ในการชำระเงิน svn ได้หรือไม่ ฉันต้องละเว้นโฟลเดอร์ DOCs ในขั้นตอนการชำระเงินที่บิลด์เซิร์ฟเวอร์ของฉัน
แก้ไข: การละเว้นภายนอกไม่ใช่ตัวเลือก ฉันมีสิ่งภายนอกที่ฉันต้องการ
คำตอบ:
คุณไม่สามารถเพิกเฉยต่อโฟลเดอร์ในการชำระเงินได้โดยตรง แต่คุณสามารถใช้การชำระเงินแบบกระจัดกระจายใน svn 1.5 ตัวอย่างเช่น:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
การดำเนินการนี้จะตรวจสอบไฟล์และไดเร็กทอรีจากคลังโปรเจ็กต์ของคุณใน "my_checkout" แต่จะไม่เรียกเก็บซ้ำในไดเร็กทอรีเหล่านั้น เช่น:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
จากนั้นเพื่อรับเนื้อหาของ 'bar' ลง:
$ cd bar && svn update --set-depth infinity
svn: Shallowing of working copy depths is not yet supported
ใช่คุณสามารถใช้ SVN 1.6 คุณจะต้องทำการชำระเงินก่อนจากนั้นทำเครื่องหมายที่โฟลเดอร์สำหรับการยกเว้นจากนั้นลบโฟลเดอร์ที่ไม่ต้องการ
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs
จากนี้ไปการอัปเดตสำเนาที่ใช้งานได้จะไม่สร้างโฟลเดอร์เอกสารซ้ำ
ดูhttp://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/และhttp://subversion.apache.org/docs/release-notes/1.6.html#sparse- การยกเว้นไดเรกทอรีสำหรับรายละเอียดเพิ่มเติม
ทอม
ด้วยเวอร์ชันก่อนหน้า 1.5 ฉันพบว่าหากคุณชำระเงินเฉพาะโฟลเดอร์ที่อยู่บนสุดจากนั้นเลือกอัปเดตจากนั้นการอัปเดตจะมีผลเฉพาะสิ่งที่คุณชำระเงินเท่านั้น ได้แก่ .
svn co -N foo
cd foo
svn up -N bar
svn up
แฟล็ก -N ทำให้การดำเนินการไม่เกิดซ้ำ ข้างต้นจะไม่ตรวจสอบสิ่งอื่นใดในระดับ foo เช่น บอกว่ามีโฟลเดอร์lala
ที่ SVN สุดท้ายขึ้นจะไม่ตรวจสอบโฟลเดอร์นั้น bar
แต่มันก็จะมีการปรับปรุง
แต่ในภายหลังคุณสามารถsvn up lala
เพิ่มลงในการชำระเงินได้
สันนิษฐานว่าสิ่งนี้ใช้ได้กับ 1.5
สิ่งนี้อยู่ในไคลเอนต์ TortoiseSVN 1.7.1 (อาจมีให้ในเวอร์ชันเก่าบางรุ่นด้วย):
SVN checkout -> เลือก URL ของที่เก็บ
คลิกที่ "Checkout Items" (ภายใต้ Checkout Depth) และเลือกเฉพาะโฟลเดอร์ที่ต้องการ!
svn checkout --ignore-externals
คุณสามารถใส่เอกสารโฟลเดอร์ในพื้นที่เก็บข้อมูลภายนอกและการใช้งานแล้ว
external repository
หมาย คุณสามารถอธิบายได้หรือไม่?
ใช่Subversion 1.5มีคุณลักษณะที่เรียกว่าSparse checkoutsซึ่งสามารถทำสิ่งนี้ได้
ฉันพบคำถามนี้กำลังมองหาวิธีตรวจสอบแหล่งที่มาของ WebKit ในขณะที่ไม่รวมการทดสอบการถดถอย ฉันลงเอยด้วยสิ่งต่อไปนี้:
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)
โปรดทราบว่าคุณสามารถเปลี่ยนการยกเว้นได้ตามที่เห็นสมควร แต่. * ขอแนะนำให้ข้ามไดเร็กทอรีการทำงาน (ซึ่งเป็นข้อมูลล่าสุดแล้ว) และไดเร็กทอรี. svn ทั้งหมด
ฉันเพิ่งแก้ไขงานเดียวกัน แนวคิดคือการรับรายการโฟลเดอร์ / ไฟล์ทันทีภายใต้ที่เก็บไม่รวมรายการที่คุณต้องการจากนั้นตรวจสอบโฟลเดอร์ที่เหลือและอัปเดตไฟล์ทันทีหากมี นี่คือวิธีแก้ปัญหา:
# 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"`
เปลี่ยนเป็นไดเร็กทอรีการทำงานต้นทาง คัดลอกคำสั่ง วาง เปลี่ยน URL ที่เหมาะสมและไม่รวมรูปแบบ รันคำสั่ง
ขอบคุณ
ไม่ละเว้นมีไว้สำหรับการเพิ่มไฟล์เท่านั้น
คุณสามารถใช้การชำระเงินแบบกระจัดกระจาย (ถ้าคุณใช้ svn 1.5)
ดังที่คนอื่นกล่าวถึงคุณสามารถใช้คุณสมบัติ svn: externals จากนั้นเลือก --ignore-externals เมื่อคุณชำระเงิน อย่างไรก็ตามสิ่งหนึ่งที่ควรทราบก็คือ svn: externals ไม่จำเป็นต้องอ้างถึงที่เก็บอื่น สามารถอ้างอิงไปยังโฟลเดอร์อื่น ๆ ใน repo เดียวกันได้