京山游侠

专注技术,拒绝扯淡
posts - 50, comments - 868, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

上一篇中,我使用Subversion建立了自己的版本库,服务器端使用的是Subversion自带的工具svnserve。当然,实际应用中更流行的是使用httpd搭配Subversion模块。使用httpd的安装和配置方法见http://www.blogjava.net/jarod/archive/2007/10/27/156372.html

建立服务器后,就可以使用它来工作了。我先建立了一个Hello World工程,然后将它导入到版本库。由此可见,向版本库中导入数据,是使用版本库的第一个步骤,然而,这个步骤并不常用,因为每个项目只需要导入一次而已。

假设youxia导入这个工程后,就下班回家休息了,但是onionz是一个夜猫子,他在晚上又对这个工程进行了更改。第二天一早,youxia又开始他的工作,他想知道在他休息的时候项目有什么新的进展,这个时候,他可以在项目名上点鼠标右键,从快捷菜单中选择“比较对象”->“资源库中的最新内容”,如下图:

01.png

从下面图中可以看到,有哪些文件进行了更改,也可以看到改变的是这些文件的哪几行:
02.png

看完之后,youxia应该把版本库中的最新内容更新到他的工作拷贝中,以便进行他这一天的工作。他可以选在快捷菜单中的“小组”->“更新”,如下图:

03.png

这个时候,版本库中的最新内容就会被下载到youxia的工作拷贝中,下图是控制台的输出内容,其中文件名前的“A”代表这个文件是新增加的,而“U”代表这个文件是被更改过了的。如下图:

04.png

由于截图太占用屏幕空间,因此,下面的菜单操作将不再提供图片了,毕竟,跟SVN有关的操作都在“小组”和“比较对象”这两个菜单中,用起来也很简单。

这个时候,youxia就可以使用他的工作拷贝来进行他的工作了。在他完成修改后,他需要把他的工作提交到服务器。不过且慢,再提交之前还是先看看今天做了哪些工作,要检查清楚,不然,有可能把不小心进行的误操作也提交到版本库。要查看做了哪些修改,可以选择菜单“比较对象”->“基本修订版”,比较结果如下图:

05.png

在这里,我要对“基本修订版”做一个解释,什么是基本修订版呢?我们可以理解成我们刚刚更新后存储在工作拷贝中的版本,也就相当于我们的工作还没开始进行时的内容。因此,这个比较得到的结果就是我们今天工作的成果。在这个强大的IDE中,其实并不一定需要执行这个命令,只要看看工作台左边的“包资源管理器”,文件图标发生了变化的文件,都是被修改过了的。

确认之后,点击快捷菜单“小组”->“提交”,youxia就把他今天的所有工作都提交到版本库中了。

以上的流程,比较类似于单用户工作的模式,没有冲突发生。整个过程可以总结为“更新”——“修改”——“提交”,中间夹杂着两次“比较”,其实要不要比较也无所谓。然而现实工作中往往比这要复杂得多,极有可能是多个用户在同时编辑同一个文件,当你想提交的时候,版本库中的内容已经发生了改变。

如果发生冲突,提交过程会失败,如下图:

06.png

这个时候,就需要再一次点击快捷菜单“小组”->“更新”,所有的冲突就可以体现出来了,如下图:

07.png

这个时候,就需要和修改了该文件的程序员进行沟通了,在达成一致后,才能决定这个文件最终保留什么内容。切不可在没有沟通的情况下随便删掉别人的内容,那太不尊重人了,除非你是这个项目的老总。形式上的修改之后,还要考虑到这么修改以后软件是否可以正常运行,这就离不开单元测试了。测试通过之后,可以点击快捷菜单“小组”->“标记为已解决”来告诉SVN冲突已经被解决了。最后,点击“小组”->“提交”,将最后的修改提交到版本库。

 在有冲突发生时,整个过程可总结为“更新”——“修改”——“试提交”——“沟通”——“解决冲突”——“单元测试”——“提交”。


评论

# re: 使用Subversion进行源代码管理(三):常用操作  回复  更多评论   

2008-05-03 18:55 by SVN开源社区
不错http://www.svnhost.cn

# re: 使用Subversion进行源代码管理(三):常用操作  回复  更多评论   

2008-07-12 10:24 by 莫愁
不知道是不是原创,文章写的不错!
有点缺憾是关于冲突部分介绍的不够详细,有些让人费解,能够把冲突的解决在介绍详细些就更好了

# re: 使用Subversion进行源代码管理(三):常用操作  回复  更多评论   

2009-03-20 22:05 by swanky
我一直以为,出现这种冲突,是技术上的问题,以为自己操作的错误,以为还有更好的方法来处理,原来,碰到这种问题,还真难办。虽然这些都会,但还是受益匪浅!

只有注册用户登录后才能发表评论。


网站导航: