Subject: Re: [PATCH v3 00/20] refs backend rebase on pu

From: Ramsay Jones <[email-masked]>
Date: Thu, 4 Feb 2016 01:54:44 +0000

On 04/02/16 01:12, David Turner wrote:
> On Wed, 2016-02-03 at 16:09 -0800, Junio C Hamano wrote:
>> Junio C Hamano <[email-masked]> writes:
>>
>>> David Turner <[email-masked]> writes:
>>>
>>>> Are there any more reviews on this?  I do have some changes from
>>>> this
>>>> set, but they're pretty minor so I don't want to post a new one
>>>> (unless
>>>> folks would rather see those changes before reviewing).  Let me
>>>> know.
>>>
>>> Thanks for pinging.  As this is a rather wide-ranging topic, it was
>>> not practical to intergrate with the rest of the topics in flight
>>> back then, but now it seems that this needs only one topic that
>>> still is in flight.  I'll queue this on top of a merge between
>>> 'master' and the tip of 'sb/submodule-parallel-update' and include
>>> in the daily integration cycle to make it easy for people to view
>>> the changes in wider context as necessary.
>>
>> I've re-applied the patches to rebuild the topic; when merged to
>> 'pu' it seemed to break some tests, but I didn't look too deeply
>> into it.
> 
> They were working for me as-of the time I sent them.  I guess something
> must have broken since.  I'll rebase, test, and send a new series.

I didn't spend too long looking at it, but I think this interacts with
Jeff's patch a2d5156c ("resolve_gitlink_ref: ignore non-repository paths",
22-01-2016) which introduces the new test in 't3000-ls-files-others.sh'
which fails for me.

The change which Jeff made to resolve_gitlink_ref() is effectively side-stepped
by the call to check_submodule_backend() in the new resolve_gitlink_ref().
(Jeff's change is now in the 'files' backend version of resolve_gitlink_ref()).

In the debugger, when the die() breakpoint is taken, the bt looks like:

(gdb) bt
#0  die (err=err@entry=0x57b38a "Invalid gitfile format: %s") at usage.c:99
#1  0x000000000050db64 in read_gitfile_gently (
    path=0x7ee770 "not-a-submodule/.git", 
    return_error_code=return_error_code@entry=0x0) at setup.c:558
#2  0x00000000004dfce8 in do_submodule_path (buf=0x7fffffffd220, 
    path=0x7ee750 "not-a-submodule/", fmt=0x5771d0 "%s", 
    args=args@entry=0x7fffffffd138) at path.c:469
#3  0x00000000004e05c2 in strbuf_git_path_submodule (
    buf=buf@entry=0x7fffffffd220, path=path@entry=0x7ee750 "not-a-submodule/", 
    fmt=fmt@entry=0x5771d0 "%s") at path.c:503
#4  0x00000000004edfdc in check_submodule_backend (
    submodule=submodule@entry=0x7ee750 "not-a-submodule/") at refs.c:316
#5  0x00000000004f01c2 in resolve_gitlink_ref (
    path=0x7ee750 "not-a-submodule/", refname=0x565040 "HEAD", 
    sha1=0x7fffffffd2a0 "\n") at refs.c:1407
#6  0x00000000004b0a07 in treat_directory (simplify=0x0, exclude=0, baselen=0, 
    len=16, dirname=0x7ee750 "not-a-submodule/", untracked=0x0, 
    dir=0x7fffffffdc10) at dir.c:1305
#7  treat_one_path (dir=dir@entry=0x7fffffffdc10, 
    untracked=untracked@entry=0x0, path=path@entry=0x7fffffffd330, 
    baselen=baselen@entry=0, simplify=simplify@entry=0x0, dtype=4, 
    de=de@entry=0x7eef60) at dir.c:1489
#8  0x00000000004b027e in treat_path (simplify=0x0, baselen=0, 
    path=0x7fffffffd330, cdir=0x7fffffffd350, untracked=0x0, 
    dir=0x7fffffffdc10) at dir.c:1550
#9  read_directory_recursive (dir=dir@entry=0x7fffffffdc10, 
    base=base@entry=0x54744a "", baselen=baselen@entry=0, untracked=0x0, 
    check_only=check_only@entry=0, simplify=simplify@entry=0x0) at dir.c:1697
#10 0x00000000004b0b67 in read_directory (dir=dir@entry=0x7fffffffdc10, 
    path=0x54744a "", len=len@entry=0, 
    pathspec=pathspec@entry=0x7c83c0 <pathspec>) at dir.c:2023
---Type <return> to continue, or q <return> to quit---

Note that the error code return pointer is NULL in the call to
read_gitfile_gently(). Also, note the call frames #4 and #5.

I have to go now ... Hope that helps.

ATB,
Ramsay Jones