本文主要是介绍svn命令行修改已提交的版本备注,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考文章:stackoverflow.com/questions/304383/how-do-i-edit-a-log-message-that-i-already-committed-in-subversion
参考文章实现:
由于缺省情况下为安全起见Subversion不允许开发人员修改已提交reversion的日志信息,这样会报错误,提示不能修改以及请SVN管理员安装pre revprop change hook。
这个hook是什么意思呢? 实际上是一个版本日志变更的预处理程序,主要是用来保存老的日志信息,以避免在变更发生错误的时候,无法恢复。
那么需要管理员执行以下操作,就可以赋予开发人员变更日志的操作能力。
————————————————————————————————————————
[b]
1.将pre-revprop-change.bat(博客附件中可下载)文件拷贝到服务器资源hook路径下,如图
[img]http://dl2.iteye.com/upload/attachment/0105/9973/353449cf-2a17-38d6-a03f-7265c1e0e739.png[/img]
[/b]
[b]
2.利用tsvn(小乌龟)可以使用edit log进行修改
[img]http://dl2.iteye.com/upload/attachment/0105/9975/cccc2a51-3698-39de-9abc-4068afb426db.jpg[/img]
[/b]
[b]
3.命令行执行如下命令,即可达到修改效果
没有在服务器放置bat效果:
C:\Users\Malt>svn propset -r 1 --revprop svn:log "没有在服务器放置bat效果" svn://192.168.98.131/mentoree_repos --username mentorlib --password mentorLib_Lib
————————————————————————————————————
控制台输出:
svn: E165006: 此版本库不允许修改版本属性;请管理员创建 pre-revprop-change 钩子
————————————————————————————————————
[/b]
[b]
4.在服务器放置bat效果:
C:\Users\Malt>svn propset -r 1 --revprop svn:log "修改Malt" svn://192.168.98.131/mentoree_repos --username mentorlib --password mentorLib_Lib
控制台输出:
设定属性 “svn:log” 于版本库版本 1
[/b]
此时用tsvn查看效果不一定可以立刻显示, 我们用命令行执行svn log, 如下图效果:
[img]http://dl2.iteye.com/upload/attachment/0105/9977/adc896ba-5f60-3eb7-9d94-a55e7b354dfb.png[/img]
—————————————————————————————————————————
[b]实现了效果之后我们可以了解一下hook中的实现:[/b]
if "%4" == "svn:log" exit 0
echo Property '%4' cannot be changed >&2
exit 1
在属性修改前,该脚本会被执行,如返回0即表示同意修改。另外,注意该目录下本就有一个pre-revprop-change.tmpl,但那个是xNix的shell脚本,windows平台貌似不太好用。
然后在客户端就可以正常修改了,其后台应该是调用类似下面的命令:
svn propset -r N --revprop svn:log "new log message" URL
也可以在服务端通过运行下面的命令来做同样的事情,其中FILE是保存新日志信息的文件路径:
svnadmin setlog REPOS_PATH -r N FILE
这篇关于svn命令行修改已提交的版本备注的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!