From b31f4a06237f93391f875e401a7ec3181d82ef47 Mon Sep 17 00:00:00 2001
From: Richard Hartmann <richih.mailinglist@gmail.com>
Date: Tue, 29 Nov 2011 15:53:00 +0100
Subject: [PATCH] Update to mr support

* manpage
* set $VCSH_REPO_NAME (this assumes .git suffix!)
---
 doc/vcsh.1.ronn | 7 +++++++
 vcsh            | 6 +++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/doc/vcsh.1.ronn b/doc/vcsh.1.ronn
index 21ded83..e06c5f9 100644
--- a/doc/vcsh.1.ronn
+++ b/doc/vcsh.1.ronn
@@ -71,6 +71,13 @@ A sample configuration for `vcsh` and `mr` can be found at
   Run command with <$GIT_DIR> and <$GIT_WORK_TREE> set. Allows you to run any
   and all commands without any restrictions. Use with care.
 
+  Please note that there is a somewhat magic feature for run. Instead of <repo>
+  it accepts <path>, as well. Anything that has a slash in it will be assumed to
+  be a path. `vcsh run` will then operate on this directory instead of the one
+  normally generated from the repository's name.
+  This is needed to support mr and other scripts properly and of no concern to
+  an interactive user.
+
 * seed-gitignore:
   Seed .gitignore.d/<repo> from git ls-files.
 
diff --git a/vcsh b/vcsh
index 68e9120..04ea186 100755
--- a/vcsh
+++ b/vcsh
@@ -203,7 +203,11 @@ elif [ "$1" = 'delete' ] ||
 	if [ "$VCSH_COMMAND" = 'run' ]; then
 		shift 2
 		export VCSH_EXTERNAL_COMMAND="$*"
-		echo $VCSH_REPO_NAME | grep -q '/' && export GIT_DIR=$VCSH_REPO_NAME
+		# Did we receive a directory instead of a name? Mangle the input to fit normal operation!
+		if echo $VCSH_REPO_NAME | grep -q '/'; then
+			export GIT_DIR=$VCSH_REPO_NAME
+			export VCSH_REPO_NAME=$(basename $VCSH_REPO_NAME .git)
+		fi
 	fi
 	[ "$VCSH_COMMAND" = 'seed-gitignore' ]
 #	[ "$VCSH_COMMAND" = 'seed-gitignore' ] && export VCSH_COMMAND='seed_gitignore'
-- 
GitLab