繁体   English   中英

之前是Subversion签入模板

[英]Prepend to subversion checkin template

命令行转换具有方便的功能,可以在执行svn ci时调出各种签入“模板”(在使用环境变量SVN_EDITOR指定的编辑器中):

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

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

我喜欢这个功能,因为它提供了要提交的更改的快速摘要,而无需运行svn status和筛选? 结果。

我想做的是从上次提交的日志消息中复制一些内容,并将其添加到消息之前,如下所示:

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的输出来手动创建此日志消息,然后在进行实际提交之前将其删除,但这似乎过于复杂或破坏了签入工具的其他功能。 有没有更好/更简单的方法?

您可以通过几种方法来做到这一点。 svn ci将提交消息作为带有-m标志的参数,因此您可以准备消息并将其作为字符串传递。 像这样:

$ svn ci -m "$(svn log | grep Magic\ Text)"

checkin还使用-F作为文件名,因此您还可以执行以下操作:

$ svn log | grep Magic\ Text > temp.log
$ svn ci -F temp.log
$ rm temp.log

或者,如果您不想处理一个临时文件,则只需传递-作为-F的参数使checkinstdin读取:

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

-编辑-

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

在某个地方(可能在$ HOME / bin或其他地方)创建一个文件,将其作为新的$SVN_EDITOR 将其放入其中:

#!/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

现在,当您进行提交时,其中应该有一些额外的行。 这是一个很棘手的解决方案,但是它可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM