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

Intricacies of submodules [was: Migrating svn to git with heavy use of externals]

From
RSRoman Shaposhnik <rvs@sun.com>
Date
Apr 9, 2008, 19:57 UTC
Message-ID
<1207771054.13123.228.camel@work.sfbay.sun.com>
In-Reply-To
<32541b130804082334s604b62b0j82b510c331f48213@mail.gmail.com>
On Wed, 2008-04-09 at 02:34 -0400, Avery Pennarun wrote:
Show 14 quoted lines
> On Wed, Apr 9, 2008 at 12:39 AM, Roman Shaposhnik <rvs@sun.com> wrote:
> > > In my own use case, I think having all the objects from the
> > > supermodule *and* submodules all be in the same repo is what I want.
> > > This kind of obviates the need for .gitmodules entirely, if
> > > git-checkout and friends will do the right thing.  I think I'll submit
> > > some patches eventually once I have this figured out properly.
> >
> >  Hm. But what about those who might want to pull from you? .git/config
> >  doesn't propagate, which means that they'll be kind of stuck, don't
> >  you think?
> 
> Not exactly.  The idea is that if the supermodule and submodules are
> all lumped into a single repo (and your refs are set up correctly),
> then cloning the supermodule will also clone all the submodules.  
Interesting! How do you make it happen? Do you use git hooks or
something? On my end, I can't really reproduce that behavior of clone
but I would very much like to:
  $ alias mkrepo="git init; touch file; git add file; git commit -mInit"
  $ mkdir super ; cd super
  $ mkrepo
  $ mkdir submodule ; cd submodule
  $ mkrepo
  $ cd ..
  $ git submodule add submodule
  Adding existing repo at 'submodule' to the index
  $ git commit -mSubmodule
  Created commit 5921c87: Submodule
     2 files changed, 4 insertions(+), 0 deletions(-) 
     create mode 100644 .gitmodules
     create mode 160000 submodule
Now, when I clone super I don't actually have submodule cloned:
   $ git clone super super-clone
   $ cd  super-clone
   $ git submodule status
   -7482d0433ed681aa243629f13cd97ca5be242393 submodule
In fact, it seems that I can't even do "submodule update", which
seems like a bug to me, by the way:
    $ git submodule init  
    Submodule 'submodule' (submodule) registered for path 'submodule'
    $ git submodule update
    Initialized empty Git repository in /tmp/TEST/super-clone/submodule/.git/
    fatal: no matching remote head
    fetch-pack from 'submodule' failed.
    Clone of 'submodule' into submodule path 'submodule' failed
Any ideas on what's going on here? Or what am I doing wrong?
> So everyone will have all the necessary refs anyway; as long as
> git-checkout checks them out, .gitmodules shouldn't have to exist at
> all, becaues there's nothing "special" for git-submodule to do.

I would very much like to have that, yes. Please do provide additional details on how's your setup is different from mine.

Thanks, Roman.

Previous: Roman ShaposhnikNext: Avery Pennarun
Message 46 of 48 in “Migrating svn to git with heavy use of externals”
  1. D. Stuart FreemanMar 31, 2008
  2. D. Stuart FreemanApr 8, 2008
  3. Avery PennarunApr 8, 2008
  4. D. Stuart FreemanApr 8, 2008
  5. Avery PennarunApr 8, 2008
  6. D. Stuart FreemanApr 8, 2008
  7. Roman ShaposhnikApr 9, 2008
  8. Avery PennarunApr 9, 2008
  9. Roman ShaposhnikApr 9, 2008
  10. Avery PennarunApr 9, 2008
  11. Junio C HamanoApr 9, 2008
  12. Intricacies of submodules [was: Migrating svn to git with heavy use of externals]Roman Shaposhnik, Apr 10, 2008
  13. Junio C HamanoApr 10, 2008
  14. Roman ShaposhnikApr 10, 2008
  15. Junio C HamanoApr 11, 2008
  16. Ping YinApr 11, 2008
  17. Junio C HamanoApr 11, 2008
  18. Roman ShaposhnikApr 12, 2008
  19. Junio C HamanoApr 12, 2008
  20. Roman ShaposhnikApr 14, 2008
  21. Junio C HamanoApr 15, 2008
  22. Ping YinApr 15, 2008
  23. Roman V. ShaposhnikApr 16, 2008
  24. Jeremy Maitin-ShepardApr 17, 2008
  25. Linus TorvaldsApr 17, 2008
  26. Junio C HamanoApr 17, 2008
  27. Roman V. ShaposhnikApr 17, 2008
  28. Martin LanghoffApr 17, 2008
  29. Junio C HamanoApr 17, 2008
  30. Sverre RabbelierApr 17, 2008
  31. Martin LanghoffApr 17, 2008
  32. Sverre RabbelierApr 17, 2008
  33. Martin LanghoffApr 17, 2008
  34. Ping YinApr 18, 2008
  35. Dmitry PotapovApr 17, 2008
  36. Linus TorvaldsApr 17, 2008
  37. Ping YinApr 18, 2008
  38. Jakub NarebskiApr 18, 2008
  39. Ping YinApr 12, 2008
  40. Roman ShaposhnikApr 14, 2008
  41. Ping YinApr 12, 2008
  42. Junio C HamanoApr 12, 2008
  43. Ping YinApr 12, 2008
  44. Ping YinApr 10, 2008
  45. Roman ShaposhnikApr 10, 2008
  46. Intricacies of submodules [was: Migrating svn to git with heavy use of externals]Roman Shaposhnik, Apr 9, 2008
  47. Avery PennarunApr 9, 2008
  48. Avery PennarunApr 18, 2008

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.