工作副本怎样跟踪版本库
对于工作副本的每一个文件,Subversion 在管理目录 .svn/ 记录两项关键的信息:
当前工作副本的基准版本 ( file’s working revision ), 还有就是一个本地副本最后更新的时间戳。
给定这些信息,通过与版本库通讯,Subversion 可以告诉我们工作文件是处与如下四种状态的那一种:
- 未修改且是当前的
文件在工作目录里没有修改,在工作版本之后没有修改提交到版本库。svn commit 操作不做任何事情,svn update 不做任何事情。
就是说在你update后,没有人提交过此文件的更改,同时你也没有在这个文件中有任何更改,
这份文件和版本库中的文件是一模一样的
- 本地已修改且是当前的
工作副本已经修改,从基准版本之后没有修改提交到版本库。本地修改没有提交,因此 commit 会成功的提交,update 不做任何事情。
意味着版本库里的这份文件已经过期,你这份才是最新的,你此时update不会做任何事,
它不会覆盖掉你工作副本的任何改动,因为你当前的工作副本意味着是最新的版本,SVN
不会对它做任何改动
- 本地未修改且过时
这个文件在工作副本没有修改,但在版本库中已经修改了。这个文件应当更新到最新公共版本。commit 不做任何事情,update 将会更新工作副本到最新的版本。
你这个版本的文件其实已经过时,而且你也没有要修改它的意思,当你更新时,新的版本会
覆盖掉你现在的文件,当你commit,什么事也不会发生.(其实SVN在你提交时,会先让你更新,防止
你把版本库的新版本给覆盖掉)
- 本地已修改且过时
这个文件在工作副本和版本库中都被修改了。提交 该文件将会因为 过时 而失败。该文件应该先更新; 更新 命令将会尝试合并公共更改和本机更改。如果 Subversion 不能顺利的自动完成合并,则需要用户解决冲突。
为啥会失败,这是因为的基础版本号低,现在版本库里这个文件的版本高,你update后,就会显示冲突,好了,开始解决冲突吧