การโค่นล้มไม่มีคุณสมบัติ "ไม่ยอมรับ" / "ไม่ยอมรับการกระทำ" ในตัวตั้งแต่เดือนกุมภาพันธ์ 2559 / เวอร์ชั่น 1.9 คำตอบนี้เป็นวิธีแก้ปัญหาบรรทัดคำสั่งที่ไม่เหมาะ
ในฐานะที่เป็นรัฐโอเพ่นซอร์ส TortoiseSVN มีตัวสร้างรายการการเปลี่ยนแปลง "การเพิกเฉยต่อการกระทำ" ซึ่งถูกแยกออกจากการคอมมิทโดยอัตโนมัติ ไคลเอ็นต์บรรทัดคำสั่งไม่มีสิ่งนี้ดังนั้นคุณต้องใช้รายการการเปลี่ยนแปลงหลายรายการเพื่อให้สามารถทำงานลักษณะเดียวกันนี้ได้ (ด้วยคำเตือน) :
- หนึ่งสำหรับงานที่คุณต้องการมอบหมาย [งาน]
- หนึ่งสิ่งที่คุณต้องการเพิกเฉย [ไม่สนใจ]
เนื่องจากมีแบบอย่างของ TortoiseSVN ฉันจึงใช้ "ign-on-commit" ในตัวอย่างของฉันสำหรับไฟล์ที่ฉันไม่ต้องการคอมมิท ฉันจะใช้ "งาน" สำหรับไฟล์ที่ฉันทำ แต่คุณสามารถเลือกชื่อที่คุณต้องการ
ก่อนอื่นให้เพิ่มไฟล์ทั้งหมดลงในรายการเปลี่ยนชื่อ "งาน" สิ่งนี้จะต้องถูกเรียกใช้จากรูทของสำเนาการทำงานของคุณ:
svn cl work . -R
นี่จะเพิ่มไฟล์ทั้งหมดในสำเนาการทำงานซ้ำไปยังรายการเปลี่ยนชื่อ "งาน" ซ้ำ มีข้อเสียคือ - เมื่อมีการเพิ่มไฟล์ใหม่ลงในสำเนาที่ใช้งานได้คุณจะต้องเพิ่มไฟล์ใหม่โดยเฉพาะมิเช่นนั้นจะไม่ถูกรวม ประการที่สองหากคุณต้องเรียกใช้งานอีกครั้งคุณจะต้องเพิ่มไฟล์ "ไม่ใช้งาน" ทั้งหมดอีกครั้ง ไม่เหมาะ - คุณสามารถเริ่มรักษารายการ 'เพิกเฉย' ของคุณเองในไฟล์เมื่อคนอื่นทำ
จากนั้นสำหรับไฟล์ที่คุณต้องการยกเว้น:
svn cl ignore-on-commit path\to\file-to-ignore
เนื่องจากไฟล์สามารถอยู่ในรายการเปลี่ยนแปลงได้เพียงรายการเดียวการเรียกใช้การเพิ่มนี้หลังจากที่เพิ่ม "งาน" ก่อนหน้านี้ของคุณจะลบไฟล์ที่คุณต้องการละเว้นจากรายการเปลี่ยนแปลง "งาน" และวางลงในรายการเปลี่ยนแปลง
เมื่อคุณพร้อมที่จะส่งมอบไฟล์ที่ถูกดัดแปลงที่คุณต้องการจะคอมมิทคุณก็แค่เพิ่ม "--cl work" ในการคอมมิท:
svn commit --cl work -m "message"
นี่คือตัวอย่างง่ายๆที่ดูเหมือนกับเครื่องของฉัน:
D:\workspace\trunk>svn cl work . -R
Skipped '.'
Skipped 'src'
Skipped 'src\conf'
A [work] src\conf\db.properties
Skipped 'src\java'
Skipped 'src\java\com'
Skipped 'src\java\com\corp'
Skipped 'src\java\com\corp\sample'
A [work] src\java\com\corp\sample\Main.java
Skipped 'src\java\com\corp\sample\controller'
A [work] src\java\com\corp\sample\controller\Controller.java
Skipped 'src\java\com\corp\sample\model'
A [work] src\java\com\corp\sample\model\Model.java
Skipped 'src\java\com\corp\sample\view'
A [work] src\java\com\corp\sample\view\View.java
Skipped 'src\resource'
A [work] src\resource\icon.ico
Skipped 'src\test'
D:\workspace\trunk>svn cl ignore-on-commit src\conf\db.properties
D [work] src\conf\db.properties
A [ignore-on-commit] src\conf\db.properties
D:\workspace\trunk>svn status
--- Changelist 'work':
src\java\com\corp\sample\Main.java
src\java\com\corp\sample\controller\Controller.java
src\java\com\corp\sample\model\Model.java
M src\java\com\corp\sample\view\View.java
src\resource\icon.ico
--- Changelist 'ignore-on-commit':
M src\conf\db.properties
D:\workspace\trunk>svn commit --cl work -m "fixed refresh issue"
Sending src\java\com\corp\sample\view\View.java
Transmitting file data .done
Committing transaction...
Committed revision 9.
อีกทางเลือกหนึ่งคือเพิ่มไฟล์ทุกไฟล์ที่คุณต้องการคอมมิชชันลงในรายการ 'งาน' และไม่แม้แต่จะรักษารายการเพิกเฉย แต่ก็เป็นงานจำนวนมากเช่นกัน จริงๆทางออกเดียวที่เหมาะสมที่สุดคือถ้า / เมื่อสิ่งนี้ถูกนำไปใช้ใน SVN เอง มีปัญหาที่ยาวนานเกี่ยวกับเรื่องนี้ในตัวติดตามปัญหาการโค่นล้มSVN-2858ในกรณีที่การเปลี่ยนแปลงนี้เกิดขึ้นในอนาคต