From: Johannes Schindelin <Johannes.Schindelin@gmx.de>
To: Mark Levedahl <mlevedahl@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: [PATCH] rebase -i: ignore patches that are in upstream already
Date: Wed, 1 Aug 2007 15:59:35 +0100 (BST) [thread overview]
Message-ID: <Pine.LNX.4.64.0708011505010.14781@racer.site> (raw)
In-Reply-To: <46B06E56.2040206@gmail.com>
Non-interactive rebase had this already, exploiting format-patch's option
--ignore-if-in-upstream. We replicate the same behaviour here with
--cherry-pick.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
On Wed, 1 Aug 2007, Mark Levedahl wrote:
> git rebase -i does not correctly ignore commits in the local
> branch that are also in upstream. For example, create a branch
> that is two commits back from upstream, add one of those on to
> the local branch
>
> upstream=83b3df7d58
> git checkout -f $upstream
> git checkout -b foo $upstream~2
> git cherry-pick $upstream~1
> git rebase -i $upstream
>
> "git rebase -i" happily presents commit "$upstream~1" in the
> list to be applied to upstream. This of course results in a
> conflict. Should the user simply delete the offending commit
> from the presented list, git rebase -i then refuses to do
> anything, saying "Nothing to do."
>
> Bare "git rebase" handles this case correctly (essentially fast
> forwards the branch to upstream.
Right.
git-rebase--interactive.sh | 5 +++--
t/t3404-rebase-interactive.sh | 15 +++++++++++++++
2 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 061cd0a..d3addd4 100755
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -463,8 +463,9 @@ do
#
EOF
git rev-list $MERGES_OPTION --pretty=oneline --abbrev-commit \
- --abbrev=7 --reverse $UPSTREAM..$HEAD | \
- sed "s/^/pick /" >> "$TODO"
+ --abbrev=7 --reverse --left-right --cherry-pick \
+ $UPSTREAM...$HEAD | \
+ sed -n "s/^>/pick /p" >> "$TODO"
test -z "$(grep -ve '^$' -e '^#' < $TODO)" &&
die_abort "Nothing to do"
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index 817f614..dc436d7 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -68,6 +68,9 @@ test "\$1" = .git/COMMIT_EDITMSG && {
test -z "\$FAKE_COMMIT_AMEND" || echo "\$FAKE_COMMIT_AMEND" >> "\$1"
exit
}
+test -z "\$EXPECT_COUNT" ||
+ test "\$EXPECT_COUNT" = \$(grep -ve "^#" -e "^$" < "\$1" | wc -l) ||
+ exit
test -z "\$FAKE_LINES" && exit
grep -v "^#" < "\$1" > "\$1".tmp
rm "\$1"
@@ -251,4 +254,16 @@ test_expect_success 'interrupted squash works as expected' '
test $one = $(git rev-parse HEAD~2)
'
+test_expect_success 'ignore patch if in upstream' '
+ HEAD=$(git rev-parse HEAD) &&
+ git checkout -b has-cherry-picked HEAD^ &&
+ echo unrelated > file7 &&
+ git add file7 &&
+ test_tick &&
+ git commit -m "unrelated change" &&
+ git cherry-pick $HEAD &&
+ EXPECT_COUNT=1 git rebase -i $HEAD &&
+ test $HEAD = $(git rev-parse HEAD^)
+'
+
test_done
--
1.5.3.rc3.112.gf60b6
prev parent reply other threads:[~2007-08-01 15:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-01 11:28 git rebase--interactive, doesn't ignore commits already in upstream Mark Levedahl
2007-08-01 14:59 ` Johannes Schindelin [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.64.0708011505010.14781@racer.site \
--to=johannes.schindelin@gmx.de \
--cc=git@vger.kernel.org \
--cc=mlevedahl@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).