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

Re: [PATCH] Add git-submodule command

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
May 25, 2007, 13:58 UTC
Message-ID
<Pine.LNX.4.64.0705251451530.4648@racer.site>
In-Reply-To
<8c5c35580705250646h12f4f30bt301f4c4bdc2ad530@mail.gmail.com>
Hi,
On Fri, 25 May 2007, Lars Hjemli wrote:
Show 11 quoted lines
> On 5/25/07, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> > 
> > On Fri, 25 May 2007, Lars Hjemli wrote:
> > 
> > > +modules_init()
> > > +{
> > > +     git ls-files --stage -- $@ | grep -e '^160000 ' |
> > 
> > Any reason you read in the stage? It does not seem that you use it.
> 
> Are there any other way to get the mode info?
Ah, I missed that. Right.
Show 10 quoted lines
> > > +             subsha1=$(cd "$path" && git-rev-parse --verify HEAD) ||
> > 
> > Maybe it would be a better idea to use "git --git-dir="$path" 
> > rev-parse ..."? Just in case somebody calls this with GIT_DIR 
> > overridden...
> > 
> > Or, unset GIT_DIR explicitely.
> 
> Hmm, that's annoying (overridden GIT_DIR). I guess 'git --git-dir 
> $path/.git' would be the easiest solution.

But you have to repeat it on every subsequent Git command. OTOH if you unset GIT_DIR, you can no longer be sure that you have the correct git dir for Git calls in the superproject...

Show 15 quoted lines
> > > +             die "Unable to find current revision of submodule '$path'"
> > > +
> > > +             if test "$subsha1" != "$sha1"
> > > +             then
> > > +                     $(cd "$path" && git-fetch && git-checkout -q
> > "$sha1") ||
> > 
> > This will make a detached HEAD, right? Do you want that? (I am not 
> > really interested in submodules myself, so I haven't thought about it, 
> > and I haven't followed that monster discussion.)
> 
> Well, we might want to be smarter about this, but on the other hand: if 
> the user cares, he can always do 'cd $path && git checkout $branch', 
> since 'git submodule -u' will skip submodules with the correct commit 
> checked out.
Fair enough, I guess...
> > I'll let Junio comment on that command line parsing...
> 
> Heh, I'm a shell illiterate...
;-)
I guess Junio would like one of his famous
	case ,"$init","$update",[...] in
	*1*1) usage
	esac
to prevent running with two actions...
Show 6 quoted lines
> > All in all, I like it: it is short, to the point, and it should do the 
> > job (maybe with a few enhancements like "--update" without arguments 
> > means _all_ submodules).
> 
> Well, it does (or should) update all initialized submodules, but maybe 
> that's not what you meant?

Oops. I meant "init". I mean, most people who want to clone a superproject want the submodules being initialized without hassles, probably. But maybe that should be another option: "--clone-superproject" or something. Dunno. There's time for that after the initial git-submodule.

Ciao, Dscho

Previous: Lars HjemliNext: Lars Hjemli
Message 5 of 26 in “Add git-submodule command”
  1. Add git-submodule commandLars Hjemli, May 25, 2007
  2. Johannes SchindelinMay 25, 2007
  3. Johannes SchindelinMay 25, 2007
  4. Lars HjemliMay 25, 2007
  5. Johannes SchindelinMay 25, 2007
  6. Lars HjemliMay 25, 2007
  7. Johannes SchindelinMay 25, 2007
  8. Lars HjemliMay 25, 2007
  9. Add git-submodule commandLars Hjemli, May 25, 2007
  10. Johannes SchindelinMay 25, 2007
  11. Junio C HamanoMay 25, 2007
  12. Lars HjemliMay 25, 2007
  13. Junio C HamanoMay 25, 2007
  14. Lars HjemliMay 25, 2007
  15. Add git-submodule commandLars Hjemli, May 26, 2007
  16. Johannes SchindelinMay 26, 2007
  17. Junio C HamanoMay 26, 2007
  18. Lars HjemliMay 26, 2007
  19. Johannes SchindelinMay 26, 2007
  20. Add git-submodule commandLars Hjemli, May 26, 2007
  21. Simon HausmannMay 26, 2007
  22. Lars HjemliMay 26, 2007
  23. Johannes SchindelinMay 25, 2007
  24. Linus TorvaldsMay 25, 2007
  25. Johannes SchindelinMay 25, 2007
  26. Lars HjemliMay 25, 2007

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.