git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 1/2] git add -p: new "quit" command at the prompt.

From
Matthieu Moy <matthieu.moy@imag.fr>
Date
Apr 16, 2009, 16:46 UTC
Message-ID
<1239900383-29628-1-git-send-email-Matthieu.Moy@imag.fr>
In-Reply-To
<vpqiql4tuov.fsf@bauges.imag.fr>

There's already 'd' to stop staging hunks in a file, but no explicit command to stop the interactive staging (for the current files and the remaining ones). Of course you can do 'd' and then ^C, but it would be more intuitive to allow 'quit' action.

Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 Documentation/git-add.txt |    1 +
 git-add--interactive.perl |   20 +++++++++++++++++++-
 2 files changed, 20 insertions(+), 1 deletions(-)
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index ce71838..709e04b 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -245,6 +245,7 @@ patch::
 
        y - stage this hunk
        n - do not stage this hunk
+       q - quite, do not stage this hunk nor any of the remaining ones
        a - stage this and all the remaining hunks in the file
        d - do not stage this hunk nor any of the remaining hunks in the file
        j - leave this hunk undecided, see next undecided hunk
diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index def062a..210d230 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -894,6 +894,7 @@ sub help_patch_cmd {
 	print colored $help_color, <<\EOF ;
 y - stage this hunk
 n - do not stage this hunk
+q - quit, do not stage this hunk nor any of the remaining ones
 a - stage this and all the remaining hunks in the file
 d - do not stage this hunk nor any of the remaining hunks in the file
 g - select a hunk to go to
@@ -930,7 +931,7 @@ sub patch_update_cmd {
 					@mods);
 	}
 	for (@them) {
-		patch_update_file($_->{VALUE});
+		return 0 if patch_update_file($_->{VALUE});
 	}
 }
 
@@ -976,6 +977,7 @@ sub display_hunks {
 }
 
 sub patch_update_file {
+	my $quit = 0;
 	my ($ix, $num);
 	my $path = shift;
 	my ($head, @hunk) = parse_diff($path);
@@ -1006,6 +1008,11 @@ sub patch_update_file {
 				$_->{USE} = 0 foreach ($mode, @hunk);
 				last;
 			}
+			elsif ($line =~ /^q/i) {
+				$_->{USE} = 0 foreach ($mode, @hunk);
+				$quit = 1;
+				last;
+			}
 			else {
 				help_patch_cmd('');
 				next;
@@ -1113,6 +1120,16 @@ sub patch_update_file {
 				}
 				next;
 			}
+			elsif ($line =~ /^q/i) {
+				while ($ix < $num) {
+					if (!defined $hunk[$ix]{USE}) {
+						$hunk[$ix]{USE} = 0;
+					}
+					$ix++;
+				}
+				$quit = 1;
+				next;
+			}
 			elsif ($line =~ m|^/(.*)|) {
 				my $regex = $1;
 				if ($1 eq "") {
@@ -1239,6 +1256,7 @@ sub patch_update_file {
 	}
 
 	print "\n";
+	return $quit;
 }
 
 sub diff_cmd {
-- 
1.6.2.2.449.g92961.dirty
Previous: Matthieu MoyNext: Matthieu Moy
Message 14 of 15 in “git add -p: new "quit" command at the prompt.”
  1. git add -p: new "quit" command at the prompt.Matthieu Moy, Apr 10, 2009
  2. Junio C HamanoApr 11, 2009
  3. Matthieu MoyApr 12, 2009
  4. Sverre RabbelierApr 12, 2009
  5. Miles BaderApr 13, 2009
  6. Re: git add -p: new "quit" command at the prompt.Nicolas Sebrecht, Apr 12, 2009
  7. Wincent ColaiutaApr 13, 2009
  8. Matthieu MoyApr 14, 2009
  9. Junio C HamanoApr 15, 2009
  10. Jeff KingApr 16, 2009
  11. Jeff KingApr 16, 2009
  12. Jeff KingApr 16, 2009
  13. Matthieu MoyApr 16, 2009
  14. 1/2 git add -p: new "quit" command at the prompt.Matthieu Moy, Apr 16, 2009
  15. 2/2 Update git-add.txt according to the new possibilities of 'git add -p'.Matthieu Moy, Apr 16, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.