Michael S. Tsirkin
2014-06-12 16:12:35 UTC
I'm using different signature tags for git am depending on the patch,
project and other factors.
Sometimes I add multiple tags as well, e.g. QEMU
wants both Reviewed-by and Signed-off-by tags.
This patch makes it easy to do so:
1. new parameter am.signoff can be used any number
of times:
[am]
signoff = "Reviewed-by: Michael S. Tsirkin <***@redhat.com>"
signoff = "Signed-off-by: Michael S. Tsirkin <***@redhat.com>"
if set all signatures are picked up when git am -s is used.
2. Any number of alternative signatures
[am "a"]
signoff = "Acked-by: Michael S. Tsirkin <***@redhat.com>"
if set the signature type can be specified by passing
a parameter to the -s flag:
git am -sa
No docs or tests, sorry, so not yet ready for master, but I'm using this
all the time without any issues so maybe ok for pu.
Early flames/feedback/help welcome.
Signed-off-by: Michael S. Tsirkin <***@redhat.com>
---
git-am.sh | 36 ++++++++++++++++++++++++++++--------
1 file changed, 28 insertions(+), 8 deletions(-)
diff --git a/git-am.sh b/git-am.sh
index ee61a77..e992c34 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -13,7 +13,7 @@ i,interactive run interactively
b,binary* (historical option -- no-op)
3,3way allow fall back on 3way merging if needed
q,quiet be quiet
-s,signoff add a Signed-off-by line to the commit message
+s,signoff? add a Signed-off-by line to the commit message
u,utf8 recode into utf8 (default)
k,keep pass -k flag to git-mailinfo
keep-non-patch pass -b flag to git-mailinfo
@@ -136,7 +136,7 @@ fall_back_3way () {
eval "$cmd" &&
GIT_INDEX_FILE="$dotest/patch-merge-tmp-index" \
git write-tree >"$dotest/patch-merge-base+" ||
- cannot_fallback "$(gettext "Repository lacks necessary blobs to fall back on 3-way merge.")"
+ cannot_fallback "$(gettext "Repository lsignoffs necessary blobs to fall back on 3-way merge.")"
say "$(gettext "Using index info to reconstruct a base tree...")"
@@ -383,6 +383,7 @@ then
keepcr=t
fi
+signoffs=
while test $# != 0
do
case "$1" in
@@ -394,8 +395,15 @@ it will be removed. Please do not use it anymore."
;;
-3|--3way)
threeway=t ;;
- -s|--signoff)
- sign=t ;;
+ --signoff)
+ sign=t
+ s=$(git config --get-all am.signoff)
+ signoffs=("${signoffs[@]}" "${s[@]}") ;;
+ --signoff=*)
+ sign=t
+ a="${1#--signoff=}"
+ s=$(git config --get-all am."${a}".signoff)
+ signoffs=("${signoffs[@]}" "${s[@]}") ;;
-u|--utf8)
utf8=t ;; # this is now default
--no-utf8)
@@ -644,14 +652,25 @@ fi
git_apply_opt=$(cat "$dotest/apply-opt")
if test "$(cat "$dotest/sign")" = t
then
- SIGNOFF=$(git var GIT_COMMITTER_IDENT | sed -e '
- s/>.*/>/
- s/^/Signed-off-by: /'
- )
+ for ack in "${signoffs[@]}"; do
+ if test "$SIGNOFF"
+ then
+ SIGNOFF="$SIGNOFF\n$ack"
+ else
+ SIGNOFF="$ack"
+ fi
+ done
+ if test -z "$SIGNOFF"
+ then
+ SIGNOFF=$(git var GIT_COMMITTER_IDENT | sed -e '
+ s/>.*/>/
+ s/^/Signed-off-by: /'
+ )
+ fi
else
SIGNOFF=
fi
last=$(cat "$dotest/last")
this=$(cat "$dotest/next")
if test "$skip" = t
project and other factors.
Sometimes I add multiple tags as well, e.g. QEMU
wants both Reviewed-by and Signed-off-by tags.
This patch makes it easy to do so:
1. new parameter am.signoff can be used any number
of times:
[am]
signoff = "Reviewed-by: Michael S. Tsirkin <***@redhat.com>"
signoff = "Signed-off-by: Michael S. Tsirkin <***@redhat.com>"
if set all signatures are picked up when git am -s is used.
2. Any number of alternative signatures
[am "a"]
signoff = "Acked-by: Michael S. Tsirkin <***@redhat.com>"
if set the signature type can be specified by passing
a parameter to the -s flag:
git am -sa
No docs or tests, sorry, so not yet ready for master, but I'm using this
all the time without any issues so maybe ok for pu.
Early flames/feedback/help welcome.
Signed-off-by: Michael S. Tsirkin <***@redhat.com>
---
git-am.sh | 36 ++++++++++++++++++++++++++++--------
1 file changed, 28 insertions(+), 8 deletions(-)
diff --git a/git-am.sh b/git-am.sh
index ee61a77..e992c34 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -13,7 +13,7 @@ i,interactive run interactively
b,binary* (historical option -- no-op)
3,3way allow fall back on 3way merging if needed
q,quiet be quiet
-s,signoff add a Signed-off-by line to the commit message
+s,signoff? add a Signed-off-by line to the commit message
u,utf8 recode into utf8 (default)
k,keep pass -k flag to git-mailinfo
keep-non-patch pass -b flag to git-mailinfo
@@ -136,7 +136,7 @@ fall_back_3way () {
eval "$cmd" &&
GIT_INDEX_FILE="$dotest/patch-merge-tmp-index" \
git write-tree >"$dotest/patch-merge-base+" ||
- cannot_fallback "$(gettext "Repository lacks necessary blobs to fall back on 3-way merge.")"
+ cannot_fallback "$(gettext "Repository lsignoffs necessary blobs to fall back on 3-way merge.")"
say "$(gettext "Using index info to reconstruct a base tree...")"
@@ -383,6 +383,7 @@ then
keepcr=t
fi
+signoffs=
while test $# != 0
do
case "$1" in
@@ -394,8 +395,15 @@ it will be removed. Please do not use it anymore."
;;
-3|--3way)
threeway=t ;;
- -s|--signoff)
- sign=t ;;
+ --signoff)
+ sign=t
+ s=$(git config --get-all am.signoff)
+ signoffs=("${signoffs[@]}" "${s[@]}") ;;
+ --signoff=*)
+ sign=t
+ a="${1#--signoff=}"
+ s=$(git config --get-all am."${a}".signoff)
+ signoffs=("${signoffs[@]}" "${s[@]}") ;;
-u|--utf8)
utf8=t ;; # this is now default
--no-utf8)
@@ -644,14 +652,25 @@ fi
git_apply_opt=$(cat "$dotest/apply-opt")
if test "$(cat "$dotest/sign")" = t
then
- SIGNOFF=$(git var GIT_COMMITTER_IDENT | sed -e '
- s/>.*/>/
- s/^/Signed-off-by: /'
- )
+ for ack in "${signoffs[@]}"; do
+ if test "$SIGNOFF"
+ then
+ SIGNOFF="$SIGNOFF\n$ack"
+ else
+ SIGNOFF="$ack"
+ fi
+ done
+ if test -z "$SIGNOFF"
+ then
+ SIGNOFF=$(git var GIT_COMMITTER_IDENT | sed -e '
+ s/>.*/>/
+ s/^/Signed-off-by: /'
+ )
+ fi
else
SIGNOFF=
fi
last=$(cat "$dotest/last")
this=$(cat "$dotest/next")
if test "$skip" = t
--
MST
MST