我正在尋找可能把git show
,git format-patch
甚至diff
產生的補丁文件中的一個普遍的方式提交的最好的方式。如何將補丁應用到git,包括新文件和提交消息?
我希望以下特點:
- 現有文件應該被修改,並且修改上演了新的提交。
- 應該爲新提交創建並分階段創建新文件。
- 文件刪除也應爲新提交階段。
- 如果補丁使用
git format-patch
創建,提交信息應被解析並用於新的承諾。 - 如果補丁使用
git show
創建,提交信息應被解析並用於新的承諾。 - 如果補丁不受上述兩個工具創建的,它應該繼續處理。
- 的CLI應該能夠接受多個補丁,從而創造多次提交。
我在現有的解決方案最感興趣我考慮創建一個新工具之前。
以前的研究:
最接近的工具是git am
但失敗#5,#6,所以它不是爲目的的。另一方面,git apply
不會自行創建提交,並且至少失敗#2和#5。我不知道那些比這兩個更成功的工具。
當應用從RPM spec文件補丁的格式如下:
Patch0: abc.patch
Patch1: xyz.patch
我使用下面的sed命令目前正在建設的腳本:
sed -re 's/.*: *(.*)/git apply \1 \&\& git add . \&\& git commit -am \1/'
這當然不會做# 4和#5,因爲它總是使用補丁文件名作爲提交消息,並且#7解決了。
DIFF,顯示和格式的補丁都是爲了不同的目的。 – jthill
@jthill這可能是事實,但不能回答這個問題,請參閱我的評論,以便Andreas回答。我能做些什麼來使問題更清楚嗎? –