svn มีคำสั่ง "ย้อนกลับ - ทั้งหมด" หรือไม่?


159

หากฉันต้องการทิ้งการเปลี่ยนแปลงทั้งหมดของฉันและกลับไปที่รหัสที่อยู่ในที่เก็บฉันจะทำสิ่งต่อไปนี้:

$ rm -fr *
$ svn up

นี้ง่ายพอ แต่ฉันสงสัยว่าถ้ามีคำสั่งเดียวที่จะทำให้สำเร็จสิ่งที่ต้องการ:

$ svn revert-all

ใครใช้ -fr แทน -rf มีเหตุผลว่าทำไมถึงเรียกว่า rimraf ไม่ใช่ rimfer
Jimmy Hoffa

@JimmyHoffa สาเหตุคืออะไร?
Eric Wilson

3
การประชุมของวิลสัน! อนุสัญญาครับ! หากปราศจากวินัยและขนบธรรมเนียมทางวัฒนธรรมของเราเราเป็นเพียงคนป่าเถื่อน! ฉันบอกว่าวันดีนะ!
Jimmy Hoffa

คำตอบ:


306

คุณสามารถทำได้:

svn revert -R .

นี่จะไม่ลบไฟล์ใหม่ใด ๆ ที่ไม่ได้อยู่ภายใต้การควบคุมเวอร์ชัน แต่คุณสามารถเขียนเชลล์สคริปต์เพื่อทำสิ่งนั้นเช่น:

for file in `svn status|grep "^ *?"|sed -e 's/^ *? *//'`; do rm $file ; done

2
ยินดีต้อนรับสู่ SO และขอบคุณสำหรับคำตอบอย่างละเอียดเนื่องจากsvn revert -Rไม่เท่ากับคำสั่งสองคำที่ฉันให้
Eric Wilson

1
สำหรับการลบไฟล์ทั้งหมดที่ไม่อยู่ภายใต้การควบคุมเวอร์ชันในบรรทัดคำสั่งของ Windows คำตอบอยู่ที่นี่: stackoverflow.com/a/1502365/1385429
Christiaan Westerbeek

ผู้ใช้mashzoชี้ให้เห็น (ในคำตอบที่ถูกลบตอนนี้) ว่า-Rธงอาจมีความจำเป็นเพื่อให้แน่ใจว่าไดเรกทอรีที่ไม่ได้ถูกลบจะถูกลบเช่นกันเนื่องจากเป็นส่วนหนึ่งของการเปลี่ยนแปลงทั้งหมด พิจารณาการรวมสิ่งนี้เข้ากับคำตอบของคุณหากมันเหมาะสมกับคุณ
Jeremy Banks

27

มีคำสั่ง

svn revert -R .

หรือ
คุณสามารถใช้ --depth = infinity ซึ่งจริง ๆ แล้วเหมือนกับข้างบน:

svn revert --depth=infinity 

svn revertเป็นอันตรายโดยเนื้อแท้เนื่องจากจุดประสงค์ทั้งหมดของมันคือการทิ้งข้อมูลนั่นคือการเปลี่ยนแปลงที่คุณไม่คาดคิด เมื่อคุณย้อนกลับการโค่นล้มไม่สามารถคืนการเปลี่ยนแปลงที่ปราศจากข้อผูกมัดได้


7
-Rเทียบเท่ากับ--depth=infinity
Michael Burr

4
cmd "svn revert -R" ของคุณไม่มีไดเรกทอรีปัจจุบันในไวยากรณ์ .. มันควรจะเป็น "svn revert -R"
boddhisattva

ขณะนี้โพสต์ดูเหมือน-Rจะไม่เกิดขึ้นพร้อมกัน--depth-infinityเมื่อไม่ได้เป็น
ahnbizcad

@ahnbizcad นั่นไม่ใช่คำพ้องความหมายสองคำที่ถูกต้องใช่ไหม
Nyerguds

นั่นคือจุดของฉัน คำตอบนี้ทำให้เสียงทั้งสองแตกต่างกันเมื่อไม่มี "พิเศษร่วมกัน" = ตรงข้ามกับคำพ้อง
ahnbizcad


0

ในการย้อนกลับไฟล์ที่แก้ไข:

sudo svn revert
svn status|grep "^ *M" | sed -e 's/^ *M *//'

ฉันคิดว่าการเปลี่ยนแปลงการจัดรูปแบบของฉันหมายถึงสิ่งที่คุณต้องการ ย้อนกลับถ้าคุณไม่ชอบมัน และขอขอบคุณที่มันเป็นเรื่องดีที่จำวันเก่าที่ไม่ดีของ SVN ... :)
เอริควิลสัน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.