Tiến trình Update trong SVN
Jerry đã commit phiên bản đầu tiên của code. Nhưng anh ta nghĩ rằng anh ta nên viết hai chức năng để chấp nhận dữ liệu đầu vào và để hiển thị nội dung mảng. Sau khi chỉnh sửa, array.c trông giống như sau:
#include#define MAX 16void 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 code của mình và đã sẵn sàng để commit các thay đổi. Trước khi đó, anh ta muốn duyệt lại các 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ả sau:
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; }
Với các dòng mới, subversion chỉ dấu + trước các dòng và với các dòng bị dỡ bỏ nó chỉ dấu -. Bây giờ Jerry cố gắng để commit các thay đổi bằng cách sử 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ả sau:
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 commit những thay đổi của Jerry, bởi vì Tom đã thay đổi repository và khu vực làm việc của Jerry bị lỗi thời. Để tránh việc viết đè lên các thay đổi lẫn nhau, Subversion quên hành động này. Jerry phải cập nhật khu vực làm việc trước khi commit các thay đổi của anh ta. Vì thế anh ta sử 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, 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ả sau:
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ỉ các thay đổi của Jerry, nhưng tệp array.c được sáp nhập. Nếu bạn theo dõi cẩn thận, subversion bây giờ đang chỉ phiên bản số 3. Trong sản phẩm trước, nó đang chỉ phiên bản số 2. Hãy quan sát ai đã gây ra những 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 lineFix array overflow problem ------------------------------------------------------------------------ r2 | jerry | 2013-08-17 20:40:43 +0530 (Sat, 17 Aug 2013) | 1 lineInitial commit ------------------------------------------------------------------------ r1 | jerry | 2013-08-04 23:43:08 +0530 (Sun, 04 Aug 2013) | 1 lineCreate trunk, branches, tags directory structure ------------------------------------------------------------------------
Bây giờ khu vực làm việc của Jerry đã được đồng bộ với repository và anh ta có thể commit các thay đổi của anh ta một cách an toàn.
[jerry@CentOS trunk]$ svn commit -m "Add function to accept input and to display array contents" Sending trunk/array.c Transmitting file data . Committed revision 4.
Các bài học SVN phổ biến khác tại VietJack:
- SVN - Tiến trình Checkout
- SVN - Thực hiện các thay đổi
- SVN - Review các thay đổi
- SVN - Tiến trình Update
- SVN - Sửa lỗi