首页 网络技术
  1. 正文

怎样进行svn的使用

svn是每天都要用到的工具,学会更好的使用它,对提高工作效率很有帮助,小编记录svn日常使用的一些技巧,方便温故知新!

属性的作用?


为每个文件或文件夹附加额外的信息,例如:

"test-results=all passing " test-results(属性名)  all passing(属性值)

注:属性名可以任意取,但最好不要以svn:开头,以免与系统保留属性名冲突。

当开发分支中存在svn copy或svn move的修改时,合并回主线需要特别小心!!!


例:

试想当你在自己的开发分支上通过svn move将文件integer.c重命名为whole.c,事实你是在开发分支上创建一个新文件,并删除了旧文件。同时在主线上,你的同事A提较了一些对integer.c的修改。这时你准备将你开发分支上的修改合并回主线:

$ svn merge --reintegrate ^/calc/branches/my-calc-branch--- Merging differences between repository URLs into '.':D integer.cA whole.cU .--- Recording mergeinfo for merge between repository URLs into '.':U

所得到的结果并非是你和你的同事A想要的,svn删掉了包含你同事A最近一次修改的integer.c,并新增了一个文件whole.c,但whole.c中并不包含同事A的最新修改,他的修改被移除了。(这个缺陷存在于当前版本的svn中,期待后续版本能有改进)

svn switch


svn switch是svn update的一个超集,所以它们具有一些共同的特性:当运行这两条命令时,任何本地工作拷贝的修改都会被保留。

试想,当你在主线的工作拷贝上做了大量的修改,突然你意识到最好为了这次修改创建一个独立的修改分支,借助上述特性,你可以简单地通过两步完成该操作:

$ svn copy http://svn.example.com/repos/calc/trunk \
 http://svn.example.com/repos/calc/branches/newbranch \
 -m "Create branch 'newbranch'."Committed revision 353.$ svn switch ^/calc/branches/newbranchAt revision 353.

假设你修改完毕后准备svn commit,那么所有的修改都将被移送到修改分支而非主线。

通过svn copy从历史版本库中恢复被删除的文件


$ svn copy ^/calc/trunk/real.c@807 ./real.c$ svn statusA + real.c


通过svn diff查看详细的历史修改记录(精确到行)


检查本地工作拷贝的修改

svn diff file

检查本地工作拷贝与指定版本的修改

svn diff -r revision file

检查指定的两个版本间的修改

svn diff -r revision1:revision2 file(可以不再工作拷贝中执行该命令,但需要指定URL)

检查前后两个版本间的修改

svn diff -c revision_new file

处理树冲突


原因:当你的同伴移动或删除了一个你还在修改的文件,在你svn up时就会产生树冲突

解决树冲突的步骤:

①. 通过svn info可查看包含冲突项的URLS

$ svn info code/bar.cPath: code/bar.cName: bar.cURL: http://svn.example.com/svn/repo/trunk/code/bar.c…Tree conflict: local edit, incoming delete upon updateSource left: (file) ^/trunk/code/bar.c@4Source right: (none) ^/trunk/code/bar.c@5

左边的URL指示本地工作拷贝的信息

右边的URL指示版本库上与本地工作拷贝冲突时的版本信息

②.根据第①的得到信息,决定解决树冲突的方案

可以删除本地工作拷贝的文件,也可以删除版本库中的文件,视具体情况而定。

若要删除本地文件但需要保留其中的修改,可以使用svn diff产生标准补丁文件patch,再通过svn patch打补丁

$svn delete --force code/bar.cD code/bar.c$ svn resolve --accept=working code/bar.cResolved conflicted state of 'code/bar.c'

通过svn patch打补丁


  • 当实际修改的行号和补丁文件中的行号存在偏差时或补丁文件中某几行在实际应用修改时被忽略时,会在输出报告中用符号'>'表示,这时我们就需要仔细审查修改是否正确了

  • 当补丁文件中修改行在实际修改中找不到对应行时,这部分修改会被保存到一个以.svnpatch.rej为后缀的文件中。需要我们手动合入修改

本文标题:怎样进行svn的使用
本文链接:https://www.qqooo.cn/post/5029.html
版权说明:网站文章均来源于手工整理和网友投稿,若有不妥之处请来信 xsds@vip.qq.com 处理,谢谢!