SVN仓库目录结构Repository:

trunk
tags
branches

trunk(主干|主线) branchs(分支) tags(标记)

truck(主干|主线|主分支):是用来做主方向开发的,新功能的开发应放在主线中,当模块开发完成后,需要修改,就用branch。
branch(分支):分支开发和主线开发是可以同时进行的,也就是并行开发,分支通常用于修复bug时使用

tag(标记):用于标记某个可用的版本,可以标记已经上线发布的版本,也可以标记正在测试的版本,通常是只读的

SVN具体操作步骤:(TortoiseSVN版本: 1.8.8)

一:创建仓库

1. 创建目录结构D:\TortoiseSVN\Repository\Repo-iOS

2. 在该目录结构上右键

---> TortoiseSVN

---> Create repository here(创建仓库这里) 
---> Create folder structure(创建文件结构) ---> Start Repobrowser(开始仓库浏览) ---> Ok
       

二:将项目上传到SVN上

桌面右键

---> TortoiseSVN

--->repo-browser--> URL:  file:///D:/TortoiseSVN/Repository/Repo-iOS ---> Ok

--> 选中trunk文件夹右键

---> Add folder...

---> 选中要上传到SVN的项目的最外层目录,输入日志

---> Ok
       

三:Check Out

1. 在电脑任意位置创建一个存放项目代码的目录,例如:D:\TortoiseSVN\Repository\Source
2. 将代码检出到该位置
   

四:开发周期

1. 在目录D:\TortoiseSVN\Repository\Source\trunk\MyAppProject上进行开发,注意是在trunk主线上

因为项目刚建立,这是在开发新功能,所以要在主线上开发

2. 开发一段时间后,经测试,上线到App Store,Android上传到其它应用商城,摘取上线时的HomeViewController文件中一段代码如下

  1. - (void) viewDidLoad {
  2. [super viewDidLoad];
  3. // -----------------------------------------
  4. int y = 0;
  5. int result = 10 / y;
  6. NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result);
  7. // End
  8. }

3. 在D:\TortoiseSVN\Repository\Source\tags 目录下新建一个目录:1.0,并将该目录提交到SVN上,然后右键         D:\TortoiseSVN\Repository\Source\trunk\MyAppProject该目录---> TortoiseSVN---->Branch/tag... -----> To Path :/tags/1.0/MyAppProject 并选中 Head revision in repository ---> Ok此时Source/tags/1.0 目录中没有任何内容,需要更新一下该目录做update操作。更新之后看到一个完整的项目源码保存到该目录中(该目录下的源码可看做是trunk目录下版本为1.0的一个副本),查看一下/tags/1.0/HomeViewController中的viewDidLoad和trunk/MyAppProject/HomeViewController中的viewDidLoad代码完全一样。

4. 开发下一阶段的新需求,开发中ing

5. 用户或测试人员反馈应用有重大bug,需要立即修复该bug并尽快上线, 此时程序员需要为 tags/1.0 下的MyAppProject 打一个分支branch,
          操作过程如下:选中Source/tags/1.0/MyAppProject 右键 TortoiseSVN---->Branch/tag... -----> To Path :/branches/MyAppProject  ---> Ok
 此时看D:\TortoiseSVN\Repository\Source\branches目录下仍然没有任何内容,也需要update一下,更新之后发现该目录下
 也出现一个完整的项目代码(该代码可看做是tags/1.0/MyAppProject的一个副本),注意打分支和打标记都是使用Branch/tag...菜单,不同的是To Path 的目录不一样,图解看打分支的图,只是to path 值不一样,此时branches/MyAppProject/HomeViewController中的viewDidLoad和tags/1.0/MyAppProject/HomeViewController中的viewDidLoad代码完全一致。

6. 切换工作空间,使用Xcode|Eclipse集成工具打开/branches/MyAppProject下的项目,然后在此基础上调试并修复bug,注意打开的必须是分支中的项目

7. bug 修复好后,先提交修改的文件,并进行客户端App上线,上线完成后再将branches/MyAppProject/打个tag到1.0.1目录下(tags/1.0.1)(操作步骤同步骤3),tag操作完成后,可以看到tags/1.0.1/HomeViewController.viewDidLoad 和  branches/ MyAppProject/HomeViewController.viewDidLoad是完全一致的,将branches/MyAppProject打一个新的tag是以便于下次在此基础上再次修复bug,至此bug修复已经完成;修复bug后的代码如下:

  1. - (void) viewDidLoad {
  2. [super viewDidLoad];
  3. // -----------------------------------------
  4. int y = 10;
  5. int result = 10 / y;
  6. NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result);
  7. // End
  8. NSLog(@"1.0 版本闪退bug 已修复, 程序出现除0异常");
  9. }

8. 接下来将branch和trunk进行合并,操作步骤如下:

右键 branches/MyAppProject ------>TortoiseSVN

----> Merge...

---> Merge a range of revisions

----> Next --->URL to merge from : file:///D:/TortoiseSVN/Repository/Repo-iOS/trunk/MyAppProject

----> Next

----> Merge
       

9. 将trunk和branches进行合并 步骤如下,

右键/turnk/MyAppProject ----> Merge... -----> Merge a range of revisions   -----> Next

----->  URL to merge from : file:///D:/TortoiseSVN/Repository/Repo-iOS/branches/MyAppProject

