From: Dominique Quatravaux <domq@google.com>
To: gitster@pobox.com, git@vger.kernel.org
Cc: Dominique Quatravaux <domq@google.com>
Subject: [PATCH 2/2] rebase -i: new option --name-rev
Date: Thu, 8 Mar 2012 11:42:38 +0100 [thread overview]
Message-ID: <1331203358-28277-2-git-send-email-domq@google.com> (raw)
In-Reply-To: <1331203358-28277-1-git-send-email-domq@google.com>
If set, the second column of the rebase todo contains named revisions (obtained
with git name-rev) instead of short SHA1s.
---
Documentation/git-rebase.txt | 11 +++++++++++
git-rebase--interactive.sh | 11 ++++++++---
git-rebase.sh | 10 ++++++++++
t/t3404-rebase-interactive.sh | 11 +++++++++++
4 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 504945c..e7ecd2c 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -365,6 +365,17 @@ If the '--autosquash' option is enabled by default using the
configuration variable `rebase.autosquash`, this option can be
used to override and disable this setting.
+--name-rev::
+--no-name-rev::
+ Instead of showing short SHA1 hashes in the todo list, show
+ human-readable revisions obtained with linkgit:git-name-rev[1].
++
+This option is only valid when the '--interactive' option is used.
++
+If the '--name-rev' option is enabled by default using the
+configuration variable `rebase.interactivenamerev`, this option can be
+used to override and disable this setting.
+
--no-ff::
With --interactive, cherry-pick all rebased commits instead of
fast-forwarding over the unchanged ones. This ensures that the
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 8dcb8b0..5583dcb 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -780,10 +780,15 @@ git rev-list $merges_option --pretty=oneline --no-abbrev-commit \
sed -n "s/^>//p" |
while read -r sha1 rest
do
- shortsha1=$(echo $sha1 | cut -c1-7)
+ if test t = "$name_rev"
+ then
+ rev="$(git name-rev $sha1 | cut -d\ -f2)"
+ else
+ rev=$(echo $sha1 | cut -c1-7)
+ fi
if test t != "$preserve_merges"
then
- printf '%s\n' "pick $shortsha1 $rest" >> "$todo"
+ printf '%s\n' "pick $rev $rest" >> "$todo"
else
if test -z "$rebase_root"
then
@@ -801,7 +806,7 @@ do
if test f = "$preserve"
then
touch "$rewritten"/$sha1
- printf '%s\n' "pick $shortsha1 $rest" >> "$todo"
+ printf '%s\n' "pick $rev $rest" >> "$todo"
fi
fi
done
diff --git a/git-rebase.sh b/git-rebase.sh
index 69c1374..9330be3 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -43,6 +43,8 @@ s,strategy=! use the given merge strategy
no-ff! cherry-pick all commits, even if unchanged
m,merge! use merging strategies to rebase
i,interactive! let the user edit the list of commits to rebase
+name-rev show revisions by name in the list of commits
+no-name-rev show revisions by short SHA1 in the list (default)
f,force-rebase! force rebase even if branch is up to date
X,strategy-option=! pass the argument through to the merge strategy
stat! display a diffstat of what changed upstream
@@ -98,6 +100,8 @@ action=
preserve_merges=
autosquash=
test "$(git config --bool rebase.autosquash)" = "true" && autosquash=t
+name_rev=
+test "$(git config --bool rebase.interactivenamerev)" = "true" && name_rev=t
read_basic_state () {
head_name=$(cat "$state_dir"/head-name) &&
@@ -287,6 +291,12 @@ do
-f|--no-ff)
force_rebase=t
;;
+ --name-rev)
+ name_rev=t
+ ;;
+ --no-name-rev)
+ name_rev=
+ ;;
--rerere-autoupdate|--no-rerere-autoupdate)
allow_rerere_autoupdate="$1"
;;
diff --git a/t/t3404-rebase-interactive.sh b/t/t3404-rebase-interactive.sh
index b981572..299ce40 100755
--- a/t/t3404-rebase-interactive.sh
+++ b/t/t3404-rebase-interactive.sh
@@ -163,6 +163,17 @@ test_expect_success 'exchange two commits' '
test G = $(git cat-file commit HEAD | sed -ne \$p)
'
+cat > expect-rebase-todo <<EOF
+pick branch1~1 H
+pick branch1 G
+EOF
+
+test_expect_success 'Symbolic revisions in --name-rev' '
+ exec > debug.log 2>&1 &&
+ FAKE_LINES="exec_cp_.git/rebase-merge/git-rebase-todo_rebase-todo 1 2" git rebase -i --name-rev HEAD~2 &&
+ test_cmp expect-rebase-todo rebase-todo
+'
+
cat > expect << EOF
diff --git a/file1 b/file1
index f70f10e..fd79235 100644
--
1.7.7.3
next prev parent reply other threads:[~2012-03-08 10:43 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-08 10:42 [PATCH 1/2] rebase -i: optimize the creation of the todo file Dominique Quatravaux
2012-03-08 10:42 ` Dominique Quatravaux [this message]
2012-03-08 10:56 ` [PATCH 2/2] rebase -i: new option --name-rev Thomas Rast
2012-03-08 11:57 ` Dominique Quatravaux
2012-03-08 18:58 ` Junio C Hamano
2012-03-09 7:58 ` Dominique Quatravaux
2012-03-08 19:08 ` Junio C Hamano
2012-03-08 22:13 ` Junio C Hamano
2012-03-09 7:22 ` Johannes Sixt
2012-03-09 9:04 ` Dominique Quatravaux
2012-03-09 9:45 ` Junio C Hamano
2012-03-08 10:48 ` [PATCH 1/2] rebase -i: optimize the creation of the todo file Thomas Rast
2012-03-08 11:48 ` Dominique Quatravaux
2012-03-08 11:55 ` Thomas Rast
2012-03-08 11:20 ` Johannes Sixt
2012-03-08 11:36 ` Dominique Quatravaux
2012-03-08 11:41 ` Dominique Quatravaux
2012-03-08 11:51 ` Johannes Sixt
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=1331203358-28277-2-git-send-email-domq@google.com \
--to=domq@google.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.