From 01ec3b770fb914f3f2210a9b6106e9ea82bf0e6b Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 8 Apr 2008 13:55:01 -0400 Subject: [PATCH 1/1] Add -i option to start a shell if an operation fails. Closes: #474962 --- debian/changelog | 6 ++++++ mr | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/debian/changelog b/debian/changelog index c36c960..757652c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +mr (0.26) UNRELEASED; urgency=low + + * Add -i option to start a shell if an operation fails. Closes: #474962 + + -- Joey Hess Tue, 08 Apr 2008 13:54:35 -0400 + mr (0.25) unstable; urgency=low * git-fake-bare: Add support for diff, commit, and record. (madduck) diff --git a/mr b/mr index 412209d..4c7be3d 100755 --- a/mr +++ b/mr @@ -167,6 +167,12 @@ Be quiet. Expand the statistics line displayed at the end to include information about exactly which repositories failed and were skipped, if any. +=item -i + +Interactive mode. If a repository fails to be processed, a subshell will be +started which you can use to resolve or investigate the problem. Exit the +subshell to continue the mr run. + =item -n [number] If no number if specified, just operate on the repository for the current @@ -333,6 +339,7 @@ my $config_overridden=0; my $verbose=0; my $quiet=0; my $stats=0; +my $interactive=0; my $max_depth; my $no_chdir=0; my $jobs=1; @@ -598,6 +605,11 @@ sub record { #{{{ print "\n"; } elsif ($ret == FAILED) { + if ($interactive) { + chdir($dir) unless $no_chdir; + print STDERR "mr: starting interactive shell. Exit shell to continue.\n"; + system((getpwuid($<))[8]); + } push @failed, $dir; print "\n"; } @@ -1072,6 +1084,7 @@ sub getopts { #{{{ "v|verbose" => \$verbose, "q|quiet" => \$quiet, "s|stats" => \$stats, + "i|interactive" => \$interactive, "n|no-recurse:i" => \$max_depth, "j|jobs:i" => \$jobs, ); -- 2.39.5