On Sat, Sep 18, 2010 at 01:01:17PM -0700, Junio C Hamano wrote: > diff knows symlinks and regular files are different, and produces "delete > old then add new" if you changed a regular file to a symlink. > > That said, if you changed a symlink from pointing at A to pointing at B, > it does run the textual diff between the string we get from readlink(3). > > I happen to think that textconv, if specified, for such a path should be > honored, so that people can keep doing whatever munging they have been > doing in their existing textconv filters. I think you came to the conclusion later in the thread that this is a bad idea, if only because it is not how "git diff" works, but I wanted to make one additional point. I think that git, being symlink aware, needs to behave similarly to "lstat". That is, we should never dereference symlinks transparently when diffing or analyzing content, because otherwise there is no way to actually look at the symlink data itself. It is the user's responsibility to dereference symlinks in their diffs (e.g., I can get either the symlink data _or_ the actual file data by doing "git diff symlink-to-foo.bin" or "git diff foo.bin". If git dereferenced for me, I would get file data for _both_). Not to mention that we can't always dereference anyway because of broken links or links outside the repo, as Matthieu pointed out. So doing anything but a straight text diff for the pathnames in symlink blobs is, IMHO, a bug. The one thing this does not enable is using a special diff driver on the _pathnames_ of symlinks. Since these are by-definition text, I don't know why anyone would want to do that. But it is an orthogonal problem, anyway. We would need some way in the .gitattributes or the .gitconfig to say "this is the diff driver to use not based on pathname matching, but based on the file's mode". E.g., a special "SYMLINK" diff driver like: [diff "SYMLINK"] textconv = pointless-munge But again, I have no idea why anyone would want such a feature, so it is not worth thinking too hard about it. -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html