Re: [PATCH 7/7] t0000: verify that real_path() removes extra slashes
- From
Nguyen Thai Ngoc Duy <pclouds@gmail.com>
- Date
- Sep 5, 2012, 10:52 UTC
- Message-ID
- <CACsJy8DAbp1uDsNFFk1g9tuEV1qMnM2DZtxOwp5H9_VE7VwO1g@mail.gmail.com>
- In-Reply-To
- <7v1uihbqhf.fsf@alter.siamese.dyndns.org>
On Wed, Sep 5, 2012 at 1:19 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 19 quoted lines
> mhagger@alum.mit.edu writes: > >> From: Michael Haggerty <mhagger@alum.mit.edu> >> >> These tests already pass, but make sure they don't break in the >> future. >> >> Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> >> --- >> >> It would be great if somebody would check whether these tests pass on >> Windows, and if not, give me a tip about how to fix them. > > I think this (perhaps unwarranted) removal of the double leading > slashes is the root cause of > > http://thread.gmane.org/gmane.comp.version-control.git/204469 > > (people involved in that thread Cc'ed).
I gave up on that thread because I did not have a proper environment to further troubleshoot. Thanks Mike for giving me the clue about real_path(). I traced link_alt_odb_entry() and it does this:
if (!is_absolute_path(entry) && relative_base) {
strbuf_addstr(&pathbuf, real_path(relative_base));
strbuf_addch(&pathbuf, '/');
}
strbuf_add(&pathbuf, entry, len);
normalize_path_copy(pathbuf.buf, pathbuf.buf);The culprit might be normalize_path_copy (I don't have Windows to test whether real_path() strips the leading slash in //server/somewhere). I tested normalize_path_copy() separately and it does strip leading slashes, so it needs to be fixed. Something like maybe:
diff --git a/path.c b/path.c index 66acd24..ad2881c 100644 --- a/path.c +++ b/path.c @@ -503,6 +503,10 @@ int normalize_path_copy(char *dst, const char *src) *dst++ = *src++; *dst++ = *src++; } +#ifdef WIN32 + else if (src[0] == '/' && src[1] == '/') + *dst++ = *src++; +#endif dst0 = dst; if (is_dir_sep(*src)) { I'm not suitable for following this up as I don't have environment to test it. Maybe some msysgit guy want to step in?
-- Duy