SVN - 審查變更



傑瑞已將array.c檔案新增到版本庫。湯姆也檢出了最新程式碼並開始工作。

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

上述命令將產生以下結果。

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

但是,他發現有人已經添加了程式碼。於是他好奇地想知道是誰這麼做的,並使用以下命令檢查日誌訊息以檢視更多詳細資訊

[tom@CentOS trunk]$ svn log

上述命令將產生以下結果。

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

湯姆觀察傑瑞的程式碼時,他立即注意到其中存在一個錯誤。傑瑞沒有檢查陣列溢位,這可能會導致嚴重問題。因此,湯姆決定解決此問題。修改後,array.c將如下所示。

#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@CentOS trunk]$ svn status
M       array.c

array.c檔案已被修改,因此Subversion在檔名之前顯示了字母M。接著,湯姆編譯並測試了他的程式碼,效果很好。在提交更改之前,他想透過審查他所做的更改來仔細檢查一下。

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

湯姆array.c檔案中添加了幾行,因此Subversion在每一行之前都顯示了 + 符號。現在他已經準備提交他的更改。

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

上述命令將產生以下結果。

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

湯姆的更改已成功提交到版本庫。

廣告