SVN使用经验心得二

来源:互联网 发布:2016年学什么编程语言 编辑:程序博客网 时间:2024/05/03 16:05
 

11、即使客户端的文件test.doc被重命名了hello.rtf(使用svn重命名),但它的历史纪录仍然含有重命名以前的信息,并且可以将之前的版本给提取出来。即使再新建一个test.doc也不会有混淆。(查看历史纪录的时候需要把Stop on copy/rename这个选项的复选框的勾去掉)

 

12SVN的复制比较特殊,如果复制一个目录,它其实并没有完全复制目录中的所有的文件,它只是建立一个目录树的入口,你可以把它理解为一个快捷方式,即使当你的新目录中的文件有了更改,它也只是更新你修改的文件,其他文件还是原文件夹的映射,没有更改。

 

13、对主干和分支上文件的修改互不影响。当完成了分支上所有工作,所有的分支修改可以被拷贝回到主干。

 

14、对同名文件的合并可以先用svn diff查看文件的区别,然后通过svn merge功能来合并文件。

 

15、如果需要解决版本的冲突,会在本地目录下产生同名的三个文件,初始的版本(在比较的左边)、最终的版本(在比较的右边)、接收区别的工作拷贝(合并的目标)。通过比较来手动合并版本,如果通过比较不需要将本地的修改合并到服务器上去,则使用revert回滚。

 

16、手工跟踪合并:SVN并不能完全自动合并冲突,比较合适的方法是在版本提交的日志信息中说明合并的特定版本号(或是版本号的范围),这样等到合并时可以运行svn log来查看分支包含了哪些修改。这样可以帮助依序进行合并而不会进行多余的合并。

 

17、预览合并:当工作拷贝已经改变,合并会针对存在的那一个文件,这时运行revert不会恢复在本地的修改,两部分的修改无法识别出来。解决这个问题的简单的方法就是使用diff来预览变化部分,通过显示合并时的状态信息,得到合并之后的“整体”预览。

 

18svn diffsvn merge的区别:

    test.doc版本100重命名为ceshi.doc,同时新建一个文件test.doc为版本102

    这样区别就出来了:

    svn diff命令忽略祖先,diff命令只是单纯地比较两条路经下的两个文件。

    svn merge是比较两个对象,会注意到版本100和版本102test.doc两个文件是不关联的。

 

19SVN并没有真正意义上的重命名,move命令只是copydelete两个命令的组合。

 

20、找回删除的项目:即使删除了文件或目录,SVN的信息从不丢失,只是从当前的HEAD版本消失了,但仍然存在于历史的早期版本。只要通过SVNlog来查看所有改变的每个项目的版本,找出你删除文件或目录的那个版本。