]> git.madduck.net Git - code/myrepos.git/blobdiff - mr

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

releasing version 0.27
[code/myrepos.git] / mr
diff --git a/mr b/mr
index 9efe969fcaa8dbc326328de98085550ac5e16777..d4622d93e01c3ed60be2f4e69dd42cdffadb08f0 100755 (executable)
--- 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.
 
 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
 =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 $verbose=0;
 my $quiet=0;
 my $stats=0;
+my $interactive=0;
 my $max_depth;
 my $no_chdir=0;
 my $jobs=1;
 my $max_depth;
 my $no_chdir=0;
 my $jobs=1;
@@ -598,6 +605,11 @@ sub record { #{{{
                print "\n";
        }
        elsif ($ret == FAILED) {
                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";
        }
                push @failed, $dir;
                print "\n";
        }
@@ -1072,6 +1084,7 @@ sub getopts { #{{{
                "v|verbose" => \$verbose,
                "q|quiet" => \$quiet,
                "s|stats" => \$stats,
                "v|verbose" => \$verbose,
                "q|quiet" => \$quiet,
                "s|stats" => \$stats,
+               "i|interactive" => \$interactive,
                "n|no-recurse:i" => \$max_depth,
                "j|jobs:i" => \$jobs,
        );
                "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 "$@"
        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 "$@"
 bzr_update = bzr merge "$@"
 cvs_update = cvs update "$@"
 hg_update  = hg pull "$@" && hg update "$@"
@@ -1199,7 +1207,7 @@ git_status = git status "$@" || true
 bzr_status = bzr status "$@"
 cvs_status = cvs status "$@"
 hg_status  = hg status "$@"
 bzr_status = bzr status "$@"
 cvs_status = cvs status "$@"
 hg_status  = hg status "$@"
-darcs_status = darcs whatsnew -ls "$@"
+darcs_status = darcs whatsnew -ls "$@" || true
 
 svn_commit = svn commit "$@"
 git_commit = git commit -a "$@" && git push --all
 
 svn_commit = svn commit "$@"
 git_commit = git commit -a "$@" && git push --all
@@ -1208,10 +1216,10 @@ cvs_commit = cvs commit "$@"
 hg_commit  = hg commit -m "$@" && hg push
 darcs_commit = darcs record -a -m "$@" && darcs push -a
 
 hg_commit  = hg commit -m "$@" && hg push
 darcs_commit = darcs record -a -m "$@" && darcs push -a
 
-git_commit = git commit -a "$@"
-bzr_commit = bzr commit "$@"
-hg_commit  = hg commit -m "$@"
-darcs_commit = darcs record -a -m "$@"
+git_record = git commit -a "$@"
+bzr_record = bzr commit "$@"
+hg_record  = hg commit -m "$@"
+darcs_record = darcs record -a -m "$@"
 
 svn_diff = svn diff "$@"
 git_diff = git diff "$@"
 
 svn_diff = svn diff "$@"
 git_diff = git diff "$@"
@@ -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 =
        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
        if [ -z "$url" ]; then
                error "cannot determine bzr url"
        fi