Subject: Re: [PATCH 2/2] add--interactive: added [c]heckout

From: Marc Weber <[email-masked]>
Date: Mon, 6 Oct 2008 17:55:35 +0200

> Uhm, what is this patch against?  git.git?  If so why are we creating
> a new 1129 line script named something erily close to a script we
> already have?
I accidently added the dist file git-add--interactive instead of
the .perl file.. I'll take more care the next time.
Both patches should apply cleanly against git.git master branch c4275591fb

============= 2/2 starting at commit message =========================
>From 741d1e87669ced27a41f8be1b7b65836bd969d5a Mon Sep 17 00:00:00 2001
Message-Id: <741d[email-masked]>
In-Reply-To: <b41e[email-masked]>
References: <b41e[email-masked]>
From: Marc Weber <[email-masked]>
Date: Mon, 6 Oct 2008 14:32:13 +0000
Subject: [PATCH 2/2] add--interactive: added [c]heckout

this is convinient for cygwin users not using rxvt.

command added last (before quit and help) to not break menu layout and keep exisiting
numbering

Signed-off-by: Marc Weber <[email-masked]>
---
 git-add--interactive.perl |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)

diff --git a/git-add--interactive.perl b/git-add--interactive.perl
index 5352d16..34629b5 100755
--- a/git-add--interactive.perl
+++ b/git-add--interactive.perl
@@ -532,6 +532,27 @@ sub reset_cmd {
 	print "\n";
 }
 
+sub checkout_cmd {
+	my @update = list_and_choose({ PROMPT => 'Checkout',
+				       HEADER => $status_head, },
+				     list_modified());
+	if (@update) {
+		if (is_initial_commit()) {
+			# should never be executed because there can't be modified files
+			print "error: no revision in repo yet\n";
+		}
+		else {
+			for (@update) {
+				system(qw(git checkout --),
+				$_->{VALUE});
+			}
+		}
+		refresh();
+		say_n_paths('checked out', @update);
+	}
+	print "\n";
+}
+
 sub add_untracked_cmd {
 	my @add = list_and_choose({ PROMPT => 'Add untracked' },
 				  list_untracked());
@@ -1074,6 +1095,7 @@ sub main_loop {
 		   [ 'add untracked', \&add_untracked_cmd, ],
 		   [ 'patch', \&patch_update_cmd, ],
 		   [ 'diff', \&diff_cmd, ],
+		   [ 'checkout', \&checkout_cmd, ],
 		   [ 'quit', \&quit_cmd, ],
 		   [ 'help', \&help_cmd, ],
 	);
-- 
1.6.0.2.GIT