From: Junio C Hamano Date: Sat, 24 Sep 2005 06:19:01 GMT Subject: Re: Please undo "Use git-merge instead of git-resolve in Message-ID: <7virwr2dka.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <20050923095742.GC10255@pasky.or.cz> Petr Baudis writes: > Dear diary, on Fri, Sep 23, 2005 at 11:34:16AM CEST, I got a letter > where Junio C Hamano told me that... >> Petr Baudis writes: >> >> > * cg-fetch can do with symlinked object database >> >> Do you mean ".git/object" in the repository you are fetching >> into is a symlink to somewhere, or something else? > > Yes, exactly that. You get it by doing cg-clone -l > /local/path. git-clone -l -s does optimization similar to that in spirit, but it does not create a repository with symlinked .git/object pointing at /some/where/original/repo/.git/object. Instead it uses alternates to borrow from the other; newly created objects are always stored locally. But I thought you were talking about fetch. git-fetch should be able to pull into a repository whose .git/object happens to be a symlink pointing at somewhere else just fine. > Just that if the reference pointer did not change, you don't try to pull > any objects. Both git-aware protocol and commit walker peek at the remote ref and stop without downloading objects if it is known to us, so I think we are OK. >> $ git-init-db && git fetch http://kernel.org/pub/scm/git/git.git >> >> should work. > > Good. Of course, the above 'git fetch' only fetches remote HEAD and stores it in .git/FETCH_HEAD; if you truly want to 'clone', you could first run git-ls-remote to peek the remote refs and then give them as storing refspecs to git fetch, doing something like this (modulo renaming 'master' over there to 'origin' here): mkdir foo && cd foo && git-init-db refspec=$(git-ls-remote $repo | \ sed -n -e 's/^[0-9a-f]* //' -e 's|refs/.*|&:&|p') git fetch $repo $refspec