温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎样进行svn的使用

发布时间:2021-11-17 15:38:23 来源:亿速云 阅读:102 作者:柒染 栏目:软件技术

这期内容当中小编将会给大家带来有关怎样进行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.c
A whole.c
U .
--- 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/newbranch
At revision 353.

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

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


$ svn copy ^/calc/trunk/real.c@807 ./real.c
$ svn status
A + 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.c
Path: code/bar.c
Name: bar.c
URL: http://svn.example.com/svn/repo/trunk/code/bar.c
…
Tree conflict: local edit, incoming delete upon update
Source left: (file) ^/trunk/code/bar.c@4
Source right: (none) ^/trunk/code/bar.c@5

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

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

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

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

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

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

通过svn patch打补丁


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

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

上述就是小编为大家分享的怎样进行svn的使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

svn
AI