SVN的部署及分支等方法

1、本地Repository的创建

repository的创建很简单,假设我要在D:\TortoiseSVN\TestRepository目录中创建repository,只需 右键TestRepository目录,依次选择"TortoiseSVN" -> "Create repository here"便完成了repository的创建。

2、Check out

假设要check out到D:\TortoiseSVN\TestSVN,同样很简单,在D:\TortoiseSVN目录下创建TestSVN目录,然后在该目录上右 键,选择"SVN Check out...",在弹出的窗口中的"URL of repository"中填入"file:///D:/TortoiseSVN/TestRepository",其他默认即可,最后点击ok。

3、trunk创建新项目MyProject

相当简单就不赘述了,只列出本次操作所作出的修改:

4、创建branch

在/trunk/MyProject目录上右键,依次选择"TortoiseSVN" -> "Branch/tag...",在弹出窗口的"To URL"中填入分支的地址,在这里目标revision选择HEAD revision,如下图所示,添加log后点击ok分支便建立了。这个操作速度非常快,新建的branch在repository中其实只是一个指向 trunk某个revision的软连接而已,并没有真的复制文件。

5、Check out分支

右键TestSVN目录选择"TortoiseSVN Update"即可将刚刚建立的分支下载回本地。进入/branches/MyProject目录下你会发现其文件结构和/trunk/MyProject一模一样。

6、branch提交一个新文件

7、trunk紧接着提交一个修改

8、branch再次提交一个修改

9、将trunk中的修改同步到branch

6-8演示的是branch和trunk在独立、并行地开发。为了防止在“错误”的道路上越走越远,现在branch意识到是时候和trunk来一次同步了(将trunk合并到branch)。

首先,在本地trunk中先update一下,有冲突的解决冲突,保证trunk和repository已经完全同步,然后在/branches /MyProject上右键,依次选择"TortoiseSVN" -> “Merge...”,在弹出的窗口中选择第一项"Merge a range of revision",这个类型的Merge已经介绍得很清楚,适用于将某个分支或主线上提交的多个revision间的变化合并到另外一个分支上。

点击next后,出现如下窗口:

由于是要从trunk合并到branch,理所当然这里的"URL to merge from"应该填trunk的路径,"Revision range to merge"很好理解,就是你要将trunk的哪些revision所对应的变化合并到branch中,可以是某一连串的revision,比如 4-7,15-HEAD,也可以是某个单独的revision号。由于在r4中,trunk修改了Person.java中的talk()方法,所以这里 的revision只需填4即可。点击next后出现下图:

在这里只需保留默认设置即可。在点击Merge按钮前你可以先Test merge一把,看成功与否,以及merge的详细信息。点击Merge按钮后trunk所做的修改将同步到branch中。

10、提交合并后的branch

至此,branch已经完全和trunk同步,branch和trunk的代码相处很融洽,没有任何冲突,如果branch已经开发结束,那是时候将branch合并回trunk了,当然,如果branch还要继续开发,那你将不断地重复6-10这几个步骤。

11、将branch合并回trunk

在/trunk/MyProject上右键(注意是在主线的目录上右键),依次选择"TortoiseSVN" -> "Merge...",在弹出的窗口中,Merge type选择第二项"Reintegrate a branch",这种类型的合并适合在分支开发结束后将所有的改动合并回主线。

(如果没有Reintegrate a branch可以直接选第一项)

点击next后出现如下窗口:

在这里,"From URL"选择/branches/MyProject,无需选择revision号,Reintegrate会将branch上所有修改合并到 trunk。后面的步骤和上文第9步中的一样,不再啰嗦了。如无意外,branch将成功合并到trunk,你需要做的只是将合并后的trunk赶紧 commit!

12、提交合并后的trunk

so easy...

13、删除branch

如果你认为你新加的功能已经开发完成了,你可以删除你的分支

到这里,我已经给你演示完了整个过程,我一身的汗也下来了,我想罢工了,不过最后我们还是看看所有的log信息吧,通过log能发现我们干的所有事情:

r1-r7正是我上文在干的事情,从Message中你能发现我对trunk和branch都干了什么,另外,在Log Messages窗口的左下角勾选了"Include merged revisions"你还能看到额外的Merge information:

图中灰色的是和merge相关的log,共发生了两次merge,第一次是在r6,在r6中,branch合并了trunk在r4时提交的变化;第二次是在r7,在r7中,trunk合并了branch从r2到r6的所有变化。

终于可以写写总结了:

  • branch主要用于新功能的开发
  • 合并发生在本地working copy,只要你不提交就不会影响到repository
  • 合并前一定要先update、commit,保证不会out of day,并将本地的修改保存到repository
  • branch和trunk并行开发的过程中,要经常同步,将trunk的修改合并到branch,合并时选择"Merge a range of revision"
  • branch最后合并回trunk时,merge type选择"Reintegrate a branch"

