SVN - Giải quyết xung đột
Tom quyết định thêm tệp README cho dự án của họ. Vì vậy, anh ấy tạo tệp README và thêm danh sách VIỆC LÀM vào đó. Sau khi thêm điều này, kho lưu trữ tệp ở phiên bản 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.
Jerry kiểm tra mã mới nhất ở phiên bản 6. Và ngay lập tức anh ấy bắt đầu làm việc. Sau một vài giờ, Tom cập nhật tệp README và cam kết các thay đổi của mình. README đã sửa đổi sẽ trông như thế này.
[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.
Bây giờ, kho lưu trữ đang ở bản sửa đổi 7 và bản sao làm việc của Jerry đã lỗi thời. Jerry cũng cập nhật tệp README và cố gắng thực hiện các thay đổi của mình.
Tệp README của Jerry trông như thế này.
[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
Bước 1: Xem xung đột
Subversion đã phát hiện ra rằng tệp README đã thay đổi kể từ lần cập nhật cuối cùng. Vì vậy, Jerry phải cập nhật bản sao làm việc của mình.
[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:
Subversion đang phàn nàn rằng có xung đột với tệp README và Subversion không biết cách giải quyết vấn đề này. Vì vậy, Jerry chọn tùy chọn df để xem xét xung đột.
[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:
Bước 2: Hoãn xung đột
Tiếp theo Jerry chọn các tùy chọn hoãn (p) để anh ta có thể giải quyết xung đột.
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
Sau khi mở README trong trình soạn thảo văn bản, anh ta nhận ra rằng Subversion đã bao gồm cả mã của Tom và mã của anh ta với các dấu xung đột.
[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
Jerry muốn những thay đổi của Tom cũng như của anh ấy, vì vậy anh ấy chỉ xóa các dòng chứa các dấu hiệu xung đột.
Vì vậy, README đã sửa đổi sẽ trông như thế này.
[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 giải quyết xung đột và anh ta thử lại cam kết.
[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
Bước 3: Giải quyết xung đột
Trong cam kết trên, thư Cchỉ ra rằng có xung đột trong tệp README. Jerry giải quyết xung đột nhưng không nói với Subversion rằng anh đã giải quyết xong xung đột. Anh ta sử dụng lệnh giải quyết để thông báo cho Subversion về giải pháp xung đột.
[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.