From: Sina Siadat <siadat@gmail.com>
To: git@vger.kernel.org
Cc: Sina Siadat <siadat@gmail.com>
Subject: [PATCH] git-add-interactive: edit current file in editor
Date: Tue, 28 Jul 2015 04:11:22 +0430 [thread overview]
Message-ID: <1438040482-4599-1-git-send-email-siadat@gmail.com> (raw)
Adds a new option 'o' to the 'add -p' command that lets you open and edit the
current file.
The existing 'e' mode is used to manually edit the hunk. The new 'o' option
allows you to open and edit the file without having to quit the loop. The hunks
are updated when the editing is done, and the user will be able to review the
updated hunks. Without this option you would have to quit the loop, edit the
file, and execute 'add -p filename' again.
I would appreciate it if you could let me know what you think about this
option. I will write more tests if there is any interest at all.
Thank you. :)
---
Documentation/git-add.txt | 1 +
git-add--interactive.perl | 11 ++++++++++-
t/t3701-add-interactive.sh | 6 ++++++
3 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index fe5282f..6752eb0 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -312,6 +312,7 @@ patch::
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
+ o - open this file in editor
? - print help
+
After deciding the fate for all hunks, if there is any hunk
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 77876d4..a44f3b3 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -1175,6 +1175,7 @@ k - leave this hunk undecided, see previous undecided hunk
K - leave this hunk undecided, see previous hunk
s - split the current hunk into smaller hunks
e - manually edit the current hunk
+o - open this file in editor
? - print help
EOF
}
@@ -1359,7 +1360,7 @@ sub patch_update_file {
$hunk[$ix]{TYPE} eq 'deletion' ? ' deletion' :
' this hunk'),
$patch_mode_flavour{TARGET},
- " [y,n,q,a,d,/$other,?]? ";
+ " [y,n,q,a,d,o,/$other,?]? ";
my $line = prompt_single_character;
last unless defined $line;
if ($line) {
@@ -1378,6 +1379,14 @@ sub patch_update_file {
}
next;
}
+ elsif ($line =~ /^o/) {
+ chomp(my $editor = run_cmd_pipe(qw(git var GIT_EDITOR)));
+ system('sh', '-c', $editor.' "$@"', $editor, $path);
+ ($head, @hunk) = parse_diff($path);
+ $num = scalar @hunk;
+ $ix = 0;
+ next;
+ }
elsif ($other =~ /g/ && $line =~ /^g(.*)/) {
my $response = $1;
my $no = $ix > 10 ? $ix - 10 : 0;
diff --git a/t/t3701-add-interactive.sh b/t/t3701-add-interactive.sh
index deae948..e5dd1c6 100755
--- a/t/t3701-add-interactive.sh
+++ b/t/t3701-add-interactive.sh
@@ -98,6 +98,12 @@ test_expect_success 'dummy edit works' '
test_cmp expected diff
'
+test_expect_success 'dummy open works' '
+ (echo o; echo a) | git add -p &&
+ git diff > diff &&
+ test_cmp expected diff
+'
+
test_expect_success 'setup patch' '
cat >patch <<EOF
@@ -1,1 +1,4 @@
--
2.5.0.rc3.2.g6f9504c.dirty
next reply other threads:[~2015-07-27 23:41 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-27 23:41 Sina Siadat [this message]
2015-07-28 5:12 ` [PATCH] git-add-interactive: edit current file in editor Jacob Keller
2015-07-29 19:05 ` Eric Sunshine
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=1438040482-4599-1-git-send-email-siadat@gmail.com \
--to=siadat@gmail.com \
--cc=git@vger.kernel.org \
/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).