2017-06-16 61 views
1

我想編輯傳入的提交消息(添加分支名稱,或者添加一些模板,忽略某些行等)。當我搜索時,我發現git有一個準備提交消息掛鉤,似乎這樣做,但svn沒有。在提交之前有沒有辦法在svn中做到這一點?是否存在與git prepare commit消息鉤子相同的SVN

+0

請在郵件列表中查看[此帖子](https://svn.haxx.se/users/archive-2008-03/0690.shtml)。 –

+1

@PatrickQuirk該帖子大約9歲,並有一個斷開的鏈接。這裏是工作的鏈接:http://subversion.apache.org/faq.html#change-log-msg – bahrep

+0

感謝您的鏈接。這是否意味着我應該在post commit hook中更改日誌消息,還是有更好的方法? – ryanbmg

回答

0

在SVN,你不需要用鉤子腳本添加日誌消息模板:

  • 在TortoiseSVN客戶端,您可以並且應該使用tsvn:* properties

  • 使用vanilla svn.exe命令行客戶端,使用CMD_EDITOR環境變量來定義您想要調用的日誌消息,或根據提交中的更改自動確定日誌消息。

  • Use SVN hook scripts to validate, not modify

  • 調整SVN中現有修訂版的日誌消息通常是單行命令。默認情況下,禁止修改日誌消息。管理員可以隨時允許所有用戶或只有特定的用戶使用。

我猜你已經使用TortoiseSVN客戶自提標有標籤。 TortoiseSVN支持多個屬性,這些屬性可以幫助您定義客戶端的行爲。他們會幫助你實現承諾的政策,包括日誌消息限制和模板:

  • tsvn:logminsize定義傳入修訂的日誌信息中必須包含的字符的最小數量。

  • tsvn:logtemplate將幫助您定義默認日誌消息模板。還有8個額外的tsvn:logtemplate屬性,您可以使用它們爲不同類型的提交添加不同的模板。

  • tsvn:logsummary將幫助您定義正則表達式來獲取提交消息的一部分,並在您使用TortoiseSVN查看修訂歷史記錄日誌時將其顯示爲摘要。

參見手冊的性質和宗旨的完整列表TortoiseSVN Project Properties章。


您必須使用git的pre-commit掛鉤來驗證日誌消息並添加提交消息模板。如果您不這樣做,修復日誌消息中的錯誤的過程需要您使用可能不重要的git rebase。可以有其他的方式來添加日誌消息策略,但在git的世界中,你必須使用鉤子腳本。

不要忘記,svn commitgit commit操作在使用git或SVN的常見工作流中扮演不同的角色。svn commitgit commit的整體思路和結果是不一樣的。因此,*-commit掛鉤有兩個系統不同的目標:

  • 運行的git在本地的Git倉庫提交是本地,客戶端只運行。當你在git中提交時,你只需要創建一個本地快照而不需要聯繫這個受祝福的遠程倉庫。在這種情況下,使用本地鉤子來定製客戶端的默認行爲應該是非常好的。除非您通過推或拉來發布它們,否則您的本地更改不會影響其他git用戶。這是git工作流程的一部分,需要您最大限度地關注日誌消息 - 重寫提交的數據(包括日誌消息)將迫使您的同事暫時擱置當前任務並開始手動修復其本地回購。

  • 但是當你運行SVN提交,你聯繫的遠程服務器來發布你的本地資料庫的修改,使他們在新版本給其他開發者的形式提供。即使您在提交SVN時在日誌消息中犯了錯誤,您也可以隨時自行調整,或者詢問有此特權的同事。簡單而無傷害。

+0

我在TortoiseSVN中使用了一個模板,這是我希望首先更改日誌消息的主要原因。我在模板文本的底部有一個部分,我想忽略哪些部分給用戶提供了指令,這些指令可以通過提交後提交鉤子獲取。例如,如果他們的消息中包含「RUN:Foo」這一行,它將啓動一個Hudson工作。我只是不希望啓動命令或命令列表包含在提交的日誌消息中 – ryanbmg

+0

我評論得太快我會嘗試他們tsvn:logsummary,你明天提到 – ryanbmg

1

在罕見的地方,它可能可能有可能改變與Subversion的傳入交易,不建議或支持這樣做。