接续“基于SVN构建版本机及所遇到的问题-1”。
2、发布
项目右键菜单“发布”后,并修改文件夹:
点击“发布”按钮,输出窗口提示如下:
进入资源管理器查看本地项目目录:
Publish目录还是问号,先后执行Add(右键弹出菜单–>ToitorseSVN–>Add)和Commit(右键弹出菜单–>Commit),变为绿勾:
交付人员可以在其他PC上使用TortoiseSVN来checkout这个发布目录,并部署之。
5.5 Update
SVN多半都是由许多人共同使用。同样的档案可能还有人会去进行编辑。为了确保工作目录中的代码文件与Repository是同步的。在编辑前都先进行更新的动作。前提是:已经将代码文件check out过一次。
假设另外一个同事通知你修改了Program.cs,则点击Program.cs右键弹出菜单的“Update”:
执行Update后显示:
表示更新完成。
尽管推荐按文件更新,但是万一不知道更新了哪个文件,可以执行解决方案的右键弹出菜单的“Update”,来更新整个解决方案。
5.6 Update to Revision
如果想要回退到某个老版本,可以使用该功能:
执行后:
点击“Show log”:
点击版本1确认:
执行OK:
成功更新到版本1.
5.7 Branch
建立分支的目的可能有:
(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后看到:
还可以指定版本建立分支:
5.7 Merge
在开发分支上开发的代码文件往往需要合并到主干(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已经被修改了。检查一下内部代码,即可提交。
5.7 conflict和revert
当有两个人同时编辑一个文件,第一个人提交时是正常的,第二个人提交时会提示更新工作副本,点确定更新时会出现版本冲突。当一个文件出现冲突时,文件的图标为×××的感叹号。
提交后提示错误:
再如:
对于每个冲突的文件,SVN在你的目录下放置了三个文件:
这个时候,一种选择:先Update再提交。但是,可能会在代码文件中出现:
<<<<<<< .mine
6666666666666600000
=======
66666666666aaaaaaaaaa666
>>>>>>> .r16
所以,最好是选择revert:
这时候,放弃了自己的修改。然后再使用备份文件重新修改回来。
还有两种选择:
1、在冲突提示上右键菜单有三个选项:
(1)直接标记已解决,相当于忽略;
(2)以theirs为准,就是放弃自己,承认其他人修改的
(3)以mine为准,就是坚持自己,抛弃其他人的
2、删除工作目录,重新拉取代码
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/196525.html