Re: Having Git follow symlinks
- From
Johan Herland <johan@herland.net>
- Date
- Jan 28, 2014, 14:47 UTC
- Message-ID
- <CALKQrgf5o-ZcaeqXLm3P7RpK2yPcFd_HnG4ewwoEGESduyDSjQ@mail.gmail.com>
- In-Reply-To
- <alpine.DEB.2.02.1401281443330.17426@perkele.intern.softwolves.pp.se>
On Tue, Jan 28, 2014 at 2:49 PM, Peter Krefting <peter@softwolves.pp.se> wrote:
> Is there a (per-repo) setting to get Git to follow symlinks in the working > directory, i.e., to not store the symlinks themselves but rather work on > what they point to?
Not that I know of.
Show 10 quoted lines
> Background: I have a repository that stores a number of my dotfiles, shared > between all my machines (Linux, OSX, Windows/CygWin, Solaris). It is > currently a CVS repo that I wish to convert to Git since CVS is getting more > and more scarce. However, I have the repo set up so that I check it out into > a subdirectory of its own, and have symlinks (junctions on Windows) both > coming into it (for files that live in ~) and out of it (for subdirectories > of ~ that cannot be symlinks themselves, such as ~/.ssh, or that live > elsewhere, such as under AppData on Windows or ~/Library on MacOS). CVS > handles this by simply not knowing anything about symlinks, and I would like > to get Git to do the same.
I believe a preferable way to manage dotfiles in Git, is to have a script that does the necessary setup/installation from the repo (that lives in some subdirectory of ~) and into ~. This script would be able to:
- Set up whatever symlinks or copies are needed - Apply permission/mode bits that are not stored by Git - Properly handle various platform differences (symlinks vs. junctions, etc.)
As a bonus, you can run the script as a post-checkout hook, to have it automatically apply any updates you fetch/push into your dotfiles repo.
...Johan
-- Johan Herland, <johan@herland.net> www.herland.net