清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>> 
                                
分支操作创建另一条线路开发。它是有用的,当有人想开发过程叉成两个不同的方向。让我们假设发布的产品版本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 16
void 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);
      return 1;
   }
   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);
   return 0;
}
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 16
void 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);
      return 1;
   }
   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);
      return 1;
   }
   printf("%d element found at location %d
", key, ret + 1);
   return 0;
}
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]$
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://phpxs.com/j/svn/1001027/
- 免费: Python视频资料获取
 
			







