SVN - แก้ไขความขัดแย้ง
ทอมตัดสินใจเพิ่มไฟล์ README สำหรับโครงการของพวกเขา ดังนั้นเขาจึงสร้างไฟล์ READMEและเพิ่มรายการสิ่งที่ต้องทำลงไป หลังจากเพิ่มสิ่งนี้ที่เก็บไฟล์จะอยู่ที่การแก้ไข 6
[tom@CentOS trunk]$ cat README
/* TODO: Add contents in README file */
[tom@CentOS trunk]$ svn status
? README
[tom@CentOS trunk]$ svn add README
A README
[tom@CentOS trunk]$ svn commit -m "Added README file. Will update it's content in future."
Adding trunk/README
Transmitting file data .
Committed revision 6.
เจอร์รี่ตรวจสอบรหัสล่าสุดซึ่งอยู่ในการแก้ไข 6 และทันทีที่เขาเริ่มทำงาน หลังจากนั้นไม่กี่ชั่วโมงTom ก็อัปเดตไฟล์ README และยอมรับการเปลี่ยนแปลงของเขา README ที่แก้ไขจะมีลักษณะดังนี้
[tom@CentOS trunk]$ cat README
* Supported operations:
1) Accept input
2) Display array elements
[tom@CentOS trunk]$ svn status
M README
[tom@CentOS trunk]$ svn commit -m "Added supported operation in README"
Sending trunk/README
Transmitting file data .
Committed revision 7.
ตอนนี้ที่เก็บอยู่ที่การแก้ไข 7 และสำเนาการทำงานของ Jerryล้าสมัย เจอร์รี่ยังอัปเดตไฟล์ README และพยายามยืนยันการเปลี่ยนแปลงของเขา
ไฟล์ README ของ Jerryมีลักษณะดังนี้
[jerry@CentOS trunk]$ cat README
* File list
1) array.c Implementation of array operation.
2) README Instructions for user.
[jerry@CentOS trunk]$ svn status
M README
[jerry@CentOS trunk]$ svn commit -m "Updated README"
Sending trunk/README
svn: Commit failed (details follow):
svn: File or directory 'README' is out of date; try updating
svn: resource out of date; try updating
ขั้นตอนที่ 1: ดูความขัดแย้ง
การโค่นล้มตรวจพบว่าไฟล์ README มีการเปลี่ยนแปลงตั้งแต่อัปเดตครั้งล่าสุด ดังนั้นJerryมีการอัปเดตสำเนาการทำงานของเขา
[jerry@CentOS trunk]$ svn up
Conflict discovered in 'README'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
การโค่นล้มบ่นว่ามีความขัดแย้งกับไฟล์ README และการโค่นล้มไม่ทราบวิธีแก้ปัญหานี้ ดังนั้นเจอร์รี่จึงเลือกตัวเลือกdfเพื่อตรวจสอบความขัดแย้ง
[jerry@CentOS trunk]$ svn up
Conflict discovered in 'README'.
Select: (p) postpone, (df) diff-full, (e) edit,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options: df
--- .svn/text-base/README.svn-base Sat Aug 24 18:07:13 2013
+++ .svn/tmp/README.tmp Sat Aug 24 18:13:03 2013
@@ -1 +1,11 @@
-/* TODO: Add contents in README file */
+<<<<<<< .mine
+* File list
+
+1) array.c Implementation of array operation.
+2) README Instructions for user.
+=======
+* Supported operations:
+
+1) Accept input
+2) Display array elements
+>>>>>>> .r7
Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options:
ขั้นตอนที่ 2: เลื่อนความขัดแย้ง
Next Jerryเลือกตัวเลือกการเลื่อน (p)เพื่อให้เขาสามารถแก้ไขความขัดแย้งได้
Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved,
(mc) mine-conflict, (tc) theirs-conflict,
(s) show all options: p
C README
Updated to revision 7.
Summary of conflicts:
Text conflicts: 1
หลังจากเปิด README ในโปรแกรมแก้ไขข้อความเขาตระหนักว่าการโค่นล้มได้รวมทั้งรหัสของทอมและรหัสของเขาด้วยเครื่องหมายความขัดแย้ง
[jerry@CentOS trunk]$ cat README
<<<<<<< .min
* File list
1) array.c Implementation of array operation.
2) README Instructions for user.
=======
* Supported operations:
1) Accept input
2) Display array elements
>>>>>>> .r7
เจอร์รี่ต้องการการเปลี่ยนแปลงของทอมเช่นเดียวกับเขาดังนั้นเขาจึงลบบรรทัดที่มีเครื่องหมายความขัดแย้งออก
ดังนั้น README ที่แก้ไขจะมีลักษณะเช่นนี้
[jerry@CentOS trunk]$ cat README
* File list
1) array.c Implementation of array operation.
2) README Instructions for user.
* Supported operations:
1) Accept input
2) Display array elements
เจอร์รี่แก้ไขความขัดแย้งและเขาก็พยายามทำอีกครั้ง
[jerry@CentOS trunk]$ svn commit -m "Updated README"
svn: Commit failed (details follow):
svn: Aborting commit: '/home/jerry/project_repo/trunk/README' remains in conflict
[jerry@CentOS trunk]$ svn status
? README.r6
? README.r7
? README.mine
C README
ขั้นตอนที่ 3: แก้ไขความขัดแย้ง
ในการกระทำข้างต้นจดหมาย Cบ่งชี้ว่ามีข้อขัดแย้งในไฟล์ README เจอร์รี่แก้ไขความขัดแย้ง แต่ไม่ได้บอก Subversion ว่าเขาได้แก้ไขความขัดแย้งแล้ว เขาใช้คำสั่งแก้ไขเพื่อแจ้งการโค่นล้มเกี่ยวกับการแก้ไขความขัดแย้ง
[jerry@CentOS trunk]$ svn resolve --accept=working README
Resolved conflicted state of 'README'
[jerry@CentOS trunk]$ svn status
M README
[jerry@CentOS trunk]$ svn commit -m "Updated README"
Sending trunk/README
Transmitting file data .
Committed revision 8.