SVN - Selesaikan Konflik

Tom memutuskan untuk menambahkan file README untuk proyek mereka. Jadi dia membuat file README dan menambahkan daftar TODO ke dalamnya. Setelah menambahkan ini, repositori file ada di revisi 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 memeriksa kode terbaru yang ada di revisi 6. Dan segera dia mulai bekerja. Setelah beberapa jam, Tom memperbarui file README dan melakukan perubahannya. README yang telah dimodifikasi akan terlihat seperti ini.

[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.

Sekarang, repositori ada di revisi 7 dan copy pekerjaan Jerry kedaluwarsa. Jerry juga memperbarui file README dan mencoba melakukan perubahannya.

File README Jerry terlihat seperti ini.

[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

Langkah 1: Lihat Konflik

Subversion mendeteksi bahwa file README telah berubah sejak terakhir diperbarui. Jadi, Jerry harus memperbarui copy pekerjaannya.

[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 mengeluh bahwa ada konflik dengan file README, dan Subversion tidak tahu bagaimana menyelesaikannya. Jadi Jerry memilih opsi df untuk meninjau konflik tersebut.

[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:

Langkah 2: Tunda Konflik

Selanjutnya Jerry memilih opsi tunda (p) , sehingga dia dapat menyelesaikan konflik tersebut.

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

Setelah membuka README di editor teks dia menyadari bahwa Subversion telah memasukkan kode Tom dan kodenya dengan penanda konflik.

[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 ingin perubahan Tom dan juga miliknya, jadi dia hanya menghapus baris yang mengandung penanda konflik.

Jadi, README yang dimodifikasi akan terlihat seperti ini.

[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 menyelesaikan konflik dan dia mencoba lagi.

[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

Langkah 3: Selesaikan Konflik

Di komit di atas, surat itu Cmenunjukkan bahwa ada konflik dalam file README. Jerry menyelesaikan konflik tersebut tetapi tidak memberi tahu Subversion bahwa dia telah menyelesaikan konflik tersebut. Dia menggunakan perintah tekad untuk menginformasikan Subversion tentang resolusi konflik.

[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.