Checkout 与 Export 的区别

checkout

  • 获取到svn的repository browser地址后,可以使用svn的checkout功能,将svn检查到本地,开发时,可以svn update和commit,这样便可实现版本的控制;
  • 使用checkout的目录,会有一个.svn文件,用于记录svn信息,即此时的目录是受版本控制的。

    export

  • 相比checkout,export仅仅是对项目代码的获取,并不会在目录下生成.svn文件,也不受版本控制。

  • 所以export命令可用于项目发布、项目备份、项目迁移(svn->git)等场景使用。

冲突说明

A、B用户同时从服务器上检出了一个文件 text1.txt,则此时A、B、服务器三个地方的 text1.txt 版本可均假设为一个13。
B用户先对该文件进行修改,然后提交服务器后,则此时B、服务器两个地方 text1.txt 版本则变为了14,A则依旧为13。
此时A用户也修改了 text1.txt,但与B用户的修改存在了冲突,比如修改了同一行但内容不同,则此时A用户的提交便会提示存在冲突。
A提交时出现冲突后,对于 text1.txt 则会存在如下4个相关的文件:

  1. text1.txt: 最新的14版本内容和A用户修改的合并文件,虽然存在冲突,但使用了特殊冲突标
  2. text1.txt.mine: 原始的13版本内容和A用户修改
  3. text1.txt.r13: 原始的13版本内容
  4. text1.txt.r14: 原始的14版本内容

所以此时我们可以将 text1.txt.mine (原始文件和我们的修改)和 text1.txt.r14 (原始文件和别人的修改,也即服务器上的最新版本)进行比较,以确定哪一行发生了冲突。