1

我目前在 OSX 上的 emacs 24.1.50.1 中使用 DSVN,带有 svn v 1.7.8。

当我从 emacs 运行 svn-status,标记几个文件并按“c”提交时,我发现自己在svn 提交缓冲区中,该缓冲区预先填充了以下内容:

Summary:
Author:

我想遵循不同的约定,如何更改此默认提交消息?

我查看了 svn-commit 的源代码,但看不到这条消息来自哪里。线程似乎相关,但我不确定我可以使用哪些钩子来利用那里提供的信息。

理想情况下,我希望能够根据当前项目的存储库 url 动态确定消息,但即使只是提示如何将消息更改为静态的东西也会很棒。我该如何更改此消息?

所有帮助表示赞赏。

4

2 回答 2

1

如果您无法在您的 emacs 包中找到源代码,则该模板很可能来自 svn 本身。

看看这个,你可以做一个快速测试来检查你是否会出现这种情况。

如果是这样,您可以使用setenvfrom emacs 重新创建那里描述的技巧,或者svn-commit根据您的喜好使用自己的模板替换缓冲区内容(即使模板不是来自 svn,后面的解决方案也可以工作)

于 2013-07-09T10:31:05.963 回答
0

根据 juanleon 的使用 defadvice 的建议,这里有一些建议将用静态消息替换svn 提交缓冲区的内容:

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

这假设在运行 svn-commit(在我的情况下为 *svn-commit*)之后选择了包含提交消息的缓冲区。

调用“svn info”并将提交消息替换为正则表达式提取值的更动态版本是:

(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:”。如果正则表达式失败,提交消息将只是空的。

于 2013-07-11T09:12:18.810 回答