summaryrefslogtreecommitdiff
path: root/git-am.sh
diff options
context:
space:
mode:
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2009-05-27 09:25:16 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-05-29 06:04:50 (GMT)
commita5a6755a1d4707bf2fab7752e5c974ebf63d086a (patch)
tree7390f344c575f102a1db4c2e15dddc8e43e1cd66 /git-am.sh
parent33fd7169ed6658e898b414a66aefaad16b404ec5 (diff)
downloadgit-a5a6755a1d4707bf2fab7752e5c974ebf63d086a.zip
git-a5a6755a1d4707bf2fab7752e5c974ebf63d086a.tar.gz
git-a5a6755a1d4707bf2fab7752e5c974ebf63d086a.tar.bz2
git-am foreign patch support: introduce patch_format
Set up a framework to allow git-am to support patches which are not in mailbox format. Introduce a patch_format variable that presently can only be set from the command line, defaulting to 'mbox' (the only supported format) if not specified. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-am.sh')
-rwxr-xr-xgit-am.sh37
1 files changed, 33 insertions, 4 deletions
diff --git a/git-am.sh b/git-am.sh
index 578780b..da160de 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -18,6 +18,7 @@ whitespace= pass it through git-apply
directory= pass it through git-apply
C= pass it through git-apply
p= pass it through git-apply
+patch-format= format the patch(es) are in
reject pass it through git-apply
resolvemsg= override error message when patch failure occurs
r,resolved to be used after a patch failure
@@ -133,6 +134,32 @@ It does not apply to blobs recorded in its index."
unset GITHEAD_$his_tree
}
+patch_format=
+
+check_patch_format () {
+ # early return if patch_format was set from the command line
+ if test -n "$patch_format"
+ then
+ return 0
+ fi
+ patch_format=mbox
+}
+
+split_patches () {
+ case "$patch_format" in
+ mbox)
+ git mailsplit -d"$prec" -o"$dotest" -b -- "$@" > "$dotest/last" || {
+ rm -fr "$dotest"
+ exit 1
+ }
+ ;;
+ *)
+ echo "Patch format $patch_format is not supported."
+ exit 1
+ ;;
+ esac
+}
+
prec=4
dotest="$GIT_DIR/rebase-apply"
sign= utf8=t keep= skip= interactive= resolved= rebasing= abort=
@@ -175,6 +202,8 @@ do
git_apply_opt="$git_apply_opt $(sq "$1=$2")"; shift ;;
-C|-p)
git_apply_opt="$git_apply_opt $(sq "$1$2")"; shift ;;
+ --patch-format)
+ shift ; patch_format="$1" ;;
--reject)
git_apply_opt="$git_apply_opt $1" ;;
--committer-date-is-author-date)
@@ -274,10 +303,10 @@ else
done
shift
fi
- git mailsplit -d"$prec" -o"$dotest" -b -- "$@" > "$dotest/last" || {
- rm -fr "$dotest"
- exit 1
- }
+
+ check_patch_format "$@"
+
+ split_patches "$@"
# -s, -u, -k, --whitespace, -3, -C and -p flags are kept
# for the resuming session after a patch failure.