11、即使客户端的文件test.doc被重命名了hello.rtf(使用svn重命名),但它的历史纪录仍然含有重命名以前的信息,并且可以将之前的版本给提取出来。即使再新建一个test.doc也不会有混淆。(查看历史纪录的时候需要把Stop on copy/rename这个选项的复选框的勾去掉)
12、SVN的复制比较特殊,如果复制一个目录,它其实并没有完全复制目录中的所有的文件,它只是建立一个目录树的入口,你可以把它理解为一个快捷方式,即使当你的新目录中的文件有了更改,它也只是更新你修改的文件,其他文件还是原文件夹的映射,没有更改。
13、对主干和分支上文件的修改互不影响。当完成了分支上所有工作,所有的分支修改可以被拷贝回到主干。
14、对同名文件的合并可以先用svn diff查看文件的区别,然后通过svn merge功能来合并文件。
15、如果需要解决版本的冲突,会在本地目录下产生同名的三个文件,初始的版本(在比较的左边)、最终的版本(在比较的右边)、接收区别的工作拷贝(合并的目标)。通过比较来手动合并版本,如果通过比较不需要将本地的修改合并到服务器上去,则使用revert回滚。
16、手工跟踪合并:SVN并不能完全自动合并冲突,比较合适的方法是在版本提交的日志信息中说明合并的特定版本号(或是版本号的范围),这样等到合并时可以运行svn log来查看分支包含了哪些修改。这样可以帮助依序进行合并而不会进行多余的合并。
17、预览合并:当工作拷贝已经改变,合并会针对存在的那一个文件,这时运行revert不会恢复在本地的修改,两部分的修改无法识别出来。解决这个问题的简单的方法就是使用diff来预览变化部分,通过显示合并时的状态信息,得到合并之后的“整体”预览。
18、svn diff和svn merge的区别:
将test.doc版本100重命名为ceshi.doc,同时新建一个文件test.doc为版本102。
这样区别就出来了:
svn diff命令忽略祖先,diff命令只是单纯地比较两条路经下的两个文件。
svn merge是比较两个对象,会注意到版本100和版本102的test.doc两个文件是不关联的。
19、SVN并没有真正意义上的重命名,move命令只是copy、delete两个命令的组合。
20、找回删除的项目:即使删除了文件或目录,SVN的信息从不丢失,只是从当前的HEAD版本消失了,但仍然存在于历史的早期版本。只要通过SVN的log来查看所有改变的每个项目的版本,找出你删除文件或目录的那个版本。