2013-07-09 155 views
1

我目前在OSX上的emacs 24.1.50.1中使用DSVN,svn v 1.7.8。Emacs&DSVN:更改默認提交消息

當我從Emacs運行SVN狀態,標記多個文件,然後按「C」犯我發現自己在SVN提交緩衝區被預填充有以下內容:

Summary: 
Author: 

我有一個我希望遵循的不同約定,我如何更改此默認提交消息?

我已經通過源看着SVN提交,但我不看到這條消息的來源。 This線程似乎相關,但我不確定我可能使用哪些鉤子來利用那裏提供的信息。

我非常希望能夠確定消息動態基於當前項目庫的URL,但即使只是如何將消息更改爲靜態的提示將是巨大的。我該如何去改變這個信息?

所有幫助表示讚賞。

+0

Emacs的代碼直接使用這些頭文件:「Summary:」作爲提交的第一行,「Author:」根據VCS使用作者信息的方式傳遞給VCS。如果這些標題中的任何一個都是空的,它仍然會被刪除。 – Stefan

+0

很高興知道,謝謝! –

+0

我認爲更新的emacsen在這裏改變了一些東西,我不得不''(刪除鉤'日誌編輯鉤'#日誌編輯插入消息模板)' – unhammer

回答

1

如果你無法找到在您的Emacs包的源,沒準這個模板來自SVN本身。

看看到this,你可以做一個簡單的測試,以檢查是否這將是你的情況。

如果是這樣,你可以使用setenv從emacs的重新出現所描述的伎倆,或defadvice​​用自己的模板來替換緩衝區的內容,根據自己的喜好(後來的解決方案將工作,即使該模板不是從未來SVN)

+0

我讀了答案,但我不知道我明白了什麼你的意思是「做一個快速檢查,看看這是否適合你」。我更喜歡一種保留在emacs中的解決方案,這樣我可以隨身攜帶我的emacs配置文件的其餘部分。我沒有意識到defadvice,我想這可能是我正在尋找的 - 我會試一試並看看。 –

+0

'defadvice'是我的選擇(使用鉤子會更好,但似乎沒有可用)。 setenv SVN_EDITOR技巧對於沒有elisp興趣/技能的人更有用。通過「快速檢查」,我的意思是要查明你所看到的模板的起源是來自emacs還是來自svn(再次,與defadvice無關) – juanleon

+0

我明白你的意思了。謝謝!我會發布任何我想出來的 –

0

基於juanleon的建議,使用defadvice,這裏有一些建議,將取代SVN的內容提交緩衝帶靜電消息:

(defadvice svn-commit (after modify-default-commit-message activate) 
    (erasebuffer) 
    (insert "custom message")) 

這假定包含提交緩衝區messag在運行svn-commit(在我的例子中是* svn-commit *)後選擇e。

調用「SVN信息」,並用正則表達式提取值替換提交信息

一個更加動態的版本是:

(defadvice svn-commit (after modify-default-commit-message activate) 
    (erase-buffer) 
    (let ((svninfo (shell-command-to-string "svn info"))) 
    (string-match "^URL: svn://\\(.+\\)" svninfo) 
    (insert (match-string 1 svninfo))           
    (insert ": ")  
    )) 

這個建議會與SVN URL的主機和路徑替換提交信息,然後是「:」,所以如果svn-commit從url「svn://host.com/path」結算運行,提交消息將是「host.com/path:」。如果正則表達式失敗,則提交消息將僅爲空。