簡體   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