接续“基于SVN构建版本机及所遇到的问题-1”。app
二、发布ide
项目右键菜单“发布”后,并修改文件夹:测试
点击“发布”按钮,输出窗口提示以下:spa
进入资源管理器查看本地项目目录:3d
Publish目录仍是问号,前后执行Add(右键弹出菜单-->ToitorseSVN-->Add)和Commit(右键弹出菜单-->Commit),变为绿勾:orm
交付人员能够在其余PC上使用TortoiseSVN来checkout这个发布目录,并部署之。blog
SVN多半都是由许多人共同使用。一样的档案可能还有人会去进行编辑。为了确保工做目录中的代码文件与Repository是同步的。在编辑前都先进行更新的动做。前提是:已经将代码文件check out过一次。ci
假设另一个同事通知你修改了Program.cs,则点击Program.cs右键弹出菜单的“Update”:资源
执行Update后显示:开发
表示更新完成。
尽管推荐按文件更新,可是万一不知道更新了哪一个文件,能够执行解决方案的右键弹出菜单的“Update”,来更新整个解决方案。
若是想要回退到某个老版本,可使用该功能:
执行后:
点击“Show log”:
点击版本1确认:
执行OK:
成功更新到版本1.
创建分支的目的可能有:
(1)开发分支:从主干复制一份来修改,修改完了后合并到主干。
(2)老版本分支:老版本已经封闭,新版本准备开发,可是老版本还须要修改须要修改,因而从主干分出一份来继续老版本的修改。
(3)测试版本/正式版本分支:发布软件测试版本或者正式版本,用来测试部署或者正式部署。
(4)补丁版本分支:由于bug还须要建个补丁,不包括所有文件,保留须要更新的文件便可。
后两种实际上都是Release,这些版本有特别的意义,特别的Milestone或是release给客户的版本。后两种都不须要merge回trunk中。举例来讲,今天咱们的trunk作了一版,这个版本被认定是软件的1.0版。1.0版对于开发来讲是一个很是重要的里程碑。因此咱们要特别为他作一个标记,亦即Tag。假设,这个 1.0版是要正式release给客户或是相关vendor,咱们要能够为他作一个Release的标记。基本上,SVN只有目录的概念,并无什么 Tag的用法。因此SVN的菜单上面,Branch与Tag是同一个菜单。以这个1.0的例子来讲,就是在Trunk上面,按下鼠标右键,选择Branch/Tag的菜单。
首先,建个branches目录,并Add,Commit,结果以下:
而后,右键菜单:
执行“Branch/tag...”:
上图的“Log Message”应该输入一些说明文字。点击OK后:
分支V1.1创建成功,可是要先更新branches目录才能看到:
下图看到branches目录是空的:
执行update后看到:
还能够指定版本创建分支:
在开发分支上开发的代码文件每每须要合并到主干(trunk)中,有时候老版本分支和补丁分支也须要合并到主干中。
5.2节创建的项目的主干在哪里?实际上就是D:\测试项目\TestProject。
先修改V1.1这个branch的文件:
上图的Program.cs正在修改中或者是代码文件在本地已经被修改,图标上的感叹号就是这个意思。Commit后表示V1.1和主干不一样了。
在资源管理器该目录下空白处右键:
执行“Merge...”:
选择第一个,“next >”:
在“URL to merge from”下面,点击“...”选择须要合并分支。
在“Revision range to merge”中指定须要合并的revision,这里选择版本5。
点击“Next...”:
点击“Test merge”先测试一下:
这表示合并极可能不会错误,确认后返回,点击“Merge”:
进入主干目录:
感叹号表示Program.cs已经被修改了。检查一下内部代码,便可提交。
当有两我的同时编辑一个文件,第一我的提交时是正常的,第二我的提交时会提示更新工做副本,点肯定更新时会出现版本冲突。当一个文件出现冲突时,文件的图标为×××的感叹号。
提交后提示错误:
再如:
对于每一个冲突的文件,SVN在你的目录下放置了三个文件:
这个时候,一种选择:先Update再提交。可是,可能会在代码文件中出现:
<<<<<<< .mine
6666666666666600000
=======
66666666666aaaaaaaaaa666
>>>>>>> .r16
因此,最好是选择revert:
这时候,放弃了本身的修改。而后再使用备份文件从新修改回来。
还有两种选择:
一、在冲突提示上右键菜单有三个选项:
(1)直接标记已解决,至关于忽略;
(2)以theirs为准,就是放弃本身,认可其余人修改的
(3)以mine为准,就是坚持本身,抛弃其余人的
二、删除工做目录,从新拉取代码