SVN - Tiến trình Update (Học SVN)
Jerry đã commit thành công phiên bản đầu tiên của code. Nhưng anh ta cho rằng mình nên viết 2 chức năng để hiển thị nội dung mảng và để chấp nhận dữ liệu đầu vào. Sau khi chỉnh sửa xong, array. c có kết quả như dưới đây:
#include < stdio. h> #define MAX 16 void accept_input (int *arr, int n) { int i; for (i = 0; i < n; ++i) scanf ("%d", & arr [i]); } void display (int *arr, int n) { int i; for (i = 0; i < n; ++i) printf ("|%d| ", arr [i]); printf ("\n"); } int main (void) { int i, n, arr [MAX]; printf ("Enter the total number of elements: "); scanf ("%d", & n); printf ("Enter the elements\n"); accept_input (arr, n); printf ("Array has following elements\n"); display (arr, n); return 0; }
Jerry đã biên dịch và kiểm tra lại code của mình và đã sẵn sàng để thao tác commit các thay đổi. Trước khi đó, anh ta muốn duyệt lại xem những thay đổi bằng cách sử dụng lệnh sau:
[jerry@CentOS trunk]$ svn diff
Lệnh trên sẽ tạo ra kết quả như dưới đây:
Index: array. c =================================================================== --- array. c (revision 2) +++ array. c (working copy) @@ -2,6 +2,24 @@ #define MAX 16 +void accept_input (int *arr, int n) + { + int i; + + for (i = 0; i & n; ++i) + scanf ("%d", & arr [i]); +} + +void display (int *arr, int n) + { + int i; + + for (i = 0; i < n; ++i) + printf ("|%d| ", arr [i]); + + printf ("\n"); +} + int main (void) { int i, n, arr [MAX]; @@ -10,15 +28,10 @@ scanf ("%d", & n); printf ("Enter the elements\n"); + accept_input (arr, n); - for (i = 0; i < n; ++i) - scanf ("%d", & arr [i]); - printf ("Array has following elements\n"); - for (i = 0; i < n; ++i) - printf ("|%d| ", arr [i]); - - printf ("\n"); + display (arr, n); return 0; }
Subversion chỉ dấu - trước dòng bị dỡ bỏ và chỉ dấu + trước các dòng mới. Bây giờ Jerry đang cố gắng thực hiện commit các thay đổi bằng cách dùng lệnh sau:
[jerry@CentOS trunk]$ svn commit -m "Add function to accept input and to display array contents"
Lệnh trên sẽ tạo ra kết quả như dưới đây:
Sending trunk/array. c svn: Commit failed (details follow): svn: File or directory 'array. c' is out of date; try updating svn: resource out of date; try updating
Subversion không cho phép thao tác commit các thay đổi của Jerry, bởi vì Tom đã thay đổi repository và khu vực làm việc của Jerry hiện đã bị lỗi thời. Để tránh việc viết đè lên những thay đổi lẫn nhau, Subversion đã quên mất hành động này. Jerry cần phải cập nhật khu vực làm việc trước khi commit những thay đổi của mình. Chính vì thế anh ta cần dùng lệnh update như dưới đây:
[jerry@CentOS trunk]$ svn update G array. c Updated to revision 3.
Subversion đang chỉ ký tự G trước tên file và điều đó có nghĩa là file này đã được sáp nhập.
[jerry@CentOS trunk]$ svn diff
Lệnh trên sẽ tạo ra kết quả như dưới đây:
Index: array. c =================================================================== --- array. c (revision 3) +++ array. c (working copy) @@ -2,6 +2,24 @@ #define MAX 16 +void accept_input (int *arr, int n) + { + int i; + + for (i = 0; i < n; ++i) + scanf ("%d", & arr [i]); +} + +void display (int *arr, int n) + { + int i; + + for (i = 0; i < n; ++i) + printf ("|%d| ", arr [i]); + + printf ("\n"); +} + int main (void) { int i, n, arr [MAX]; @@ -15,15 +33,10 @@ } printf ("Enter the elements\n"); + accept_input (arr, n); - for (i = 0; i < n; ++i) - scanf ("%d", & arr [i]); - printf ("Array has following elements\n"); - for (i = 0; i < n; ++i) - printf ("|%d| ", arr [i]); - - printf ("\n"); + display (arr, n); return 0; }
Subversion đang chỉ những thay đổi của Jerry, nhưng tệp array. c đã được sáp nhập. Nếu bạn quan sát cẩn thận, subversion bây giờ đang chỉ là phiên bản số 3. Trong sản phẩm trước, nó đang chỉ là phiên bản số 2. Hãy theo dõi xem ai đã gây ra các thay đổi trong file và cho mục đích gì.
jerry@CentOS trunk]$ svn log ------------------------------------------------------------------------ r3 | tom | 2013-08-18 20: 21: 50 +0530 (Sun, 18 Aug 2013) | 1 line Fix array overflow problem ------------------------------------------------------------------------ r2 | jerry | 2013-08-17 20: 40: 43 +0530 (Sat, 17 Aug 2013) | 1 line Initial commit ------------------------------------------------------------------------ r1 | jerry | 2013-08-04 23: 43: 08 +0530 (Sun, 04 Aug 2013) | 1 line Create trunk, branches, tags directory structure ------------------------------------------------------------------------
Bây giờ khu vực làm việc của Jerry đã được đồng bộ thành công với repository và anh ta có thể commit những thay đổi của mình một cách an toàn.
Bài trước: SVN - Cách Review các thay đổi (Học SVN) Bài tiếp: SVN - Sửa lỗi (Học SVN)