svn命令列修改已提交的版本備註

2021-09-02 09:51:07 字數 1590 閱讀 6937

參考文章:

由於預設情況下為安全起見subversion不允許開發人員修改已提交reversion的日誌資訊,這樣會報錯誤,提示不能修改以及請svn管理員安裝pre revprop change hook。

這個hook是什麼意思呢? 實際上是乙個版本日誌變更的預處理程式,主要是用來儲存老的日誌資訊,以避免在變更發生錯誤的時候,無法恢復。

那麼需要管理員執行以下操作,就可以賦予開發人員變更日誌的操作能力。

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

[b][img]

[/b]

[b]2.利用tsvn(小烏龜)可以使用edit log進行修改

[img]

[/b]

[b]3.命令列執行如下命令,即可達到修改效果

沒有在伺服器放置bat效果:

c:\users\malt>svn propset -r 1 --revprop svn:log "沒有在伺服器放置bat效果" svn: --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: --username mentorlib --password mentorlib_lib

控制台輸出:

設定屬性 「svn:log」 於版本庫版本 1

[/b]

此時用tsvn檢視效果不一定可以立刻顯示, 我們用命令列執行svn log, 如下圖效果:

[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修改已提交版本的Log

在工作中一直是使用svn進行專案的版本控制的,有時候由於提交匆忙,或是忘了新增log,或是log內容寫的有錯誤。今日遇到此類情況,想要在檢視專案的日誌時新增log或是修改log內容,遇到如下錯誤 repository has not been enabled to accept revision p...

svn 命令列 修改上次提交日誌

由於需要使用 jenkins 配合shell 指令碼來做一些 和svn 相關的處理,而svn 不支援 類似git 的tag,而用svn copy 的方式太low,也不方便直接在 svn log 中體現出來.所以 我想 直接修改svn的 上次提交的log資訊,類似git commit ammend,但...

svn 命令列提交忽略修改或新增的檔案

在開發中搭建測試環境時,經常碰到開發人員需要根據自己的情況修改本地checkout下來的配置檔案,比如jdbc,config等等,這些修改後的檔案往往是不需要再提交到svn repo中的。不然肯定亂套了。這樣就帶來乙個需求,怎樣才能在提交時忽略掉這些檔案呢?用tortoisesvn很簡單,直接在介面...