《svn客户端使用手册(使用精华)》由会员分享,可在线阅读,更多相关《svn客户端使用手册(使用精华)(14页珍藏版)》请在金锄头文库上搜索。
1、1TotoiseSVN 的基本使用方法1.1 签入源代码到 SVN 服务器假如我们使用 Visual Studio 在文件夹 StartKit 中创建了一个项目,我们要把这个项目的源代码签入到 SVN Server 上的代码库中里,首先右键点击StartKit 文件夹,这时候的右键菜单如下图所示:点击 Import,弹出下面的窗体,其中 http:/ 是服务器名,svn 是代码仓库的根目录,StartKit 是我们在上个教程中添加的一个代码库。说明:左下角的 CheckBox,在第一次签入源代码时没有用,但是,在以后你提交代码的时候是非常有用的。点击 OK 按钮,会弹出下面的窗体,要求输入凭据
2、2源代码已经成功签入 SVN 服务器了。这时候团队成员就可以迁出 SVN 服务器上的源代码到自己的机器了1.2 签出源代码到本机在本机创建文件夹 StartKit,右键点击 Checkout,弹出如下图的窗体:3在上图中 URL of Repository:下的文本框中输入 svn server 中的代码库的地址,其他默认,点击 OK 按钮,就开始签出源代码了。说明:上图中的 Checkout Depth,有 4 个选项,分别是迁出全部、只签出下一级子目录和文件、只签出文件、只签出空项目,默认的是第一项。上面的例子中,我们也可以使用 web 的方式访问代码库,在浏览器中输入http:/ Sta
3、rtKit 目录中。打开 StartKit 目录,可以看到如下图的文件夹结构:一旦你对文件或文件夹做了任何修改,那么文件或文件夹的显示图片机会发生变化。下图中我修改了其中的二个文件(附:不同状态所对应的图片 )4现在我们已经知道怎么将源代码签入到 SVN 服务器,怎么从服务器签出代码到本机,也简单了解了不同状态所对应的图案啦。1.3 提交修改过的文件到 SVN 服务器上面的图 2-2-7 中,我修改了位于 Model 文件中的二个文件 ImageInfo.cs和 NewsInfo.cs,下面演示如何提交到 SVN 服务器。注意:提交源代码到服务器时,一定确保本机的代码是最新版本,否则可能提交失
4、败,或者造成版本冲突。在 Model 文件夹上点击右键或在 Model 文件下的空白处点击右键,点击SVN Commit弹出下面的窗体:5点击 ok。1.4 添加新文件到 SVN 服务器我们在 Model 文件下添加一个新的类文件 UserInfo.cs,在 Model 文件下的空白处点击右键,点击 SVN Commit,和上面讲的提交修改过的文件到 SVN服务器一样,就可以了。另外也可以在文件 UserInfo.cs 上点击右键,点击 TortoiseSVN=Add,弹出如下图的窗体:6选中 UserInfo.cs 文件,点击 OK 按钮,这样并没有将这个文件提交到 SVN服务器,只是将这个
5、文件标记为源代码库库中的文件,并将其状态置为修改状态。之后,我们要再 SVN Commit 这个文件一次,才可以将其真正提交到 SVN 服务器上的代码库中。1.5 更新本机代码与 SVN 服务器上最新的版本一致这个也很简单,只要在需要更新的文件夹上点击右键或在该文件下的空白处点击右键,点击 SVN Update,就可以了。注意:更新操作可能会因为版本冲突而失败,这是可以使用合并【Merge】或其他方法解决;也可能因为锁定【Get Lock】而失败,这是需要先解锁【Release Lock】。1.6 重命名文件或文件夹,并将修改提交到 SVN 服务器只要在需要重命名的文件或文件夹上点击右键,点击
6、TortiseSVN=Rename,在弹出的窗体中输入新名称,点击 OK 按钮,就可以了。此方法也不是直接重命名,而是将该文件或文件夹的名称标记为重命名后名称,也需要我们使用 SVN Commit 提交到 SVN 服务器后才真正重命名。1.7 删除文件或文件夹,并将修改提交到 SVN 服务器最简单就是,你直接删除文件或文件夹,然后使用 SVN Commit 提交更新到SVN 服务器。另外一种方法是在你要删除的文件或文件夹上点击右键=TortoiseSVN=Delete 删除,此方法也不是直接删除,而是将该文件或文件夹的状态置为删除,也需要我们使用 SVN Commit 提交到 SVN 服务器后
7、才真正删除。说明:实际上,从你把源代码迁签入 SVN 服务器开始,每一个版本的数据7和文件,就算是你已经删除了的,也都可以随时迁出。注意:向 SVN 服务器提交源代码的时候,一定不要提交 bin、obj 等文件夹,否则会很麻烦。但是 web 项目的 bin 目录除外,但是 web 项目的 bin 目录中的引用其他项目而生成的 dll 不需要提交。1.8 .版本冲突原因:假设 A、B 两个用户都在版本号为 100 的时候,更新了 kingtuns.txt 这个文件,A 用户在修改完成之后提交 kingtuns.txt 到服务器,这个时候提交成功,这个时候 kingtuns.txt 文件的版本号已
8、经变成 101 了。同时 B 用户在版本号为 100的 kingtuns.txt 文件上作修改,修改完成之后提交到服务器时,由于不是在当前最新的 101 版本上作的修改,所以导致提交失败。版本冲突现象:冲突发生时,subversion 会在当前工作目录中保存所有的目标文件版本上次更新版本、当前获取的版本(即别人提交的版本)、自己更新的版本、目标文件。假设文件名是 kingtuns.txt对应的文件名分别是:kingtuns.txt.r101kingtuns.txt.r102kingtuns.txt.minekingtuns.txt。同时在目标文件中标记来自不同用户的更改。版本冲突解决:场景:1
9、、现在 A、B 两个用户都更新 kingtuns.txt 文件到本地。82、文档中原始文件内容如下:93、A 用户修改文件,添加内容“A 用户修改内容”完成后提交到服务器4、B 用户修改文件,添加内容“B 用户修改内容”完成后提交到服务器10B 用户提交更新至服务器时提示如下:B 用户将文件提交至服务器时,提示版本过期:首先应该从版本库更新版本,然后去解决冲突,冲突解决后要执行 svn resolved(解决),然后在签入到版本库。在冲突解决之后,需要使用 svn resolved(解决)来告诉 subversion 冲突解决,这样才能提交更新。解决冲突有三种选择:A、放弃自己的更新,使用 s
10、vn revert(回滚),然后提交。在这种方式下不需要使用 svn resolved(解决)11B、放弃自己的更新,使用别人的更新。使用最新获取的版本覆盖目标文件,执行 resolved filename 并提交(选择文件右键解决)。C、手动解决:冲突发生时,通过和其他用户沟通之后,手动更新目标文件。然后执行 resolved filename 来解除冲突,最后提交。解决步骤如下:1、 在当前目录下执行“update”(更新)操作2、 在冲突的文件上(选中文件-右键菜单TortoiseSVNEdit conflicts(解决冲突),出现如下窗口Theirs 窗口为服务器上当前最新版本Mine
11、 窗口为本地修改后的版本Merged 窗口为合并后的文件内容显示123、 如果要使用服务器版本,在 Theirs 窗口选中差异内容,右键,选择Use this text block(使用这段文本块)。同理如果要使用本地版本,在协商后,在 Mine 窗口右键,选择 Use this text block(使用这段文本块)。134、 修改完成后,保存 kingtuns.txt 文件内容。5、 在 B 用户的冲突目录下,选中文件-右键菜单TortoiseSVNResolved(解决)。会列出冲突的文件列表,如果确认已经解决,点OK。6、 冲突解决147、提交解决冲突后的文件。如何降低冲突解决的复杂度:1、当文档编辑完成后,尽快提交,频繁的提交/更新可以降低在冲突发生的概率,以及发生时解决冲突的复杂度。2、在提交时,写上明确的 message,方便以后查找用户更新的原因,毕竟随着时间的推移,对当初更新的原因有可能会遗忘3、养成良好的使用习惯,使用 SVN 时每次都是先提交,后更新。每天早上打开后,首先要从版本库获取最新版本。每天下班前必须将已经编辑过的文档都提交到版本库。