From: "Liam Beguin" <liambeguin@xxxxxxxxx>
Add the 'rebase.abbrevCmd' boolean config option to allow `git rebase -i`
to abbreviate the command-names in the instruction list.
This means that `git rebase -i` would print:
p deadbee The oneline of this commit
...
instead of:
pick deadbee The oneline of this commit
...
Using a single character command-name allows the lines to remain
aligned, making the whole set more readable.
Signed-off-by: Liam Beguin <liambeguin@xxxxxxxxx>
---
Changes since v1:
- Improve Documentation and commit message
Documentation/config.txt | 19 +++++++++++++++++++
Documentation/git-rebase.txt | 19 +++++++++++++++++++
git-rebase--interactive.sh | 8 ++++++--
3 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 475e874d5155..8b1877f2df91 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -2614,6 +2614,25 @@ rebase.instructionFormat::
the instruction list during an interactive rebase. The format will
automatically
have the long commit hash prepended to the format.
+rebase.abbrevCmd::
+ If set to true, `git rebase -i` will abbreviate the command-names in the
+ instruction list. This means that instead of looking like this,
+
+-------------------------------------------
+ pick deadbee The oneline of this commit
+ pick fa1afe1 The oneline of the next commit
+ ...
+-------------------------------------------
+
+ the list would use the short version of the command resulting in
+ something like this.
Perhaps use an example which does have rebase commands of different lengths,
such as 'pick', 'squash', 'reword' to more clearly show the intent of
alignment and subsequent ease of editing?
--
Philip
+
+-------------------------------------------
+ p deadbee The oneline of this commit
+ p fa1afe1 The oneline of the next commit
+ ...
+-------------------------------------------
+
receive.advertiseAtomic::
By default, git-receive-pack will advertise the atomic push
capability to its clients. If you don't want to advertise this
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index 67d48e688315..7d97c0483241 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -222,6 +222,25 @@ rebase.missingCommitsCheck::
rebase.instructionFormat::
Custom commit list format to use during an `--interactive` rebase.
+rebase.abbrevCmd::
+ If set to true, `git rebase -i` will abbreviate the command-names in the
+ instruction list. This means that instead of looking like this,
+
+-------------------------------------------
+ pick deadbee The oneline of this commit
+ pick fa1afe1 The oneline of the next commit
+ ...
+-------------------------------------------
+
+ the list would use the short version of the command resulting in
+ something like this.
+
+-------------------------------------------
+ p deadbee The oneline of this commit
+ p fa1afe1 The oneline of the next commit
+ ...
+-------------------------------------------
+
OPTIONS
-------
--onto <newbase>::
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index 2c9c0165b5ab..9f3e82b79615 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -1210,6 +1210,10 @@ else
revisions=$onto...$orig_head
shortrevisions=$shorthead
fi
+
+rebasecmd=pick
+test "$(git config --bool --get rebase.abbrevCmd)" = true && rebasecmd=p
+
format=$(git config --get rebase.instructionFormat)
# the 'rev-list .. | sed' requires %m to parse; the instruction requires
%H to parse
git rev-list $merges_option --format="%m%H ${format:-%s}" \
@@ -1228,7 +1232,7 @@ do
if test t != "$preserve_merges"
then
- printf '%s\n' "${comment_out}pick $sha1 $rest" >>"$todo"
+ printf '%s\n' "${comment_out}${rebasecmd} $sha1 $rest" >>"$todo"
else
if test -z "$rebase_root"
then
@@ -1246,7 +1250,7 @@ do
if test f = "$preserve"
then
touch "$rewritten"/$sha1
- printf '%s\n' "${comment_out}pick $sha1 $rest" >>"$todo"
+ printf '%s\n' "${comment_out}${rebasecmd} $sha1 $rest" >>"$todo"
fi
fi
done
--
2.9.3