SVN仓库目录结构
SVN仓库目录结构Repository:
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文件中一段代码如下
- - (void) viewDidLoad {
- [super viewDidLoad];
- // -----------------------------------------
- int y = 0;
- int result = 10 / y;
- NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result);
- // End
- }
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后的代码如下:
- - (void) viewDidLoad {
- [super viewDidLoad];
- // -----------------------------------------
- int y = 10;
- int result = 10 / y;
- NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result);
- // End
- NSLog(@"1.0 版本闪退bug 已修复, 程序出现除0异常");
- }
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方法如下:
- - (void) viewDidLoad {
- [super viewDidLoad];
- // -----------------------------------------
- int y = <strong>10</strong>; // <strong>可以看到branches分支中的代码已经合并到主线上了</strong>
- int result = 10 / y;
- NSLog(@"iOS APP 第一阶段开发完成了! 结果是:%ld", result);
- // End
- NSLog(@"<strong>1.0 版本闪退bug 已修复, 程序出现除0异常</strong>");
- NSLog(@"其他同事在主线trunk中进行新需求开发...");
- NSLog(@"其他同事在主线trunk中进行新需求开发...");
- }
10. 此时合并彻底结束,branches目录下的源码如果不想要也可以删掉,接着修改bug的这位程序员需要切换工作空间到主线上来,使用Xcode重新打开trunk/MyAppProject项目,接着开发尚未完成的新功能。SVN目录如下:
说明:
1. 分支开发和主干开发是两个完全独立的过程,两者可以同时进行开发
2. 因分支和主干开发是并行的,所以两者可以任意的多次提交当前工程所修改的文件
SVN仓库目录结构的更多相关文章
- svn本地目录结构for window
演示内容: 使用svn目录结构来进行备份正式版和修复版本,最终合并修复版本.主干上的版本. 使用工具: visualSVN server 服务器软件工具 TortoiseSVN客户端工具 1.服务器的 ...
- SVN是什么,svn的目录结构
Svn是一个离线的代码管理,可以多个人一起修改,然后再将修改的内容提交到Svn中.每一个svn服务器中的数据存储单位叫做存储,但是你不仅仅可以把整个存储当作你维护的内容,也可以将其中的某个分支目录像根 ...
- [trick] 玩弄svn的目录结构
今天在使用svn进行版本管理时出现了一个小问题: 原本在s目录下有一个c目录,不知为何被删除了,而svn st命令并没有认为它消失,svn up命令也无法下载回来: 从另一个地方拷贝过来一个c,svn ...
- SVN版本管理 目录结构
一. SVN标准目录 Subversion有一个很标准的目录结构,是这样的.比如项目是 proj,svn地址为 svn://proj/,那么标准的 svn 布局是: 这是一个标准的布局,trunk为主 ...
- SVN标准目录结构
Trunk 这是SVN目录的主分支,表示日常开发中的项目,任何时候Trunk里包含的都是最新的开发代码. 这里的代码将会工作到你的下一个主要发布版本. Trunk应该只被用来开发将会成为你的下一个重要 ...
- linux下创建svn仓库及用户
1 Linux下创建svn仓库 1.1 启动SVN服务 svnserve -d -r /SVNRootDirectry 其中SVNRootDirectry是你的SVN 根目录,例如192.85.1. ...
- SVN的标准目录结构
SVN目录规范 在visualSVN中创建仓库时,可以选择svn目录结构 Trunk主干目录,此目录下的文件为基准文件. Brancher 用于开发的分支目录 Tags用于发布的版本目录 假设有一个项 ...
- 02 svn 文件提交与目录结构
一:文件操作给svn服务器提交程序文件: ① 在被提交文件的身上点击右键------> tortoiseSVN----->add ② 在被提交文件身上点击右键------> comm ...
- 关于SVN 目录结构
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是 svn://proj/ | +-trunk +-bra ...
随机推荐
- vue2.0移动端自定义性别选择提示框
这篇文章主要是简单的实现了vue2.0移动端自定义性别选择的功能,很简单但是经常用到,于是写了一个小小的demo,记录下来. 效果图: 实现代码: <template> <div c ...
- Matlab 图像的邻域和块操作
图像的邻域操作是指输出图像的像素点取值,由输入图像的某个像素点及其邻域内的像素,通常像素点的邻域是一个远小于图像本身尺寸.形状规则的像素块,如2×2,3×3正方形.2×3矩形等,或者近似圆形的多边形. ...
- MySql基础总结(1)
对于MySql已经是第二次看了,这次基本的目的是将MySql系统的归纳一边,之前学MySql是将笔记写在本子上,以后不想总带着本子,所以再花点时间把笔记归纳在博客中. 下午已将安装步骤具体的写了.如今 ...
- Python Tkinter 基础控件学习
# -*- coding: utf-8 -*- from Tkinter import * def btn_click(): b2['text'] = 'clicked' evalue = e.get ...
- python 3.x 学习笔记4(函数)
1.编程方式分:面向对象.面向过程.函数式编程 2.区分面向对象---->类---->class面向过程---->过程---->def函数式编程---->函数----&g ...
- iview中键盘上下左右事件的方法
document.addEventListener('keydown', function(e){ var keyCode = e.keyCode; // Esc slide-up ) { e.pre ...
- php--防止DDos攻击代码
<?php //查询禁止IP $ip =$_SERVER['REMOTE_ADDR']; $fileht=".htaccess2"; if(!file_exists($fil ...
- Javascript中正则的 match、test、exec使用方法和区别
总结: match 是str调用 test和exec是正则表达式调用 test只返回true或false, exec和match的结果是相同的,返回结果比较复杂
- Hexo Next 调优
Links对齐 编辑themes/next/source/css/_custom下的custom.styl,添加如下代码即可. .links-of-blogroll-title{ margin-lef ...
- 用xmanager6启动Linux上的图形界面程序
1.下载Xmanager6 并自行安装,这里不赘述了 2.打开Xmanager.启动Xstart 3.按提示输入:主机IP,协议,用户名,命令,完成后点击“保存”,接着点击“运行”,运行xmanage ...