SVN - Perbaiki Kesalahan

Misalkan Jerry tidak sengaja mengubah file array.c dan dia mendapatkan kesalahan kompilasi. Sekarang dia ingin membuang perubahan. Dalam situasi ini, operasi 'kembalikan' akan membantu. Operasi pengembalian akan membatalkan perubahan lokal apa pun ke file atau direktori dan menyelesaikan semua status konflik.

[jerry@CentOS trunk]$ svn status

Perintah di atas akan menghasilkan hasil sebagai berikut.

M       array.c

Mari kita coba membuat array sebagai berikut:

[jerry@CentOS trunk]$ make array

Perintah di atas akan menghasilkan hasil sebagai berikut.

cc     array.c   -o array
array.c: In function ‘main’:
array.c:26: error: ‘n’ undeclared (first use in this function)
array.c:26: error: (Each undeclared identifier is reported only once
array.c:26: error: for each function it appears in.)
array.c:34: error: ‘arr’ undeclared (first use in this function)
make: *** [array] Error 1

Jerry melakukan operasi 'mengembalikan' pada file array.c .

[jerry@CentOS trunk]$ svn revert array.c 
Reverted 'array.c'

[jerry@CentOS trunk]$ svn status
[jerry@CentOS trunk]$

Sekarang kompilasi kodenya.

[jerry@CentOS trunk]$ make array
cc     array.c   -o array

Setelah operasi pengembalian, copy pekerjaannya kembali ke keadaan semula. Operasi pengembalian dapat mengembalikan satu file serta direktori lengkap. Untuk mengembalikan direktori, gunakan opsi -R seperti yang ditunjukkan di bawah ini.

[jerry@CentOS project_repo]$ pwd
/home/jerry/project_repo

[jerry@CentOS project_repo]$ svn revert -R trunk

Sampai sekarang, kita telah melihat bagaimana mengembalikan perubahan, yang telah dibuat ke copy pekerjaan. Tetapi bagaimana jika Anda ingin mengembalikan revisi berkomitmen! Alat Sistem Kontrol Versi tidak memungkinkan untuk menghapus riwayat dari repositori. Kami hanya dapat menambahkan sejarah. Ini akan terjadi bahkan jika Anda menghapus file dari repositori. Untuk membatalkan revisi lama, kita harus membalikkan perubahan apa pun yang dibuat pada revisi lama dan kemudian melakukan revisi baru. Ini disebut penggabungan terbalik.

Misalkan Jerry menambahkan kode untuk operasi pencarian linier. Setelah verifikasi dia melakukan perubahannya.

[jerry@CentOS trunk]$ svn diff
Index: array.c
===================================================================
--- array.c   (revision 21)
+++ array.c   (working copy)
@@ -2,6 +2,16 @@
 
 #define MAX 16
 
+int linear_search(int *arr, int n, int key)
+{
+   int i;
+
+   for (i = 0; i < n; ++i)
+      if (arr[i] == key)
+         return i;
+   return -1;
+}
+
 void bubble_sort(int *arr, int n)
 {
    int i, j, temp, flag = 1;

[jerry@CentOS trunk]$ svn status
?       array
M       array.c

[jerry@CentOS trunk]$ svn commit -m "Added code for linear search"
Sending        trunk/array.c
Transmitting file data .
Committed revision 22.

Jerry penasaran dengan apa yang dilakukan Tom. Jadi dia memeriksa pesan log Subversion.

[jerry@CentOS trunk]$ svn log

Perintah di atas akan menghasilkan hasil sebagai berikut.

------------------------------------------------------------------------
r5 | tom   | 2013-08-24 17:15:28 +0530 (Sat, 24 Aug 2013) | 1 line

Add binary search operation
------------------------------------------------------------------------
r4 | jerry | 2013-08-18 20:43:25 +0530 (Sun, 18 Aug 2013) | 1 line

Add function to accept input and to display array contents

Setelah melihat pesan log, Jerry menyadari bahwa dia melakukan kesalahan serius. Karena Tom sudah menerapkan operasi pencarian biner, yang lebih baik daripada pencarian linier; kodenya berlebihan, dan sekarang Jerry harus mengembalikan perubahannya ke revisi sebelumnya. Jadi, pertama-tama temukan revisi repositori saat ini. Saat ini, repositori ada di revisi 22 dan kita harus mengembalikannya ke revisi sebelumnya, yaitu revisi 21.

[jerry@CentOS trunk]$ svn up 
At revision 22.

[jerry@CentOS trunk]$ svn merge -r 22:21 array.c 
--- Reverse-merging r22 into 'array.c':
U    array.c

[jerry@CentOS trunk]$ svn commit -m "Reverted to revision 21"
Sending        trunk/array.c
Transmitting file data .
Committed revision 23.