X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/c00fe8afd2ae2e21fca7ad8408e674ae4f300d54..01ec3b770fb914f3f2210a9b6106e9ea82bf0e6b:/mr?ds=sidebyside diff --git a/mr b/mr index 33bde35..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, ); @@ -1183,12 +1196,7 @@ git_bare_test = test "`GIT_CONFIG="$MR_REPO"/config git config --get core.bare`" = true svn_update = svn update "$@" -git_update = - if [ "$@" ]; then - git pull "$@" - else - git pull - fi +git_update = git pull "$@" bzr_update = bzr merge "$@" cvs_update = cvs update "$@" hg_update = hg pull "$@" && hg update "$@" @@ -1243,7 +1251,7 @@ git_register = echo "Registering git url: $url in $MR_CONFIG" mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone '$url' '$MR_REPO'" bzr_register = - url=`cat .bzr/branch/parent` + url="`LC_ALL=C bzr info . | egrep -i 'checkout of branch|parent branch' | awk '{print $NF}'`" if [ -z "$url" ]; then error "cannot determine bzr url" fi