diff --git a/apatch b/apatch index 8417de8..d6e653e 100755 --- a/apatch +++ b/apatch @@ -62,6 +62,14 @@ for patch in $source; do fi done +header="" +if [ -f "$patch" ]; then + msg "patch exists, trying to extract existing message" + # try to extract the original header from the patch + patch_start=$(grep -En '^(diff --git|--- )' "$patchpath" | cut -d: -f1 | head -n 1) + header="$(head -n $(( patch_start - 1 )) "$patchpath"; echo)" +fi + ( cd "$builddir" git init @@ -85,10 +93,16 @@ done $SHELL - git add . - git diff --cached > "$patchpath" - if [ ! -s "$patchpath" ]; then - echo "[*] patch is empty, removing" - rm "$patchpath" - fi + git add . + + msg "saving patch $patch" + echo -n "$header" > "$patchpath" + git diff --cached >> "$patchpath" + + if [ ! -s "$patchpath" ]; then + msg "patch is empty, removing" + rm "$patchpath" + fi + + rm -rf .git )