svn命令行修改已提交的版本备注

svn命令行修改已提交的版本备注

参考文章:

*.com/questions/304383/how-do-i-edit-a-log-message-that-i-already-committed-in-subversion

参考文章实现:

由于缺省情况下为安全起见Subversion不允许开发人员修改已提交reversion的日志信息,这样会报错误,提示不能修改以及请SVN管理员安装pre revprop change hook。

这个hook是什么意思呢? 实际上是一个版本日志变更的预处理程序,主要是用来保存老的日志信息,以避免在变更发生错误的时候,无法恢复。

那么需要管理员执行以下操作,就可以赋予开发人员变更日志的操作能力。

————————————————————————————————————————

1.将pre-revprop-change.bat(博客附件中可下载)文件拷贝到服务器资源hook路径下,如图

svn命令行修改已提交的版本备注

2.利用tsvn(小乌龟)可以使用edit log进行修改

svn命令行修改已提交的版本备注

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 钩子

————————————————————————————————————

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

此时用tsvn查看效果不一定可以立刻显示, 我们用命令行执行svn log, 如下图效果:

svn命令行修改已提交的版本备注

—————————————————————————————————————————

实现了效果之后我们可以了解一下hook中的实现:

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

 
 
上一篇:windows下使用nginx


下一篇:js算法