+ for REPO in "$@"; do
+ REPO_NAME=$REPO.git
+ LOCAL_REPO=$LOCAL_REPOS/$REPO_NAME
+ REPO_URL=ssh://$GIT_HOST/$REMOTE_REPOS/$REPO_NAME
+
+ if [ -e "$LOCAL_REPO" ]; then
+ echo $LOCAL_REPO already exists
+ exit 1
+ else
+ trap "unset GIT_DIR; unset GIT_WORK_TREE; rm -rf $LOCAL_REPO" 0
+ mkdir -p "$LOCAL_REPO"
+ export GIT_DIR="$LOCAL_REPO"
+ git_work_tree "$REPO_NAME"
+ git init --bare
+ git remote add origin $REPO_URL
+ git config branch.master.remote origin
+ git config branch.master.merge refs/heads/master
+ git config core.bare false
+ git config core.worktree "$GIT_WORK_TREE"
+ git config status.showUntrackedFiles no
+ git pull
+ trap - 0
+
+ mr -c "$MRCONFIG" config "$LOCAL_REPO" checkout="git_fake_bare_checkout '$REPO_URL' '$REPO_NAME' '$GIT_WORK_TREE'"
+ fi
+ done
+}
+
+list() {
+ find "${LOCAL_REPOS}" -mindepth 1 -type d -name '*.git' | sed "s,${LOCAL_REPOS}/,,"
+}
+
+listremote() {
+ ssh $GIT_HOST "
+ find '${REMOTE_REPOS}' -mindepth 1 -type d -name '*.git' | sed 's,${REMOTE_REPOS}/,,'
+ " </dev/null
+}
+
+locate() {
+ local REPO
+ if [ $# -ne 1 ]; then
+ usage
+ fi
+ for REPO in $($0 list); do
+ (cd /; $0 exec "$REPO" git ls-files | sed -nr "/$1/{s/^/$REPO:/p}")
+ done