SVN仓库目录结构

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文件中一段代码如下

[objc] view plain copy

  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后的代码如下:

[objc] view plain copy

  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方法如下:

[objc] view plain copy

  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. 因分支和主干开发是并行的,所以两者可以任意的多次提交当前工程所修改的文件

原文地址:https://www.cnblogs.com/yachao1120/p/9111851.html

时间: 2024-11-06 22:31:42

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

SVN标准目录结构

Trunk 这是SVN目录的主分支,表示日常开发中的项目,任何时候Trunk里包含的都是最新的开发代码. 这里的代码将会工作到你的下一个主要发布版本. Trunk应该只被用来开发将会成为你的下一个重要版本的代码. Branches 分支 Experimental branches 有时你想将某个新技术引进项目.这很好,但是你当然不想赌上你的整个项目. Bug fix branches 分支也可以用于处理trunk或release branches里发现的严重的Bug. Tags 一般情况下,ta

linux下创建svn仓库及用户

1 Linux下创建svn仓库 1.1 启动SVN服务 svnserve -d -r  /SVNRootDirectry 其中SVNRootDirectry是你的SVN 根目录,例如192.85.1.2上的是:/SVN.-d 表示以后太服务方式执行,-r就表示root 1.2 创建仓储 1.2.1 在SVN根目录下建立版本仓库 svnadmin create study 命令 :svnadmin create  msm 其中msm是版本仓库的名字,仓库建立好了以后会有出现一个仓库名字的文件夹,文

保持SVN仓库结构只checkout部分子目录

有时整个 svn 目录太过于庞大,不想整个 checkout 下来,但又想维持整个目录结构以方便后续使用,那么可以使用 subversion 1.5 之后的 –depth 参数来只 checkout 需要的子目录. # 先checkout空目录svn co --depth empty svnLocation localDir # 对需要的子目录递归checkoutsvn update --set-depth infinity localDir/datasvn update --set-depth

源代码管理工具(下)-SVN目录结构

正规项目的SVN目录结构一般有3个文件夹:trunk:主干,当前开发项目的主目录branches:分支目录,添加非主线功能时使用,开发测试之后,可以合并到主干项目中tags:标记目录,通常作为重大版本的备份 在svn服务器上再次创建一个仓库,这个仓库死真正的仓库,包含了trunk.branches.tags三个文件夹,模拟开发.修复bug.合并版本的流程. 1.创建仓库 2.命名仓库 3.初始化仓库: 4.访问设置: 5.仓库创建成功,预览URL: 6.查看创建的三个文件夹: 7.接下来,根据项

SVN的标准目录结构:trunk、branches、tags

我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录.由于SVN固有的特点,目录在SVN中并没有特别的意义,但是这三个目录却在大多数开源项目中存在,这是因为这三个目录反映了软件开发的通常模式. trunk是主分支,是日常开发进行的地方. branches是分支.一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branches目录中.又比如为不同用户客制化的版本,也可以放在分支中进行开发. tags目录一般是只读的,这里存储阶

02 svn 文件提交与目录结构

一:文件操作给svn服务器提交程序文件: ① 在被提交文件的身上点击右键------> tortoiseSVN----->add ② 在被提交文件身上点击右键------> commit ③ 如果不 成功,开启匿名用户访问权限(d:/svnserver/shop/conf/svnserve.conf) ④ 继续commit操作 备注[修改匿名权限]:svnserve.conf => 添加: anon-access = write 二:目录结构 文件在仓库的什么地方存放: ① 日志在

Android SVN开发实战之目录结构介绍

svn有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/ | +-trunk +-branches +-tags 这 是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改).但是具体这几个目录应该如何使 用,svn并没有明确的规范,更多的还是用户自己的习惯. 对于这几个开发目录,一般的使用方法有两种.我更多的是从软件产品的角度出发 (比如freebsd)

关于SVN 目录结构

Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/   |   +-trunk   +-branches   +-tags     这 是一个标准的布局,trunk为主开发目录,branches为分支开发目录,tags为tag存档目录(不允许修改).但是具体这几个目录应该如何使 用,svn并没有明确的规范,更多的还是用户自己的习惯.    对于这几个开发目录,一般的使用方法有两种.我更多的是

【转】svn 的开发目录结构和流程

原文: https://blog.csdn.net/iteye_15570/article/details/82548132 ---------------------------------------------------------- Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/|+-trunk+-branches+-tags这是一个标准的布局,trunk为主开发目录,bran