X-Git-Url: https://git.madduck.net/code/myrepos.git/blobdiff_plain/0e3a40817706ba6b4fc5ddfdd1e0ad60b555f597..8a2f5442b876c2bcf8890fa080dc479e6159f588:/mr?ds=sidebyside diff --git a/mr b/mr index 5794ab0..80b423f 100755 --- a/mr +++ b/mr @@ -1125,7 +1125,7 @@ svn_register = echo "Registering svn url: $url in $MR_CONFIG" mr -c "$MR_CONFIG" config "`pwd`" checkout="svn co $url $MR_REPO" git_register = - url="$(LANG=C git-config --get remote.origin.url)" + url="$(LANG=C git-config --get remote.origin.url)" || true if [ -z "$url" ]; then error "cannot determine git url" fi @@ -1155,27 +1155,37 @@ darcs_register = echo "Registering darcs repository $url in $MR_CONFIG" mr -c "$MR_CONFIG" config "`pwd`" checkout="darcs get $url $MR_REPO" git_bare_register = - url="$(LANG=C GIT_CONFIG=config git-config --get remote.origin.url)" + url="$(LANG=C GIT_CONFIG=config git-config --get remote.origin.url)" || true if [ -z "$url" ]; then error "cannot determine git url" fi - mr -c "$MR_CONFIG" config "`pwd`" \ - lib="GIT_WORK_TREE=$work_tree; export GIT_WORK_TREE" 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 --bare $url $MR_REPO" git_fake_bare_register = - url="$(LANG=C GIT_CONFIG=config git-config --get remote.origin.url)" + url="$(LANG=C GIT_CONFIG=config git-config --get remote.origin.url)" || true if [ -z "$url" ]; then error "cannot determine git url" fi worktree="$(git-config --get core.worktree)" || true + if [ -z "$worktree" ]; then + error "git worktree is not set" + fi + worktree="${worktree%%/}/" 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" echo "Registering git url: $url in $MR_CONFIG (with worktree $worktree)" - mr -c "$MR_CONFIG" config "`pwd`" checkout="git clone $url $MR_REPO" + mr -c "$MR_CONFIG" config "`pwd`" \ + checkout=" \ + git clone --no-checkout $url $MR_REPO && \ + cd $MR_REPO && \ + git read-tree HEAD && \ + git checkout-index -a --prefix='$work_tree' || true; \ + git config core.worktree '$worktree' && \ + mv .git/* . && \ + rmdir .git" help = if [ ! -e "$MR_PATH" ]; then