Re: Git doesn't like symlinks?
- From
- Rogan Dawes <lists@dawes.za.net>
- Date
- Aug 8, 2007, 08:29 UTC
- Message-ID
- <46B97F05.6060503@dawes.za.net>
- In-Reply-To
- <46A09A2B.3030205@dawes.za.net>
Rogan Dawes wrote:
Show 50 quoted lines
> Hi folks, > > I have been tasked with doing some development against an external SVN > repo, and keeping it largely in sync with an internal directory. > > Seeing as how this is a git list, I obviously decided to do this using > git :-) > > So, I have a local git repo with my local changes from the SVN repo, and > I can push them to the SVN repo without too many problems. The problem > arises when I try to sync with the local directory. > > Since the local directory's structure doesn't match the repo exactly, I > figured I could work around that by using a symlink to get to the right > place. > > ie. the local dir is > C:\local\blah\release\5.2\<contents> > > and the structure of the SVN (and hence git) repo is: > /top/main/<contents> > > where <contents> is/should be identical between the two places. > > Obviously, git won't work correctly in the local dir, so I tried the > following (on Cygwin) > > $ cd /tmp > $ ~/git/contrib/workdir/git-new-workdir /my/git/repo/ repo-local > $ cd repo-local/top > $ rm -rf main/ > $ ln -s /c/local/blah/release/5.2/ main/ > $ git status > > This worked, and showed me that there were a few files out of sync. > > I decided to copy over one of the files from git to the local dir: > > $ git checkout top/main/some/file > > And git deleted my "main" symlink, and replaced it with a real dir, > containing "some/file". > > Everything _else_ was now "missing". > > Any ideas on how I can get this to work? I know this is not strictly > what git was designed for, but it could do a really good job if it would > only leave my symlink alone. > > Rogan
So, for anyone else caught in this awkward position, the answer is not to use a symlink, but to use cygwin's mount command instead.
$ cd /tmp $ ~/git/contrib/workdir/git-new-workdir /my/git/repo/ repo-local $ cd repo-local/top $ rm -rf main/ $ mkdir main/ $ mount 'C:\local\blah\release\5.2\' /tmp/repo-local/top/main/
And everything works as expected.
Regards,
Rogan