John Keeping <john@xxxxxxxxxxxxx> writes: >> Does it even have to be conditional? What is the situation when you >> do not want symbolic links? > > When you're not comparing the working tree. OK, so what you want is essentially: * If you see 0{40} in "diff --raw", you *know* you are showing the working tree file on the RHS, and you want to symlink, so that the edit made by the user will be reflected back to theh working tree copy. * If your working tree file match what is in the index, you won't see 0{40} but you still want to symlink, for the same reason. * If you are comparing two trees, and especially if your RHS is not HEAD, you will send everything to a temporary without symlinks. Any edit made by the user will be lost. If that is the case, perhaps the safest way to go may be to write the object out when you see non 0{40}, compare it with the working tree version and then turn that into symlink? That way, you not only cover the second bullet point, but also cover half of the third one where the user may find a bug in the RHS, update it in difftool. I am assuming that you are write-protecting the non-symlink files in the temporary tree (i.e. those that do not match the working tree) to prevent users from accidentally modifying something there is no place to save back to. Hrm? -- 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