炫意html5
最早CSS3和HTML5移动技术网站之一

SVN分支

分支操作创建另一条线路开发。它是有用的,当有人想开发过程叉成两个不同的方向。让我们假设发布的产品版本1.0中,可能要创建新的分支,所以可以保持独立,发展2.01.0 bug修复。

在本节中,我们将看到如何创建,遍历和合并分支。Jerry 已经沮丧,因为冲突,所以他决定创建新的私有分支。

[jerry@CentOS project_repo]$ ls
branches  tags  trunk
[jerry@CentOS project_repo]$ svn copy trunk branches/jerry_branch
A         branches/jerry_branch
[jerry@CentOS project_repo]$ svn status
A  +    branches/jerry_branch
[jerry@CentOS project_repo]$ svn commit -m "Jerry's private branch"
Adding         branches/jerry_branch
Adding         branches/jerry_branch/README
Committed revision 9.
[jerry@CentOS project_repo]$

Jerry 是在他的私人分支工作。他补充说数组的排序操作。Jerry 修改后的代码看起来是这样的。

[jerry@CentOS project_repo]$ cd branches/jerry_branch/
[jerry@CentOS jerry_branch]$ cat array.c

上面的命令将产生以下结果

#include<stdio.h>#define MAX 16void bubble_sort(int*arr,int n){int i, j, temp, flag =1;for(i =1; i < n && flag ==1;++i){
flag =0;for(j =0; j < n - i;++j){if(arr[j]> arr[j +1]){
flag      	=1;
temp      	= arr[j];
arr[j]= arr[j +1];
arr[j +1]= temp;}}}}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("
");}int main(void){int i, n, key, ret, arr[MAX];
printf("Enter the total number of elements: ");
scanf("%d",&n);/* Error handling for array overflow */if(n >MAX){
fprintf(stderr,"Number of elements must be less than %d
", MAX);return1;}
printf("Enter the elements
");
accept_input(arr, n);
printf("Array has following elements
");
display(arr, n);
printf("Sorted data is
");
bubble_sort(arr, n);
display(arr, n);return0;}

Jerry 编译并测试自己的代码和准备提交他修改的变化。

[jerry@CentOS jerry_branch]$ make array
cc     array.c   -o array
[jerry@CentOS jerry_branch]$ ./array

上面的命令将产生以下结果

Enter the total number of elements: 5
Enter the elements
10
-4
2
7
9
Array has following elements
|10| |-4| |2| |7| |9|
Sorted data is
|-4| |2| |7| |9| |10|
[jerry@CentOS jerry_branch]$ svn status
?       array
M       array.c
[jerry@CentOS jerry_branch]$ svn commit -m "Added sort operation"
Sending        jerry_branch/array.c
Transmitting file data .
Committed revision 10.

同时通过躯干,Tom决定执行搜索操作。Tom搜索操作添加代码,他的代码看起来像这样。

[tom@CentOS trunk]$ svn diff

上面的命令将产生以下结果

Index: array.c
===================================================================
--- array.c   (revision 10)
+++ array.c   (working copy)
@@ -2,6 +2,27 @@
#define MAX 16
+int bin_search(int *arr, int n, int key)
+{
+   int low, high, mid;
+
+   low   = 0;
+   high   = n - 1;
+   mid   = low + (high - low) / 2;
+
+   while (low <= high) {
+      if (arr[mid] == key)
+         return mid;
+      if (arr[mid] > key)
+         high = mid - 1;
+      else
+         low = mid + 1;
+      mid = low + (high - low) / 2;
+   }
+
+   return -1;
+}
+
void accept_input(int *arr, int n)
{
int i;
@@ -22,7 +43,7 @@
int main(void)
{
-   int i, n, arr[MAX];
+   int i, n, ret, key, arr[MAX];
printf("Enter the total number of elements: ");
scanf("%d", &n);
@@ -39,5 +60,16 @@
printf("Array has following elements
");
display(arr, n);
+   printf("Enter the element to be searched: ");
+   scanf("%d", &key);
+
+   ret = bin_search(arr, n, key);
+   if (ret < 0) {
+      fprintf(stderr, "%d element not present in array
", key);
+      return 1;
+   }
+
+   printf("%d element found at location %d
", key, ret + 1);
+
return 0;
}

审查后,他提交了他修改的变化。

[tom@CentOS trunk]$ svn status
?       array
M       array.c
[tom@CentOS trunk]$ svn commit -m "Added search operation"
Sending        trunk/array.c
Transmitting file data .
Committed revision 11.

但Tom 好奇为什么 Jerry 一直在做他的私人分支。

[tom@CentOS trunk]$ cd ../branches/
[tom@CentOS branches]$ svn up
A    jerry_branch
A    jerry_branch/array.c
A    jerry_branch/README
[tom@CentOS branches]$ svn log
------------------------------------------------------------------------
r9 | jerry | 2013-08-27 21:56:51 +0530 (Tue, 27 Aug 2013) | 1 line
Added sort operation
------------------------------------------------------------------------

查看Subversion的日志消息,Tom发现,Jerry实现的排序操作。Tom执行搜索操作使用二进制搜索算法,它总是希望数据的排序顺序。但是,如果用户提供的数据,未排序的顺序呢?在这种情况下的二进制搜索操作将失败。于是,他决定采用Jerry 的代码,搜索操作前对数据进行排序。于是,他会要求Subversion的从Jerry的分支到主干合并代码。

[tom@CentOS trunk]$ pwd
/home/tom/project_repo/trunk
[tom@CentOS trunk]$ svn merge ../branches/jerry_branch/
--- Merging r9 through r11 into '.':
U    array.c

合并后array.c的这个样子。

[tom@CentOS trunk]$ cat array.c

上面的命令将产生以下结果

#include<stdio.h>#define MAX 16void bubble_sort(int*arr,int n){int i, j, temp, flag =1;for(i =1; i < n && flag ==1;++i){
flag =0;for(j =0; j < n - i;++j){if(arr[j]> arr[j +1]){
flag      	=1;
temp      	= arr[j];
arr[j]= arr[j +1];
arr[j +1]= temp;}}}}int bin_search(int*arr,int n,int key){int low, high, mid;
low   =0;
high   = n -1;
mid   = low +(high - low)/2;while(low <= high){if(arr[mid]== key)return mid;if(arr[mid]> key)
high = mid -1;else
low = mid +1;
mid = low +(high - low)/2;}return-1;}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("
");}int main(void){int i, n, ret, key, arr[MAX];
printf("Enter the total number of elements: ");
scanf("%d",&n);/* Error handling for array overflow */if(n > MAX){
fprintf(stderr,"Number of elements must be less than %d
", MAX);return1;}
printf("Enter the elements
");
accept_input(arr, n);
printf("Array has following elements
");
display(arr, n);
printf("Sorted data is
");
bubble_sort(arr, n);
display(arr, n);
printf("Enter the element to be searched: ");
scanf("%d",&key);
ret = bin_search(arr, n, key);if(ret <0){
fprintf(stderr,"%d element not present in array
", key);return1;}
printf("%d element found at location %d
", key, ret +1);return0;}

Tom 测试完成后,提交他的修改到版本库。

[tom@CentOS trunk]$ make array
cc     array.c   -o array
[tom@CentOS trunk]$ ./array
Enter the total number of elements: 5
Enter the elements
10
-2
8
15
3
Array has following elements
|10| |-2| |8| |15| |3|
Sorted data is
|-2| |3| |8| |10| |15|
Enter the element to be searched: -2
-2 element found at location 1
[tom@CentOS trunk]$ svn commit -m "Merge changes from Jerry's code"
Sending        trunk
Sending        trunk/array.c
Transmitting file data .
Committed revision 12.
[tom@CentOS trunk]$ 

炫意HTML5 » SVN分支

Java基础教程Android基础教程