Subject: Re: symbolic link management in git-archive

From: Sergio Callegari <[email-masked]>
Date: Tue, 01 Apr 2008 00:12:09 +0200

René Scharfe wrote:

> Windows 2000 and up has support for symbolic links; it's just strangely
> restricted, [...] here's a good starting point for
> more information: http://en.wikipedia.org/wiki/NTFS_junction_point
>
> Arguably, your unzip program should create junction points for symlinks
> in zip files.  I wouldn't be surprised if none of the existing ones
> support that, though;
>
> Would it be practical for you to distribute a junction point creation
> tool like Mark Russinovich's Junction (except that Junction's EULA
> forbids redistribution under most circumstances; see here:
> http://www.microsoft.com/technet/sysinternals/FileAndDisk/Junction.mspx)
> and a script that creates these symlinks for your audience?
>   
Thank you very much for the detailed explanation. Unfortunately, I do 
not think that Junction can be an option.  My colleagues using Windows 
tend to be a bit "conservative" about the tools they use.  If they 
navigate filesystem contents with the graphical tool, and they 
look-at/expand the content of a zip file from explorer they expect that 
it should be immediately right, otherwise there must be something wrong 
in the way /I/ create zip files.  They would not appreciate having to 
unzip the file and then run an additional program on it to fix the 
unzipped stuff.
> It's harder for git-archive to support following symlinks than for e.g.
> GNU tar.  The reason is that the former operates on git objects, not
> files, directories or symlinks.  In order to follow a symlink it would
> need to evaluate the symlink, follow it and then add actual files and
> directories to the archive.
>
> For your purposes, perhaps a slightly different implementation might be
> sufficient: namely to follow only relative symlinks that point to
> tracked objects.  That way you still get a repeatable result and (most
> importantly) git-archive doesn't need to look at files and directories,
> it can stay safely in git land.  Would such a way of operation be useful
> to you?
>   
Absolutely positive.  This would be already a great improvement, 
fulfilling 99.9% of needs.

Sergio