svn使用总结

来源:互联网 发布:phpmyadmin for linux 编辑:程序博客网 时间:2024/06/14 22:21

svn大家都知道是版本控制工具,可以用来管理文件系统的版本,抑或对于程序员来说用来管理代码项目的版本,当然我是一个程序员,用它主要用在代码的管理上,在工作中用过一段时间,其实也没有在网上去刻意查询svn的用法与注意点,下面正文总结下算是自己在工作中的使用细节与经验。如有理解错误欢迎指正。

svn版本号

svn的版本号从1开始递增,每次提交修改版本号加1。这句话说起来确实蛮简单,但是其中有一些细节需要知道。

  1. 从建库开始,建库这个操作就是一次提交,这次版本号为1
  2. head revision是指当前最后一次提交的版本号,你可以理解它为库的版本号
  3. 每一次提交,只有涉及到修改的文件的版本号才会变化,而这些文件的版本号变为提交之前整个库最大版本号加1,而整个库最大版本号n其实就是第n次提交
  4. 所以svn每个文件的版本号历史情况并不一定是连续的,除非每次提交都涉及那个文件的变动
  5. svn的提交版本号是同步的,按时间递增的,意思是提交是按顺序排队的,不可能两个提交有相同版本号,所以提交都是承上启下的,而且通常来说每一个文件的修改都是基于其最新的版本号来做变动,否则无法自动解冲突就只有提交失败
  6. 依据上面的规则,svn可以安全准确检出历史版本
  7. 检出某一revision n的依据是,对于所有文件,每个文件的revision m,即版本号,满足,n-m>=0,且n-m应为最小,其实就是拿出那个文件所有历史记录的版本号,选取其中一个版本号,要求这个版本号不能大于要检出的版本号n,但可以等于,而同时又最靠近要检出的版本号n
  8. 文件夹的变动,即文件夹被删除或文件夹里面内容发生变化,文件夹的版本号都会更新

svn日常操作

svn删除

  1. svn的删除不要随意直接用windows/linux,即基于文件操作系统的删除,否则svn后来会发现missing,要用svn自己的删除命令,好让svn知道你这些文件确实不需要了,这或许是其安全考虑吧,毕竟删除操作很关键
  2. 如果要删除文件夹,即代表要删除文件夹下递归到的所有文件与文件夹,如果其下有一个文件没有纳入要删除的列表,都是提交不成功的

svn改名

  1. 同上,我们对一个文件或者文件夹进行改名,也不要基于文件系统的方式直接去改名,也要用svn自己的rename命令
  2. 事实上改名对应svn的提交分两步,第一部拷贝原文件或文件夹(包括文件夹下所有文件)到同目录下,把拷贝的文件或文件夹改为目标名,也就是svn里的add操作,第二部就是删除原文件或文件夹(同样包括文件夹下所有内容),也就是svn里的delete操作

svn新增

  1. 以上的改名事实上也有add操作,而对于我们自己手动添加一个文件,这个文件并没有被svn纳入到版本控制工具,所以需要我们手动add下即可
  2. 对于一个文件夹下的一个文件被纳入版本控制,很自然包含它的逐级父文件夹都必须纳入版本控制

svn修改

  1. 对于已纳入版本控制的文件的修改操作的提交比较简单,每一次修改自动追踪改变,提交时指明变动的文件即可
  2. 而对于已经提交的修改,我们可以查看提交日志,追踪变动,对于文本文件,我们可以show diff审核具体变动

本节讲到了比较深入的svn版本号递增原则,可以透过它深刻理解svn的版本管理机制,同时介绍了日常操作注意的地方。后期有时间,我会深入剖析svn分支原理,分支管理方案,以及开源git版本控制工具的优势和用法。

1 0
原创粉丝点击