.gitlink for Summer of Code
From: Eric Lesh <hidden>
Date: 2016-06-15 22:43:01
I would like to tackle .gitlink for Summer of Code. The deadline is
about a day away, but this is a chance to make sure you still think
.gitlink is a good idea, and to see if there are any big problems with
the idea in general (before a more detailed proposal is actually submitted).
.gitlink is for a lightweight checkout of a branch into a separate
directory on the local filesystem. A .gitlink'ed checkout has its own
index+HEAD, but otherwise refers back to the main repository for
objects, refs, etc.
Junio has said (http://www.spinics.net/lists/git/msg24964.html) he
works in a similar way with many work trees which are symlinked to his
main repo:
: gitster git.wk0; ls -l .git/
total 120
drwxrwsr-x 3 junio src 4096 Mar 5 16:22 ./
drwxrwsr-x 15 junio src 16384 Mar 5 16:23 ../
-rw-rw-r-- 1 junio src 41 Mar 5 16:22 HEAD
lrwxrwxrwx 1 junio src 27 Mar 3 22:53 config -> /src/git/.git/config
lrwxrwxrwx 1 junio src 26 Mar 3 22:53 hooks -> /src/git/.git/hooks/
-rw-rw-r-- 1 junio src 82455 Mar 5 16:22 index
lrwxrwxrwx 1 junio src 25 Mar 3 22:53 info -> /src/git/.git/info/
drwxrwsr-x 3 junio src 4096 Mar 3 22:59 logs/
lrwxrwxrwx 1 junio src 28 Mar 3 22:53 objects -> /src/git/.git/objects/
lrwxrwxrwx 1 junio src 32 Mar 3 22:53 packed-refs -> /src/git/.git/packed-refs
lrwxrwxrwx 1 junio src 25 Mar 3 22:53 refs -> /src/git/.git/refs/
lrwxrwxrwx 1 junio src 28 Mar 3 22:53 remotes -> /src/git/.git/remotes/
lrwxrwxrwx 1 junio src 29 Mar 3 22:53 rr-cache -> /src/git/.git/rr-cache/
A .gitlink could simplify this, ridding the directory of symlinks and
instead having a .gitlink file that specifies a $GIT_DIR to which
everything refers.
My implementation will be based on Josef Weidendorfer's "[RFC]
Lightweight checkouts via ".gitlink""
(http://thread.gmane.org/gmane.comp.version-control.git/33755), which
didn't receive much objection (or comment at all). Hopefully this
doesn't mean you simply aren't interested.
Goals:
o Lightweight checkouts are essentially branches that reside outside of the
main repository on the local filesystem.
o They act as normal git checkouts (i.e. git tools know about .gitlink)
o They can be moved around and maintain their link to the base repo
o They can exist within other checkouts (for eventual submodule support)
o git-clone --light-weight option to set this up
o porcelains (i.e. cogito) don't barf
Is this something that you would like to see? Any other comments?
Thanks,
Eric