X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/4be19aacd0842e9e434e6c6795244fdb13689a33..01e31b7bf9ff8d46bcddf61c6e995f4dbf52da1c:/mr diff --git a/mr b/mr index 67196ca..62c6be8 100755 --- a/mr +++ b/mr @@ -343,6 +343,11 @@ sub rcs_test { #{{{ print "mr $action: running rcs test >>$test<<\n" if $verbose; my $rcs=`$test`; chomp $rcs; + if ($rcs=~/\n/s) { + $rcs=~s/\n/, /g; + print STDERR "mr $action: found multiple possible repository types ($rcs) for $topdir$subdir\n"; + return undef; + } if (! length $rcs) { return undef; } @@ -960,14 +965,19 @@ sub register { #{{{ # Find the closest known mrconfig file to the current # directory. $directory.="/" unless $directory=~/\/$/; + my $foundconfig=0; foreach my $topdir (reverse sort keys %config) { next unless length $topdir; if ($directory=~/^\Q$topdir\E/) { $ENV{MR_CONFIG}=$configfiles{$topdir}; $directory=$topdir; + $foundconfig=1; last; } } + if (! $foundconfig) { + $directory=""; # no config file, use builtin + } } if (@ARGV) { my $subdir=shift @ARGV; @@ -1015,7 +1025,7 @@ sub expandaction { #{{{ } #}}} sub getopts { #{{{ - Getopt::Long::Configure("no_permute"); + Getopt::Long::Configure("bundling", "no_permute"); my $result=GetOptions( "d|directory=s" => sub { $directory=abs_path($_[1]) }, "c|config=s" => sub { $ENV{MR_CONFIG}=$_[1]; $config_overridden=1 }, @@ -1131,7 +1141,7 @@ darcs_test = test -d "$MR_REPO"/_darcs git_bare_test = test -d "$MR_REPO"/refs/heads && test -d "$MR_REPO"/refs/tags && test -d "$MR_REPO"/objects && test -f "$MR_REPO"/config && - test "$(GIT_CONFIG="$MR_REPO"/config git-config --get core.bare)" = true + 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 -t origin master; fi @@ -1177,7 +1187,7 @@ svn_register = echo "Registering svn url: $url in $MR_CONFIG" mr -c "$MR_CONFIG" config "`pwd`" checkout="svn co '$url' '$MR_REPO'" git_register = - url="$(LANG=C git-config --get remote.origin.url)" || true + url="$(LANG=C git config --get remote.origin.url)" || true if [ -z "$url" ]; then error "cannot determine git url" fi @@ -1207,7 +1217,7 @@ darcs_register = echo "Registering darcs repository $url in $MR_CONFIG" mr -c "$MR_CONFIG" config "`pwd`" checkout="darcs get '$url'p '$MR_REPO'" git_bare_register = - url="$(LANG=C GIT_CONFIG=config git-config --get remote.origin.url)" || true + url="$(LANG=C GIT_CONFIG=config git config --get remote.origin.url)" || true if [ -z "$url" ]; then error "cannot determine git url" fi