Skip to content

Commit

Permalink
git-am foreign patch support: introduce patch_format
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Giuseppe Bilotta authored and Junio C Hamano committed May 29, 2009
1 parent 33fd716 commit a5a6755
Showing 1 changed file with 33 additions and 4 deletions.
37 changes: 33 additions & 4 deletions git-am.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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=
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit a5a6755

Please sign in to comment.