[英]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
的參數使checkin
從stdin
讀取:
$ 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.