浅谈AnkhSvn
不管是公司开发还是高校中的合作开发,做好版本和源代码控制始终是所有工作的前提。怎样保证团队中的每个成员能够及时的获取最新的工作进度?怎样避免团队成员在开发的时候产生修改冲突(最典型的就是两个人同时在修改同一个文件,最后提交的时候提示冲突,可能出现我们丢失掉自己所做的修改)?怎样才能使我们的开发工作提高效率(比如我们已经保存并提交了某个更改之后却发现修改有误,这种情况下我们需要撤销所作的更改)?怎样才能了解团队其他成员的工作进度(这是必要的,我们并不仅限于做好自己的本职工作)?怎样才能及时的发现并纠正代码的错误(参加过团队开发的你是否遇到过在本地版本上开发时遇到了错误,解决后需要到服务器版本上再次修改)?AnkhSvn和SoureSafe的出现在源码控制上给我们提供了解决思路。
一。AnkhSvn的使用:
1。AnkhSvn是一种对版本和源代码进行控制的工具。使用它我们可以做到随时随地的进行项目开发,摆脱了开发过程中空间的限制(当然,随时随地的条件是可以上网),同时解决了团队合作中的一个令人头疼的问题--修改冲突。以前我们用SourceSafe进行项目控制时,经常发生团队成员之间对同一段代码做了修改,而在提交时就会出错,时常出项代码的覆盖以及以及更改的丢失。同时AnkhSvn解决了我们无法查看对该解决方案所做更改(即view history)的问题,保证了代码提交的安全性,同时使我们每个人从担心代码冲突、代码覆盖的疑虑中解放出来,能够全身心投入项目开发中。
2。AnkhSvn的常用操作:
(1)建立本地的服务器版本。Subversion->Add to Subversion
此功能的作用是从源代码上获取一个服务器版本到本地上。
Subversion->Open from Subversion,然后再Url地址框中输入地址路径(注意:此处的协议头是https,它传输的安全性更高。),点击open按钮即可(第一次使用时需要制定获取服务器版本到本地的物理路径)。
(2)获取最新版本
打开解决方案后,点击右键有一个“Update to Latest Version”。
(3)提交(commit)、撤销(revert)
(4)撤销至某一个版本:右键你要撤销的文件(注意:在这里点击不同的文件的效果是不一样的,例如右键解决方案或者是类库或者是文件夹,只能在viewhistory或者viewsolutionhistory选项中撤销至你选定的版本;而如果右键某一个文件,例如。cs文件或者。aspx文件,除了上述选项,我们还可以选定任意的版本来show changes)。
(5)view history、view solution history、view project history三种浏览历史记录的方式。通过浏览历史记录我们可以了解版本信息、了解团队成员的工作情况。(注意:当点击相应的浏览历史记录的按钮时,在弹出框中有changed paths提示框,双击框中的记录可以查看具体的修改信息。)
(6)作副本
点击“视图”中的working copy explorer,然后再working copy folders中选定sln文件,点击上方的copyto图标选定一个存放副本的物理路径(注意必须是一个新的文件夹,而不能是已经存在的文件或文件夹)。
(7)Merge--版本合并。
最常用的merge方式就是以下两种:
((1))Merge a range of revisions
我的理解是可以合并一系列的不同版本,将不同版本上与本版本的不同之处进行合并。
((2))Reintegrate a branch
就是将分支版本上的修改返回到创建该分支版本的源版本,即主干版本或者其他。要使用这个方法要求这个分支版本不能再有任何本地修改,必须是一个单独的版本,不能有任何分支子版本。而且这个版本号必须高于或者等于要融合的最后的版本号。
3。常见问题解析:
(1)代码过时。通常会表现为当我们修改了某个文件的某段代码后准备提交时,当点击“commit”时提示part of your code is out of date。这说明我们在对这个文件进行修改时,同时有另外的成员在对这个页面进行修改,这时我们需要首先获取一下最新版本,如果别的成员做过的修改恰好是我们改动的部分,就会有形如“>>>>mine”和“<<<<XXXX”的错误,同时文件上可能会有一个“!”。一般“>>>>mine”下面的表示我们的代码,而“<<<<XXXX”下面的表示其他成员更改的代码。这时我们需要分析决定怎样处理这个错误,处理后要将“>>>>mine”和“<<<<XXXX”提示符删掉。
(2)修改冲突。有时候我们修改完毕以后将我们的工作提交后才获取最新版本(一般不提倡,最好的做法是提交前先获取最新版本,如果有问题处理问题),获取后开始“重新生成解决方案”出现了我们的web项目BlackJack.Web.csproj无法加载。这是由于我们做了自己的修改提交前并没有及时获取最新版本,导致代码中有重复修改的地方。这时我们需要右击BlackJack.Web.csproj有个选项是“编辑BlackJack.Web.csproj”,然后在打开的文件中搜索“mine”(目的是找到冲突地方),找出后进行分析取舍,完成后再次“重新生成解决方案”后加载web项目,这时就会出现,但因为代码中的冲突依然存在因此会有“!”提示我们,找到相关的冲突的文件处理后会发现文件前的图标变成了红色小方框,代表冲突解决我们就可以编译后提交了。