X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/4d36da3584cb7d5126785a8bf0588268fc3d204d..5a5c5478ebd0c79622e6c68ecd32f04ec150ef9c:/mrconfig.git-fake-bare?ds=sidebyside diff --git a/mrconfig.git-fake-bare b/mrconfig.git-fake-bare index 7f3e9db..5ae396c 100644 --- a/mrconfig.git-fake-bare +++ b/mrconfig.git-fake-bare @@ -8,18 +8,26 @@ # section of your ~/.mrconfig #include = cat /path/to/mrconfig.git-fake-bare +# And an example repo using it would look something like: +#[.dotfiles] +#lib = git_fake_bare_worktree $HOME +#checkout = git_fake_bare_checkout git://... .dotfiles + 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() { - set -x url="$1" repo="$2" - worktree="${3%%/}/" - git clone --no-checkout "$url" "$repo" + GIT_WORK_TREE= git clone --no-checkout "$url" "$repo" cd "$repo" + mkdir -p "$GIT_WORK_TREE" git read-tree HEAD - git config core.worktree "$worktree" + git config core.worktree "$GIT_WORK_TREE" git checkout-index -a --prefix="$worktree" || true mv .git/* . rmdir .git @@ -61,7 +69,6 @@ git_fake_bare_register = if [ ! -d "$worktree" ]; then error "git worktree $worktree does not exist" fi - mr -c "$MR_CONFIG" config "`pwd`" \ - lib="GIT_WORK_TREE=$work_tree; export GIT_WORK_TREE" + 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' '$worktree'" + mr -c "$MR_CONFIG" config "`pwd`" checkout="git_fake_bare_checkout '$url' '$MR_REPO'"