Johannes Sixt [off-list ref] writes:
On Samstag, 23. Januar 2010, Robin Rosenberg wrote:
quoted
It seems this function does something unhealthy when you pass a path of the
form //server/share. On windows dropping the double // at the beginning
makes it a different path since // is the UNC prefix.
There is no problem in practice.
The function returns either the input unmodified, or it strips also at least
one directory component, except when base is only "/" (or "//" or "///"...).
I said in practice, because on Windows it does not make sense to invoke git
with (literally)
git --git-dir=//server/share/repo.git --work-tree=/ ...
i.e., without a drive prefix before the slash of --work-tree.
If you did this:
git --git-dir=//reposerver/repo.git --work-tree=//buildserver/workarea
then we would say "one is not a prefix of the other", so it would be
fine. At least I don't think the "recover from unintentionally doubled
slashes in user supplied path" fix is introducing any new problem in that
case.
If on the other hand, if you did this:
git --git-dir=//server/repo.git --work-tree=//server/workarea
that also would be Ok.
I think one issue is what happens when you did this:
cd //server
git --git-dir=//server/repo/repo.git --work-tree=repo
Does msysgit implementation figures out that the work tree is located at
"//server/repo" when get_git_work_tree() is asked to produce an absolute
path so that it can be compared with //server/repo/repo.git with the code?
If it does (with the leading double slash), then "doubled slahses fix" is
a regression we should do something about it. If it doesn't, then it
probably doesn't matter.