diff --git a/vcsh b/vcsh
index 9480b485fe883e390dd9c18da25dda23525fc5b2..54026cf0ac4f67383ec86e5ff831d70b3f0a5222 100755
--- a/vcsh
+++ b/vcsh
@@ -361,22 +361,23 @@ run() {
 
 status() {
 	if [ -n "$VCSH_REPO_NAME" ]; then
-		GIT_DIR=$VCSH_REPO_D/$VCSH_REPO_NAME.git; export GIT_DIR
-		use
-		git status --short --untracked-files='no'
-		VCSH_COMMAND_RETURN_CODE=$?
+		status_helper $VCSH_REPO_NAME
 	else
 		for VCSH_REPO_NAME in $(list); do
 			echo "$VCSH_REPO_NAME:"
-			GIT_DIR=$VCSH_REPO_D/$VCSH_REPO_NAME.git; export GIT_DIR
-			use
-			git status --short --untracked-files='no'
-			VCSH_COMMAND_RETURN_CODE=$?
+			status_helper $VCSH_REPO_NAME
 			echo
 		done
 	fi
 }
 
+status_helper() {
+	GIT_DIR=$VCSH_REPO_D/$VCSH_REPO_NAME.git; export GIT_DIR
+	use
+	git status --short --untracked-files='no'
+	VCSH_COMMAND_RETURN_CODE=$?
+}
+
 upgrade() {
 	hook pre-upgrade
 	# fake-bare repositories are not bare, actually. Set this to false