-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
git-add: introduce --edit (to edit the diff vs. the index)
With "git add -e [<files>]", Git will fire up an editor with the current diff relative to the index (i.e. what you would get with "git diff [<files>]"). Now you can edit the patch as much as you like, including adding/removing lines, editing the text, whatever. Make sure, though, that the first character of the hunk lines is still a space, a plus or a minus. After you closed the editor, Git will adjust the line counts of the hunks if necessary, thanks to the --recount option of apply, and commit the patch. Except if you deleted everything, in which case nothing happens (for obvious reasons). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
- Loading branch information
Johannes Schindelin
authored and
Junio C Hamano
committed
Apr 12, 2009
1 parent
ee7ec2f
commit c59cb03
Showing
3 changed files
with
175 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
#!/bin/sh | ||
# | ||
# Copyright (c) 2007 Johannes E. Schindelin | ||
# | ||
|
||
test_description='add -e basic tests' | ||
. ./test-lib.sh | ||
|
||
|
||
cat > file << EOF | ||
LO, praise of the prowess of people-kings | ||
of spear-armed Danes, in days long sped, | ||
we have heard, and what honor the athelings won! | ||
Oft Scyld the Scefing from squadroned foes, | ||
from many a tribe, the mead-bench tore, | ||
awing the earls. Since erst he lay | ||
friendless, a foundling, fate repaid him: | ||
for he waxed under welkin, in wealth he throve, | ||
till before him the folk, both far and near, | ||
who house by the whale-path, heard his mandate, | ||
gave him gifts: a good king he! | ||
EOF | ||
|
||
test_expect_success 'setup' ' | ||
git add file && | ||
test_tick && | ||
git commit -m initial file | ||
' | ||
|
||
cat > expected-patch << EOF | ||
diff --git a/file b/file | ||
index b9834b5..0b8f197 100644 | ||
--- a/file | ||
+++ b/file | ||
@@ -1,11 +1,3 @@ | ||
-LO, praise of the prowess of people-kings | ||
-of spear-armed Danes, in days long sped, | ||
-we have heard, and what honor the athelings won! | ||
-Oft Scyld the Scefing from squadroned foes, | ||
-from many a tribe, the mead-bench tore, | ||
-awing the earls. Since erst he lay | ||
-friendless, a foundling, fate repaid him: | ||
-for he waxed under welkin, in wealth he throve, | ||
-till before him the folk, both far and near, | ||
-who house by the whale-path, heard his mandate, | ||
-gave him gifts: a good king he! | ||
+#!$SHELL_PATH | ||
+mv -f "\$1" orig-patch && | ||
+mv -f patch "\$1" | ||
EOF | ||
|
||
cat > patch << EOF | ||
diff --git a/file b/file | ||
index b9834b5..ef6e94c 100644 | ||
--- a/file | ||
+++ b/file | ||
@@ -3,1 +3,333 @@ of spear-armed Danes, in days long sped, | ||
we have heard, and what honor the athelings won! | ||
+ | ||
Oft Scyld the Scefing from squadroned foes, | ||
@@ -2,7 +1,5 @@ awing the earls. Since erst he lay | ||
friendless, a foundling, fate repaid him: | ||
+ | ||
for he waxed under welkin, in wealth he throve, | ||
EOF | ||
|
||
cat > expected << EOF | ||
diff --git a/file b/file | ||
index b9834b5..ef6e94c 100644 | ||
--- a/file | ||
+++ b/file | ||
@@ -1,10 +1,12 @@ | ||
LO, praise of the prowess of people-kings | ||
of spear-armed Danes, in days long sped, | ||
we have heard, and what honor the athelings won! | ||
+ | ||
Oft Scyld the Scefing from squadroned foes, | ||
from many a tribe, the mead-bench tore, | ||
awing the earls. Since erst he lay | ||
friendless, a foundling, fate repaid him: | ||
+ | ||
for he waxed under welkin, in wealth he throve, | ||
till before him the folk, both far and near, | ||
who house by the whale-path, heard his mandate, | ||
EOF | ||
|
||
echo "#!$SHELL_PATH" >fake-editor.sh | ||
cat >> fake-editor.sh <<\EOF | ||
mv -f "$1" orig-patch && | ||
mv -f patch "$1" | ||
EOF | ||
|
||
test_set_editor "$(pwd)/fake-editor.sh" | ||
chmod a+x fake-editor.sh | ||
|
||
test_expect_success 'add -e' ' | ||
cp fake-editor.sh file && | ||
git add -e && | ||
test_cmp fake-editor.sh file && | ||
test_cmp orig-patch expected-patch && | ||
git diff --cached > out && | ||
test_cmp out expected | ||
' | ||
|
||
test_done |