天天看点

Subversion(SVN)使用

Subversion典型的工作周期是这样的:

更新你的工作拷贝

svn update

做出修改

svn add

svn delete

svn copy

svn move

检验修改

svn status

svn diff

可能会取消一些修改

svn revert

解决冲突(合并别人的修改)

svn update

svn resolved

提交你的修改

svn commit

http://www.uml.org.cn/pzgl/2009032010.asp

http://www.yuanma.org/data/2009/0401/article_3598.htm

http://www.subversion.org.cn/svnbook/1.4/index.html

总结:在Commit前要Update一次,这样合并了别人的最新修改Commit才能成功!

(Commit时会检查本地版本号和版本库中的最新版本号,只有相同才能成功!!)

大多数情况下合并失败很少,如果最新版本的文件跟你修改交叠了这样就产生了冲突,

对于每一个冲突的文件,Subversion放置三个额外的未版本化文件到你的工作拷贝:

l         filename.mine

你更新前的文件,没有冲突标志,只是你最新更改的内容。(如果Subversion认为这个文件不可以合并,.mine文件不会创建,因为它和工作文件相同。)

l         filename.rOLDREV

这是你的做更新操作以前的BASE版本文件,就是你在上次更新之后未作更改的版本。

l         filename.rNEWREV

这是你的Subversion客户端从服务器刚刚收到的版本,这个文件对应版本库的HEAD版本。这里OLDREV是你的.svn目录中的修订版本号,NEWREV是版本库中HEAD的版本号。

但对于二进制格式,例如艺术品或声音,在这种情况下,十分有必要让用户轮流修改文件,因为它们的合并通常失败。尽管Subversion一直主要是一个拷贝-修改-合并系统,但是它也意识到了需要锁定一些文件,并且提供这种锁定机制(不是离线的)。

一旦你解决了冲突,你需要通过命令svn resolved让Subversion知道!

Revert是离线操作,用.svn目录的“原始”拷贝,把文件恢复到未修改的状态!

继续阅读