文章引自:http://blog.csdn.net/eggcalm/article/details/6606520

时间: 2024-10-30 17:49:53

SVN的部署及分支等方法的相关文章

SVN 主干(trunk)、分支(branch )、标记(tag)

主干(trunk).分支(branch ).标记(tag) 在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆. 在实现上,branch和tag,对于svn都是使用copy实现的,所以他们在默认的权限上和一般的目录没有区别.至于何时用tag,何时用branch,完全由人主观的根据规范和需要来选择,而不是强制的(比如cvs). 一般情况下, trunk:是用来做主方向开发的,一个新模块的开发,这个时候就放在trunk,当模块开发完成后,需要修改,就用branch. branch

SVN迁移部署

迁移svn并修改目录结构的方法 http://blog.csdn.net/jianxin1009/article/details/8220461 测试成功的命令: svnadmin –parent-dir 子目录  版本库路径 <dump文件 常用svn命令: http://blog.csdn.net/wzq9706/article/details/7319728 SVN版本控制与分支设置: http://blog.sina.com.cn/s/blog_56d8ea900100y9cf.html

SVN下最高效打基线方法

作者:张克强    作者微博:张克强-敏捷307 2014/7/6 方法一来自于我的一条微博: 组织级scm建一个名为controlled的目录,当项目某文档通过评审后,组织级scm从项目目录下找到那文档,复制到controlled目录下.请@scmeye软件配置管理社区 @E路向前--李忠利 @火星人陈勇 点评下这做法 针对方法一的点评如下 邱润HW:有什么东西是可以完全被控制的吗?假如没有,那就没意义,假如有,用目录这样做控制,应该不仅仅只是命个名字吧. (3月27日 08:54) 火星人陈

SVN服务器部署--mod_dav_svn

Svn服务器部署 svn简介 Subversion是一个免费/开源的版本控制系统, Subversion 可以跨越时间地对文件和目录, 以及它们的修改进行管理. 这就允许你恢复 数据的旧版本, 或检查数据的修改历史. 由于这个特点, 很多人把版本控制系统 看成是一种 "时间机器". Svn的组件 svn 客户端命令行工具 svnversion 用于报告工作副本状态 (就项目的版本号而言) 的工具 svnlook可以直接检查仓库的工具 svnadmin 用于创建, 调整或修复 Subve

linux下SVN忽略文件/文件夹的方法

linux下SVN忽略文件/文件夹的方法 假设想忽略文件temp 1. cd到temp所在的目录下: 2. svn propedit svn:ignore . 注意:请别漏掉最后的点(.表示当前目录),如果报错请看下面 3. 打开的文件就是忽略列表文件了(默认是空的),每一行是一项,在该文件中输入temp,保存退出 4. svn st查看状态,temp的?状态已经消除了 如果在svn propedit svn:ignore .时报错:svn: None of the environment va

svn常用命令与分支操作

创建分支 svn cp -m "create branch" http://svn_server/xxx_repository/trunk http://svn_server/xxx_repository/branches/br_feature001 获得分支 svn co http://svn_server/xxx_repository/branches/br_feature001 合并主干上的最新代码到分支上 cd br_feature001 svn merge http://sv

tomcat部署项目三种方法

1.直接把项目复制到Tomcat安装目录的webapps目录中,这是最简单的一种Tomcat项目部署的方法,也是初学者最常用的方法. 2.在tomcat安装目录中有一个conf文件夹,打开此文件夹,其中包含配置文件server.xml,打开配置文件,并在<host>和</host>之间插入如下语句. <Context    path="/hello"   docBase="F:\eclipse3.2\workspace\hello\WebRoot

apache下 使用svn自动部署代码

碰到一个问题 svn不能ftp ftp又不能svn有没有一个办法把两个联系起来呢? 其实不需要svn自带的hooks(钩子)功能足以满足你得需求 svn配置和设置可以网上直接找到.直接说怎么配置自动同步功能.在svn的目录下 /www/svn/repos/hooks  有的文件 post-commit.tmpl 这个就是需要修改的文件也就是在svn有commit的时候我们需要做的 1.设置需要更新的目录 直接在配置好的首页对应的目录里面checkout一下 2.修改 post-commit.tm

win2008部署webapi2的解决方法

把上周在家电脑上可以部署的webapi示例拿到服务器上,结果遇到许多问题.不过还算解决了,现记录一下方法. 1.win2008安装iis. 是从角色里安装Web 服务器(IIS) 和应用程序服务器.注意把asp.net勾选 . 2.添加网站,修改web.config 添加后,提示targetFramework无效,删掉可以用. 3.请求index.html 页面能打开,但所有 的api/*的请求无效.  .net代码环境不对吗? 4.写了个webform1.aspx,用.net来输出当前时间.