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目录的“原始”拷贝,把文件恢复到未修改的状态!