引發此文原因
由於需要使用 jenkins 配合shell 腳本來做一些 和svn 相關的處理, 而svn 不支持 類似git 的tag,而用svn copy 的方式太low,也不方便直接在 svn log 中體現出來.
所以 我想 直接修改 svn
的 上次提交的log
信息,類似 git commit --ammend
,但是一般windows下用的TortoiseSVN
可以直接修改,但是 svn 命令行如何修改呢?
百度了一下,居然都是復制粘貼, 許多上來就是:
1、將版本庫repos/hooks/pre-revprop-change.tmp修改成pre-revprop-change
2、為pre-revprop-change加上執bai行權限:使用命令duchmod +x
3、修改pre-revprop-change
這不是我關心的,我當然已經配置過了的.我需要知道的是svn命令行如何修改.
所以,正確答案是?
先說 svn 查看 最近一條 svn log 的命令:
svn pget -r33848 --revprop svn:log |iconv -f GB2312 -t UTF-8
上面的 -r后面的數組是 最近的修改版本號,不知道為什么,我無法用 HEAD^1
或者 COMMITED
,PREV
來表達最近的一個log (而且是基於當前svn目錄的,不知全局的),如果只能通過 svn info
來獲取了
rev=`LANG=en_US.UTF-8 svn info|iconv -f GB2312 -t UTF-8|grep "Last Changed Rev: "|cut -d ':' -f 2-|awk '{$1=$1};1'`
svn 修改指定版本的svn log的命令
svn propedit
是調用文本編輯器, 等待編輯結束 提交的
set SVN_EDITOR=notepad.exe
svn propedit -r33848 --revprop svn:log [SVN_URL]
svn propset
是直接通過命令行設置的, 設置的文本需要自己提取之前的文本,修改補充的.
svn propset -r33848 --revprop svn:log "new log message" URL
總結
svn 的屬性包括兩種,
一個是 倉庫級別的,目錄屬性(包括遞歸獲得的屬性)
一個是 提交級別的,僅僅限於svn的一次commit提交
所以 svn 修改 log 或者author ,都是修改 屬性, 這么記,就好辦了~