开发手册 欢迎您!
软件开发者资料库

SVN - 更新流程

SVN更新过程 - 使用这个初学者教程,简单易学地学习Apache Subversion(SVN),这是一个版本控制和修订控制系统,包含从基本概念,环境,生命周期,创建存储库,签入过程,更新过程开始的基础知识到高级知识,结帐流程,执行更改,审核更改,修复错误,解决冲突,提交更改,分支和SVN标记。

Jerry 已经提交了第一个版本的代码.但他认为他应该编写两个函数来接受输入并显示数组内容.修改后, array.c 如下所示.

#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 编译并测试他的代码,并准备提交更改.在此之前,他想使用以下命令查看更改.

[jerry @ CentOS trunk] $ svn diff

上述命令将产生以下结果.

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在行前显示 + 符号对于删除的行,它显示  -   符号.现在,Jerry尝试使用以下命令提交更改:

[jerry@CentOS trunk]$ svn commit -m "Add function to accept input and to display array contents"

上述命令将产生以下结果.

Sending        trunk/array.csvn: Commit failed (details follow):svn: File or directory 'array.c' is out of date; try updatingsvn: resource out of date; try updating

Subversion不允许提交 Jerry的更改,因为 Tom 已经修改了存储库而

[jerry@CentOS trunk]$ svn updateG    array.cUpdated to revision 3.

Subversion在文件名前显示字母 G ,这意味着文件已合并.

[jerry @ CentOS trunk] $ svn diff

上述命令将产生以下结果.

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仅显示 Jerry的更改,但 array.c 文件是合并.如果仔细观察,Subversion现在显示版本号3.在上一个输出中,它显示的是版本号2.只需查看谁在文件中进行了更改以及用于何种目的.

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

现在 Jerry的工作副本与存储库同步,他可以安全地提交他的更改.

[jerry@CentOS trunk]$ svn commit -m "Add function to accept input and to display array contents"Sending        trunk/array.cTransmitting file data .Committed revision 4.