# And an example repo using it would look something like:
#[.dotfiles]
-#lib = git_fake_bare_worktree $HOME
-#checkout = git_fake_bare_checkout git://... .dotfiles
+#checkout = git_fake_bare_checkout git://... .dotfiles <worktree, eg. ..>
lib =
- # called to tell git where the worktree is
- git_fake_bare_worktree() {
- GIT_WORK_TREE="$1"; export GIT_WORK_TREE
- }
# git doesn't have an easy way to check out such a repo, so
# do it by hand
git_fake_bare_checkout() {
url="$1"
repo="$2"
- GIT_WORK_TREE= git clone --no-checkout "$url" "$repo"
+ worktree="$3"
+ git clone --no-checkout "$url" "$repo"
cd "$repo"
- mkdir -p "$GIT_WORK_TREE"
+ mkdir -p "$worktree"
git read-tree HEAD
- git config core.worktree "$GIT_WORK_TREE"
git checkout-index -a --prefix="$worktree" || true
+ git config core.worktree "$worktree"
mv .git/* .
rmdir .git
}
if [ ! -d "$worktree" ]; then
error "git worktree $worktree does not exist"
fi
- mr -c "$MR_CONFIG" config "`pwd`" lib="git_fake_bare_worktree '$worktree'"
echo "Registering git url: $url in $MR_CONFIG (with worktree $worktree)"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="git_fake_bare_checkout '$url' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" \
+ checkout="git_fake_bare_checkout '$url' '$MR_REPO' '$worktree'"
+
+# vim:sw=8:sts=0:ts=8:noet
[DEFAULT]
order = 10
lib =
+ PWD="$(pwd)"
error() {
echo "mr: $@" >&2
exit 1
error "cannot determine svn url"
fi
echo "Registering svn url: $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="svn co '$url' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="svn co '$url' '$MR_REPO'"
git_register =
url="$(LANG=C git-config --get remote.origin.url)" || true
if [ -z "$url" ]; then
error "cannot determine git url"
fi
echo "Registering git url: $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone '$url' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="git clone '$url' '$MR_REPO'"
bzr_register =
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' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="bzr clone '$url' '$MR_REPO'"
cvs_register =
repo=$(cat CVS/Repository)
root=$(cat CVS/Root)
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 '$MR_REPO' '$repo'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="cvs -d '$root' co -d '$MR_REPO' '$repo'"
hg_register =
url=$(hg showconfig paths.default)
echo "Registering mercurial repo url: $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="hg clone '$url' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="hg clone '$url' '$MR_REPO'"
darcs_register =
url=$(cat _darcs/prefs/defaultrepo)
echo "Registering darcs repository $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="darcs get '$url'p '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="darcs get '$url'p '$MR_REPO'"
git_bare_register =
url="$(LANG=C GIT_CONFIG=config git-config --get remote.origin.url)" || true
if [ -z "$url" ]; then
error "cannot determine git url"
fi
echo "Registering git url: $url in $MR_CONFIG"
- mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone --bare '$url' '$MR_REPO'"
+ mr -c "$MR_CONFIG" config "$PWD" checkout="git clone --bare '$url' '$MR_REPO'"
help =
if [ ! -e "$MR_PATH" ]; then