From: Jeff King <peff@peff.net>
To: Nguyen Thai Ngoc Duy <pclouds@gmail.com>
Cc: git@vger.kernel.org
Subject: [PATCH 5/5] add--interactive: add option to autosplit hunks
Date: Wed, 27 Jul 2011 02:06:01 -0600 [thread overview]
Message-ID: <20110727080601.GE14002@sigill.intra.peff.net> (raw)
In-Reply-To: <20110727080303.GA8105@sigill.intra.peff.net>
It is sometimes useful to see changes in their smallest
possible form, rather than complete hunks with overlapping
context. You can do this manually, of course, with the
's'plit hunk command. But when filtering hunks, you may want
to pre-split to give your filtering a finer granularity.
This patch adds only the perl infrastructure; to expose this
to the user, the various callers of add--interactive need to
pass the new option through to the perl script.
Signed-off-by: Jeff King <peff@peff.net>
---
git-add--interactive.perl | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 917b2a9..41c7c6f 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -88,6 +88,7 @@ my $patch_mode;
my $patch_mode_revision;
my @patch_mode_hunk_filter;
my $patch_mode_negate_filter;
+my $patch_mode_autosplit;
sub apply_patch;
sub apply_patch_for_checkout_commit;
@@ -1291,6 +1292,10 @@ sub patch_update_file {
my $path = shift;
my ($head, @hunk) = parse_diff($path);
+ if ($patch_mode_autosplit) {
+ @hunk = map { split_hunk($_->{TEXT}, $_->{DISPLAY}) } @hunk;
+ }
+
if (@patch_mode_hunk_filter) {
@hunk = grep { want_hunk($_) } @hunk;
return unless @hunk;
@@ -1594,6 +1599,9 @@ sub process_args {
elsif ($ARGV[0] eq '--negate-hunk-filter') {
$patch_mode_negate_filter = 1;
}
+ elsif ($ARGV[0] eq '--split-hunks') {
+ $patch_mode_autosplit = 1;
+ }
else {
last;
}
--
1.7.5.4.31.ge4d5e
prev parent reply other threads:[~2011-07-27 8:06 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-07-24 5:11 feature request: git add--interactive --patch on regex-matched hunks only Nguyen Thai Ngoc Duy
2011-07-25 21:55 ` Jeff King
2011-07-25 23:44 ` Junio C Hamano
2011-07-26 5:03 ` Jeff King
2011-07-26 3:03 ` Nguyen Thai Ngoc Duy
2011-07-26 5:14 ` Jeff King
2011-07-26 5:57 ` Nguyen Thai Ngoc Duy
2011-07-26 6:09 ` Jeff King
2011-07-26 12:44 ` Nguyen Thai Ngoc Duy
2011-07-26 13:03 ` Nguyen Thai Ngoc Duy
2011-07-27 8:10 ` Jeff King
2011-07-27 9:02 ` Nguyen Thai Ngoc Duy
2011-07-27 17:24 ` Jeff King
2011-07-27 8:03 ` Jeff King
2011-07-27 8:05 ` [PATCH 1/5] add--interactive: refactor patch mode argument processing Jeff King
2011-07-27 8:05 ` [PATCH 2/5] add--interactive: factor out regex error handling Jeff King
2011-07-27 8:05 ` [PATCH 3/5] add--interactive: allow hunk filtering on command line Jeff King
2011-07-27 8:05 ` [PATCH 4/5] add--interactive: allow negatation of hunk filters Jeff King
2011-07-27 8:06 ` Jeff King [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=20110727080601.GE14002@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=pclouds@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).