SVN - Xem lại các thay đổi

Jerry đã thêm tệp array.c vào kho lưu trữ. Tom cũng kiểm tra mã mới nhất và bắt đầu hoạt động.

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

Lệnh trên sẽ cho kết quả như 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 ấy phát hiện ra rằng ai đó đã thêm mã. Vì vậy, anh ấy tò mò về việc ai đã làm điều đó và anh ấy kiểm tra thông báo nhật ký để xem thêm chi tiết bằng cách sử dụng lệnh sau:

[tom@CentOS trunk]$ svn log

Lệnh trên sẽ cho kết quả như sau.

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

Khi Tom quan sát mã của Jerry , anh ấy ngay lập tức nhận thấy một lỗi trong đó. Jerry đã không kiểm tra tràn mảng, điều này có thể gây ra sự cố nghiêm trọng. Vì vậy, Tom quyết định khắc phục sự cố này. Sau khi sửa đổi, array.c sẽ như thế này.

#include <stdio.h>

#define MAX 16

int 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 thao tác trạng thái để xem danh sách thay đổi đang chờ xử lý.

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

Tệp array.c được sửa đổi, đó là lý do Subversion hiển thịMchữ cái trước tên tệp. Tiếp theo Tom biên dịch và kiểm tra mã của mình và nó đang hoạt động tốt. Trước khi thực hiện các thay đổi, anh ấy muốn kiểm tra kỹ nó bằng cách xem lại các thay đổi mà anh ấy đã 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 trong tệp array.c , đó là lý do tại sao Subversion hiển thị + ký trước dòng mới. Bây giờ anh ấy đã sẵn sàng để thực hiện những thay đổi của mình.

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

Lệnh trên sẽ cho kết quả như sau.

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

Các thay đổi của Tom được cam kết thành công vào kho lưu trữ.