Svn 预结束到subversion签入模板

Svn 预结束到subversion签入模板,svn,Svn,命令行subversion具有一个方便的功能,即在执行SVN ci时(在使用环境变量SVN_editor指定的编辑器中)调出各种签入“模板”: (blank line) --This line, and those below, will be ignored-- M src/myfile.c A src/otherfile.c 我喜欢这个功能,因为它可以快速总结要提交的更改,而无需运行svn status并过滤?结果 我想做的是grep上一次提交的日志消息中的一些内容,并将其预先添

命令行subversion具有一个方便的功能,即在执行
SVN ci
时(在使用环境变量SVN_editor指定的编辑器中)调出各种签入“模板”:

(blank line)
--This line, and those below, will be ignored--

M   src/myfile.c
A   src/otherfile.c
我喜欢这个功能,因为它可以快速总结要提交的更改,而无需运行
svn status
并过滤
结果

我想做的是grep上一次提交的日志消息中的一些内容,并将其预先添加到消息中,如下所示:

Some stuff I grepped from the previous log message.
--This line, and those below, will be ignored--

M   src/myfile.c
A   src/otherfile.c

我曾考虑创建一个脚本,通过解析
svn status
的输出手动创建此日志消息,然后在实际提交之前将其删除,但这似乎过于复杂,或者会破坏签入工具的某些其他功能。有更好/更简单的方法吗?

有几种方法可以做到这一点
svnci
将提交消息作为带有
-m
标志的参数,以便您可以准备消息并将其作为字符串传递。大概是这样的:

$ svn ci -m "$(svn log | grep Magic\ Text)"
$ svn log | grep Magic\ Text > temp.log
$ svn ci -F temp.log
$ rm temp.log
签入
也会采用带有
-F
的文件名,因此您也可以执行以下操作:

$ svn ci -m "$(svn log | grep Magic\ Text)"
$ svn log | grep Magic\ Text > temp.log
$ svn ci -F temp.log
$ rm temp.log
或者,如果不想处理临时文件,只将
-
作为参数传递给
-F
使
签入
stdin
读取:

$ svn log | grep Magic\ Text | svn ci -F -
---编辑---

看起来这不是你想要的。如果您想要一种基本上“钩住”提交并编辑提交消息模板的方法,这应该适合您。当运行
svn commit
时,它会在当前目录中创建一个名为
svn commit.tmp
的文件。我们可以重写
$SVN_EDITOR
环境变量,使用自定义脚本编辑
SVN commit.tmp
文件,然后让我们对其进行更多编辑。这是对我有用的东西

在某个地方创建一个文件(可能在$HOME/bin或其他文件中),它将成为您的新
$SVN\u编辑器
。把这个放在里面:

#!/bin/bash

svn log | grep Whatever > svn-commit2.tmp
cat svn-commit.tmp >> svn-commit2.tmp
mv svn-commit2.tmp svn-commit.tmp
vi svn-commit.tmp
现在在shell或
~/.bashrc
中放置以下行:

export SVN_EDITOR="$HOME/bin/your_editor.sh"
如果你把你的
bashrc
放在那里,一定要找到它的来源

$ source ~/.bashrc
现在,当您执行提交时,它应该有一些额外的行。这是一个有点骇人的解决方案,但它是有效的