+diff =
+ if [ -d "$MR_REPO"/.svn ]; then
+ svn diff "$@"
+ elif is_git_repo "$MR_REPO"; then
+ case "$(get_git_repo_type "$MR_REPO")" in
+ bare) error "cannot diff in bare git repositories";;
+ fake-bare) error "diff does not work for fake bare git repositories (yet).";;
+ esac
+ git diff "$@"
+ elif [ -d "$MR_REPO"/.bzr ]; then
+ bzr diff "$@"
+ elif [ -d "$MR_REPO"/CVS ]; then
+ cvs diff "$@"
+ elif [ -d "$MR_REPO"/.hg ]; then
+ hg diff "$@"
+ elif [ -d "$MR_REPO"/_darcs ]; then
+ darcs diff "$@"
+ else
+ error "unknown repo type"
+ fi
+log =
+ if [ -d "$MR_REPO"/.svn ]; then
+ svn log"$@"
+ elif is_git_repo "$MR_REPO"; then
+ git log "$@"
+ elif [ -d "$MR_REPO"/.bzr ]; then
+ bzr log "$@"
+ elif [ -d "$MR_REPO"/CVS ]; then
+ cvs log "$@"
+ elif [ -d "$MR_REPO"/.hg ]; then
+ hg log "$@"
+ elif [ -d "$MR_REPO"/_darcs ]; then
+ darcs changes "$@"
+ else
+ error "unknown repo type"
+ fi
+register =
+ if [ -n "$1" ]; then
+ cd "$1"
+ fi
+ basedir="$(basename $(pwd))"
+ if [ -d .svn ]; then
+ url=$(LANG=C svn info . | grep -i ^URL: | cut -d ' ' -f 2)
+ if [ -z "$url" ]; then
+ error "cannot determine svn url"
+ fi
+ echo "Registering svn url: $url in $MR_CONFIG"
+ mr -c "$MR_CONFIG" config "$(pwd)" checkout="svn co $url $basedir"
+ elif is_git_repo .; then
+ local repo_type; repo_type="$(get_git_repo_type .)"
+ local config;
+ case "$repo_type" in
+ non-bare) config=.git/config;;
+ bare|fake-bare) config=config;;
+ *) error "unknown git repository type: $repo_type"
+ esac
+ url="$(LANG=C GIT_CONFIG="$config" git-config --get remote.origin.url)"
+ if [ -z "$url" ]; then
+ error "cannot determine git url"
+ fi
+ case "$repo_type" in
+ bare|fake-bare)
+ # this seems like a bare repo as it has no
+ # worktree.
+ local work_tree
+ work_tree="$(git-config --get core.worktree)" || :
+ if [ ! -d "$work_tree" ]; then
+ error "git worktree $work_tree does not exist"
+ fi
+ suffix=" (with worktree $work_tree)"
+ mr -c "$MR_CONFIG" config "$(pwd)" \
+ lib="GIT_WORK_TREE=$work_tree; export GIT_WORK_TREE"
+ ;;
+ esac
+ echo "Registering git url: $url in $MR_CONFIG${suffix:-}"
+ mr -c "$MR_CONFIG" config "$(pwd)" checkout="git clone $url $basedir"
+ elif [ -d .bzr ]; then
+ url=$(cat .bzr/branch/parent)
+ if [ -z "$url" ]; then
+ error "cannot determine bzr url"
+ fi
+ echo "Registering bzr url: $url in $MR_CONFIG"
+ mr -c "$MR_CONFIG" config "$(pwd)" checkout="bzr clone $url $basedir"
+ elif [ -d CVS ]; then
+ repo=$(cat CVS/Repository)
+ root=$(cat CVS/Root)
+ if [ -z "$root" ]; then
+ error "cannot determine cvs root"
+ fi
+ echo "Registering cvs repository $repo at root $root"
+ mr -c "$MR_CONFIG" config "$(pwd)" \
+ checkout="cvs -d '$root' co -d $basedir $repo"
+ elif [ -d .hg ]; then
+ url=$(hg showconfig paths.default)
+ echo "Registering mercurial repo url: $url in $MR_CONFIG"
+ mr -c "$MR_CONFIG" config "$(pwd)" \
+ checkout="hg clone $url $basedir"
+ elif [ -d _darcs ]; then
+ url=$(cat _darcs/prefs/defaultrepo)
+ echo "Registering darcs repository $url in $MR_CONFIG"
+ mr -c "$MR_CONFIG" config "$(pwd)" \
+ checkout="darcs get $url $basedir"
+ else
+ error "unable to register this repo type"
+ fi
+help =
+ if [ ! -e "$MR_PATH" ]; then
+ error "cannot find program path"
+ fi
+ (pod2man -c mr "$MR_PATH" | man -l -) || error "pod2man or man failed"
+list = true
+config =
+
+ed = echo "A horse is a horse, of course, of course.."
+T = echo "I pity the fool."
+right = echo "Not found."
+#}}}
+
+# vim:sw=8:sts=0:ts=8:noet