git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [GSoC] Shourya's Blog

From
Shourya Shukla <shouryashukla.oo@gmail.com>
Date
Jun 20, 2020, 06:55 UTC
Message-ID
<20200620065512.GA15019@konoha>
In-Reply-To
<c88fe426-eac7-8d77-ec9b-9cb6d8dfc9f9@gmail.com>
On 17/06 02:08, Kaartic Sivaraam wrote:
Show 11 quoted lines
> Some things I noted in the blog:
> 
> > As far as I have learned, summary prints a git log --oneline
> > between the revision checked out in the submodule and the
> > revision superproject assumed the submodule to be in (i.e.,
> > the one checked out in the superproject).
> 
> The explanation is pretty close. The wording could be tweaked a little
> to be more precise. Particularly "assume" isn't a proper word to
> explain the working of summary. It works based on facts not
> assumptions. Something along the lines of:

Thanks for the feedback. I couldn't think of a word back then! Will make amends.

Show 9 quoted lines
>     As far as I have learned, summary prints a git log --oneline
>     between the revision checked out in the submodule and the revision
>     "known" to the superproject (i.e., the revision found in the index
>     of the superproject).
> 
> >  If no revision is specified of the submodule then we assume it to be HEAD
> 
> As discussed elsewhere, the revision passed to the summary command is
> the revision of the superproject and not the revision of the submodule.
Alright! Will amend.
Show 24 quoted lines
> > $ git submodule summary my-subm
> >   * my-subm abc123..def456
> >     < some commit
> >     < another commit
> >     < some another commit 
> 
> While the command above would produce the result you mention when
> 'my-subm' in the repo. The command itself is incorrect if it's
> intention is to print "only" the summary of 'my-subm'. This is the
> format of the 'summary' sub-command according to the doc:
> 
>     summary [--cached|--files] [(-n|--summary-limit) <n>] [commit] [--]
> [<path>...]
> 
> So, it expects a 'commit' followed by the 'path'. As you had passed the
> path as the first argument it would be treated as the 'commit' argument.
> As 'my-subm' is likely not a valid commit-ish, the script would
> default to 'HEAD' (the final else mentioned below) and would
> print the summary of all the submodules. IOW, it just prints the
> same output as:
> 
>    $ git submodule summary
> 
> in this case.

I just took the case of only one submodule existing in the superproject. Though even my output isn't wrog, the path taken to achieve it is a bit ambiguous. I will change it.

Show 19 quoted lines
> > else
> > 	head="HEAD"
> > fi
> >
> > This means that if the above 2 cases fail (which will most probably
> > lead to presence of commits yet a failure in git rev-parse --verify)
> > then make head as HEAD.
> 
> Characterising 'git rev-parse --verify ...' as not being able to print
> the hash of a commit even when there is one in the repo seems incorrect
> to me. There are other more likely cases which would lead to rev-parse
> failing and that last else part getting executed. For instance, an
> incorrect ref being passed as the first argument to the summary
> sub-command like:
> 
>     git submodule summary no-such-ref-exists
> 
> or
>      git submodule summary "invalid ref"

Oh! I did not think this one! I will change this too. Thank you so much for pointing this out.

Regards, Shourya Shukla

Previous: Kaartic SivaraamNext: Junio C Hamano
Message 3 of 4 in “[GSoC] Shourya's Blog”
  1. Shourya ShuklaJun 16, 2020
  2. Kaartic SivaraamJun 17, 2020
  3. Shourya ShuklaJun 20, 2020
  4. Junio C HamanoJun 17, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.