步骤同上,只是  URL to merge from   的路径不一样。合并完成后,查看一下/trunk/MyAppProject/HomeViewController/viewDidLoad方法如下:

  1. - (void) viewDidLoad {
  2. [super viewDidLoad];
  3. // -----------------------------------------
  4. int y = <strong>10</strong>;            // <strong>可以看到branches分支中的代码已经合并到主线上了</strong>
  5. int result = 10 / y;
  6. NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result);
  7. // End
  8. NSLog(@"<strong>1.0 版本闪退bug 已修复, 程序出现除0异常</strong>");
  9. NSLog(@"其他同事在主线trunk中进行新需求开发...");
  10. NSLog(@"其他同事在主线trunk中进行新需求开发...");
  11. }

10. 此时合并彻底结束,branches目录下的源码如果不想要也可以删掉,接着修改bug的这位程序员需要切换工作空间到主线上来,使用Xcode重新打开trunk/MyAppProject项目,接着开发尚未完成的新功能。SVN目录如下:

说明:

1. 分支开发和主干开发是两个完全独立的过程,两者可以同时进行开发
2. 因分支和主干开发是并行的,所以两者可以任意的多次提交当前工程所修改的文件

SVN仓库目录结构的更多相关文章

  1. svn本地目录结构for window

    演示内容: 使用svn目录结构来进行备份正式版和修复版本,最终合并修复版本.主干上的版本. 使用工具: visualSVN server 服务器软件工具 TortoiseSVN客户端工具 1.服务器的 ...

  2. SVN是什么,svn的目录结构

    Svn是一个离线的代码管理,可以多个人一起修改,然后再将修改的内容提交到Svn中.每一个svn服务器中的数据存储单位叫做存储,但是你不仅仅可以把整个存储当作你维护的内容,也可以将其中的某个分支目录像根 ...

  3. [trick] 玩弄svn的目录结构

    今天在使用svn进行版本管理时出现了一个小问题: 原本在s目录下有一个c目录,不知为何被删除了,而svn st命令并没有认为它消失,svn up命令也无法下载回来: 从另一个地方拷贝过来一个c,svn ...

  4. SVN版本管理 目录结构

    一. SVN标准目录 Subversion有一个很标准的目录结构,是这样的.比如项目是 proj,svn地址为 svn://proj/,那么标准的 svn 布局是: 这是一个标准的布局,trunk为主 ...

  5. SVN标准目录结构

    Trunk 这是SVN目录的主分支,表示日常开发中的项目,任何时候Trunk里包含的都是最新的开发代码. 这里的代码将会工作到你的下一个主要发布版本. Trunk应该只被用来开发将会成为你的下一个重要 ...

  6. linux下创建svn仓库及用户

    1 Linux下创建svn仓库 1.1 启动SVN服务 svnserve -d -r  /SVNRootDirectry 其中SVNRootDirectry是你的SVN 根目录,例如192.85.1. ...

  7. SVN的标准目录结构

    SVN目录规范 在visualSVN中创建仓库时,可以选择svn目录结构 Trunk主干目录,此目录下的文件为基准文件. Brancher 用于开发的分支目录 Tags用于发布的版本目录 假设有一个项 ...

  8. 02 svn 文件提交与目录结构

    一:文件操作给svn服务器提交程序文件: ① 在被提交文件的身上点击右键------> tortoiseSVN----->add ② 在被提交文件身上点击右键------> comm ...

  9. 关于SVN 目录结构

    Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/   |   +-trunk   +-bra ...

随机推荐

  1. 紫书 例题8-18 UVa 1442 (扫描法)

    从左往右扫描一遍, 得从每个位置往右伸长不会碰到天花板的高度, 右往左一样, 取最小, 然后就是可以放"水"的高度了 #include<cstdio> #include ...

  2. 使用InstelliJ IDEA创建Web应用程序

    环境版本 Windows 8.1IDE:InstelliJ IDEA 13    Spring:Spring 4.1.1 & Spring MVC 4.1.1    WebLogic 10.3 ...

  3. 【codeforces 335A】Banana

    [题目链接]:http://codeforces.com/contest/335/problem/A [题意] 让你构造一个长度为n的字符串; 每次你可以从这个字符串中任意取走字符; 让你求出取的次数 ...

  4. C++ 数字、string 简便互转

    一.数字转为 string 类型 借用 sprintf 函数: char buffer[256]; int counter = 10; sprintf(buffer,"%04i", ...

  5. POJ3370&amp;HDU1808 Halloween treats【鸽巢原理】

    题目链接: id=3370">http://poj.org/problem?id=3370 http://acm.hdu.edu.cn/showproblem.php?pid=1808 ...

  6. 使用具体解释及源代码解析Android中的Adapter、BaseAdapter、ArrayAdapter、SimpleAdapter和SimpleCursorAdapter

    Adapter相当于一个数据源,能够给AdapterView提供数据.并依据数据创建相应的UI.能够通过调用AdapterView的setAdapter方法使得AdapterView将Adapter作 ...

  7. php 数组元素高速去重

    1.使用array_unique方法进行去重 对数组元素进行去重.我们通常会使用array_unique方法,使用这种方法能够把数组中的元素去重. <?php $arr = array(1,1, ...

  8. js 使用(不断更新...)

    1.JS 对象(Object)和字符串(String)互转 var jsObj = {}; jsObj.testArray = [1, 2, 3, 4, 5]; jsObj.name = 'CSS3' ...

  9. Square roots

    Loops are often used in programs that compute numerical results by starting with an approximate answ ...

  10. 13.C语言隐藏黑窗口

    //预编译,linker链接,Windows模式 #pragma comment(linker,"/subsystem:\"windows\" /entry:\" ...