This patch adds a limit to restrict the list of patches to rebase.
This is useful when a set of patches were done against a given head,
but needs to be ported to a different head, as opposed to being ported
to a descendant of the original head. In such a case we only want to
port our own patches, not those that make the two branches different
upstream.
Signed-off-by: Yann Dirson <redacted>
---
git-rebase.sh | 14 +++++++++++---
1 files changed, 11 insertions(+), 3 deletions(-)
bf833136c7c4cc17e7e45b959b56cda11528c33a
diff --git a/git-rebase.sh b/git-rebase.sh
index 16d4359..06c7e1a 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -3,10 +3,10 @@
# Copyright (c) 2005 Junio C Hamano.
#
-USAGE='<upstream> [<head>]'
+USAGE='<upstream> [<head>] [<limit>]'
. git-sh-setup
-case $# in 1|2) ;; *) usage ;; esac
+case $# in 1|2|3) ;; *) usage ;; esac
# Make sure we do not have .dotest
if mkdir .dotest
@@ -36,6 +36,14 @@ other=$(git-rev-parse --verify "$1^0") |
# Make sure the branch to rebase is valid.
head=$(git-rev-parse --verify "${2-HEAD}^0") || exit
+# Set limit
+case "$#" in
+3)
+ limit=$(git-rev-parse --verify "$3^0") || usage ;;
+*)
+ limit= ;;
+esac
+
# If the branch to rebase is given, first switch to it.
case "$#" in
2)@@ -62,5 +70,5 @@ then
exit 0
fi
-git-format-patch -k --stdout --full-index "$other" ORIG_HEAD |
+git-format-patch -k --stdout --full-index "$other" ORIG_HEAD $limit |
git am --binary -3 -k
--
1.0.6-g8ecb
--
Yann Dirson <ydirson@altern.org> |
Debian-related: <dirson@debian.org> | Support Debian GNU/Linux:
| Freedom, Power, Stability, Gratis
http://ydirson.free.fr/ | Check <http://www.debian.org/>
Yann Dirson [off-list ref] writes:
This patch adds a limit to restrict the list of patches to rebase.
This is useful when a set of patches were done against a given head,
but needs to be ported to a different head, as opposed to being ported
to a descendant of the original head. In such a case we only want to
port our own patches, not those that make the two branches different
upstream.
This usage makes sense, independent from your git-format-patch
"limit" patch. The patched argument to git-format-patch does
not match your git-format-patch changes AFAICT ;-).
-git-format-patch -k --stdout --full-index "$other" ORIG_HEAD |
+git-format-patch -k --stdout --full-index "$other" ORIG_HEAD $limit |
If all you want to do is to move the cut-off point more recent
than the merge base is, how about (without your git-format-patch
changes) doing something stupid like this instead?
git-format-patch -k --stdout --full-index ${limit:-"$other"} ORIG_HEAD
On Sun, Jan 08, 2006 at 01:30:20AM -0800, Junio C Hamano wrote:
Yann Dirson [off-list ref] writes:
quoted
This patch adds a limit to restrict the list of patches to rebase.
This is useful when a set of patches were done against a given head,
but needs to be ported to a different head, as opposed to being ported
to a descendant of the original head. In such a case we only want to
port our own patches, not those that make the two branches different
upstream.
This usage makes sense, independent from your git-format-patch
"limit" patch. The patched argument to git-format-patch does
not match your git-format-patch changes AFAICT ;-).
D'oh, I knew I should always written a testsuite when changing the
implementation of a feature at such a late time in night.
quoted
-git-format-patch -k --stdout --full-index "$other" ORIG_HEAD |
+git-format-patch -k --stdout --full-index "$other" ORIG_HEAD $limit |
If all you want to do is to move the cut-off point more recent
than the merge base is, how about (without your git-format-patch
changes) doing something stupid like this instead?
git-format-patch -k --stdout --full-index ${limit:-"$other"} ORIG_HEAD
Right, that would even be closer to the version that had indeed been
tested - it does have the advantage of passing t3401, though :)
--
Yann Dirson [off-list ref] |
Debian-related: [off-list ref] | Support Debian GNU/Linux:
| Freedom, Power, Stability, Gratis
http://ydirson.free.fr/ | Check <http://www.debian.org/>