Review các thay đổi trong SVN



Jerry đã thêm tệp array.c tới repository. Tom cũng kiểm tra code mới nhất và bắt đầu làm việc.

[tom@CentOS ~]$ svn co http://svn.server.com../svn/project_repo --username=tom

Lệnh trên sẽ tạo ra kết quả sau:

A    project_repo/trunk
A    project_repo/trunk/array.c
A    project_repo/branches
A    project_repo/tags
Checked out revision 2.

Nhưng, anh ta tìm thấy rằng một ai đó đã thêm code. Vì thế anh ta tò mò về người đã làm điều đó và anh ta kiểm tra thông báo log để quan sát chi tiết hơn bằng cách sử dụng lệnh sau:

[tom@CentOS trunk]$ svn log

Lệnh trên sẽ tạo ra kết quả sau:

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

Khi Tom theo dõi code của Jerry, anh ta lập tức chú ý đến một lỗi (bug) trong đó. Jerry không kiểm tra về tràn độ dài chuỗi của mảng, mà có thể gây ra các vấn đề nghiêm trọng. Vì thế Tom quyết định sửa lỗi này. Sau khi chỉnh sửa, array.c sẽ trông giống như sau:

#include #define MAX 16int main(void)
{
   int i, n, arr[MAX];   printf("Enter the total number of elements: ");
   scanf("%d", &n);   /* handle array overflow condition */
   if (n > MAX) {
      fprintf(stderr, "Number of elements must be less than %d\n", MAX);
      return 1;
   }   printf("Enter the elements\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");   return 0;
}

Tom muốn sử dụng hoạt động status để quan sát quá trình diễn ra liệt kê các thay đổi.

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

Tệp array.c đã được chỉnh sửa, đó là tại sao subversion chỉ ký tự M trước tên file. Tiếp đó Tom biên dịch và kiểm tra code của anh ta và nó đang làm việc tốt. Trước khi commit các thay đổi, anh ta muốn kiểm tra lần hai nó bằng cách duyệt lại các thay đổi mà anh ta đã thực hiện.

[tom@CentOS trunk]$ svn diff
Index: array.c
===================================================================
--- array.c   (revision 2)
+++ array.c   (working copy)
@@ -9,6 +9,11 @@
    printf("Enter the total number of elements: ");
    scanf("%d", &n);
 
+   if (n > MAX) {
+      fprintf(stderr, "Number of elements must be less than %d\n", MAX);
+      return 1;
+   }
+
    printf("Enter the elements\n");
 
    for (i = 0; i < n; ++i)

Tom đã thêm một vài dòng mới vào tệp array.c, đó là tại sao subversion chỉ ký hiệu + trước các dòng mới. Bây giờ anh ta đã sẵn sàng để commit các thay đổi của mình.

[tom@CentOS trunk]$ svn commit -m "Fix array overflow problem"

Lệnh trên sẽ tạo ra kết quả sau:

Sending        trunk/array.c
Transmitting file data .
Committed revision 3.

Các thay đổi của Tom đã được commit thành công tới repository.

Các bài học SVN phổ biến khác tại VietJack: