From 1610ff290fb8fd39be43f5063163751a36e17f1e Mon Sep 17 00:00:00 2001 From: Alexander Wirt Date: Sat, 20 Oct 2007 12:10:25 +0200 Subject: [PATCH] Add support for mercurial Hi Joey, this patch adds support for mecurial to mr. It would be nice if you would be able to integrate it into mr. Thanks Alex --- debian/changelog | 6 +++++- mr | 27 +++++++++++++++++++++------ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index 734ded3..b722e3a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,5 +1,6 @@ mr (0.5) UNRELEASED; urgency=low + [ Joey Hess ] * Removed special case repository deletion handling code. The same thing can be accomplished in a mrconfig by skipping a repo unless it exists, and printing a reminder on update. See the mrconfig file @@ -9,7 +10,10 @@ mr (0.5) UNRELEASED; urgency=low are pulled. And since those might not always be the right parameters for git pull, any parameters passed to mr update will replace them. - -- Joey Hess Fri, 19 Oct 2007 20:45:07 -0400 + [ Alexander Wirt ] + * Add support for mercurial (http://www.selenic.com/mercurial/) + + -- Alexander Wirt Sat, 20 Oct 2007 11:03:27 +0200 mr (0.4) unstable; urgency=low diff --git a/mr b/mr index cd0dea7..a3d3a45 100755 --- a/mr +++ b/mr @@ -28,11 +28,11 @@ B [options] action [params ...] =head1 DESCRIPTION -B is a Multiple Repository management tool. It -can checkout, update, or perform other actions on -a set of repositories as if they were one combined respository. It -supports any combination of subversion, git, cvs, and bzr repositories, -and support for other revision control systems can easily be added. +B is a Multiple Repository management tool. It can checkout, update, or +perform other actions on a set of repositories as if they were one combined +respository. It supports any combination of subversion, git, cvs, mecurial and +bzr repositories, and support for other revision control systems can easily be +added. B cds into and operates on all registered repositories at or below your working directory. Or, if you are in a subdirectory of a repository that @@ -792,7 +792,7 @@ lib = exit 1 } hours_since() { - for dir in .git .svn .bzr CVS; do + for dir in .git .svn .bzr CVS .hg; do if [ -e "$MR_REPO/$dir" ]; then flagfile="$MR_REPO/$dir/.mr_last$1" break @@ -818,6 +818,8 @@ update = bzr merge "$@" elif [ -d "$MR_REPO"/CVS ]; then cvs update "$@" + elif [ -d "$MR_REPO"/.hg ]; then + hg pull "$@" && hg update "$@" else error "unknown repo type" fi @@ -830,6 +832,8 @@ status = bzr status "$@" elif [ -d "$MR_REPO"/CVS ]; then cvs status "$@" + elif [ -d "$MR_REPO"/.hg ]; then + hg status "$@" else error "unknown repo type" fi @@ -842,6 +846,8 @@ commit = bzr commit "$@" && bzr push elif [ -d "$MR_REPO"/CVS ]; then cvs commit "$@" + elif [ -d "$MR_REPO"/.hg ]; then + hg commit -m "$@" && hg push else error "unknown repo type" fi @@ -854,6 +860,8 @@ diff = bzr diff "$@" elif [ -d "$MR_REPO"/CVS ]; then cvs diff "$@" + elif [ -d "$MR_REPO"/.hg ]; then + hg diff "$@" else error "unknown repo type" fi @@ -866,6 +874,8 @@ log = bzr log "$@" elif [ -d "$MR_REPO"/CVS ]; then cvs log "$@" + elif [ -d "$MR_REPO"/.hg ]; then + hg log "$@" else error "unknown repo type" fi @@ -904,6 +914,11 @@ register = 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" else error "unable to register this repo type" fi -- 2.39.5