淘先锋技术网

首页 1 2 3 4 5 6 7

工作副本怎样跟踪版本库

对于工作副本的每一个文件,Subversion 在管理目录 .svn/ 记录两项关键的信息:

当前工作副本的基准版本 ( file’s working revision ), 还有就是一个本地副本最后更新的时间戳。


给定这些信息,通过与版本库通讯,Subversion 可以告诉我们工作文件是处与如下四种状态的那一种:

  1. 未修改且是当前的
    文件在工作目录里没有修改,在工作版本之后没有修改提交到版本库。svn commit 操作不做任何事情,svn update 不做任何事情。
就是说在你update后,没有人提交过此文件的更改,同时你也没有在这个文件中有任何更改,
这份文件和版本库中的文件是一模一样的
  1. 本地已修改且是当前的
    工作副本已经修改,从基准版本之后没有修改提交到版本库。本地修改没有提交,因此 commit 会成功的提交,update 不做任何事情。
意味着版本库里的这份文件已经过期,你这份才是最新的,你此时update不会做任何事,
它不会覆盖掉你工作副本的任何改动,因为你当前的工作副本意味着是最新的版本,SVN
不会对它做任何改动
  1. 本地未修改且过时
    这个文件在工作副本没有修改,但在版本库中已经修改了。这个文件应当更新到最新公共版本。commit 不做任何事情,update 将会更新工作副本到最新的版本。
你这个版本的文件其实已经过时,而且你也没有要修改它的意思,当你更新时,新的版本会
覆盖掉你现在的文件,当你commit,什么事也不会发生.(其实SVN在你提交时,会先让你更新,防止
你把版本库的新版本给覆盖掉)
  1. 本地已修改且过时
    这个文件在工作副本和版本库中都被修改了。提交 该文件将会因为 过时 而失败。该文件应该先更新; 更新 命令将会尝试合并公共更改和本机更改。如果 Subversion 不能顺利的自动完成合并,则需要用户解决冲突。
为啥会失败,这是因为的基础版本号低,现在版本库里这个文件的版本高,你update后,就会显示冲突,好了,开始解决冲突吧