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

Re: organizing multiple repositories with dependencies

From
Jens Lehmann <jens.lehmann@web.de>
Date
Apr 18, 2012, 12:09 UTC
Message-ID
<4F8EAEF4.8030706@web.de>
In-Reply-To
<CAE1pOi38krwXZuiYxtpLwm92N=NvWkP30V_=6cnHw=sdyk6QhA@mail.gmail.com>
Am 17.04.2012 23:43, schrieb Hilco Wijbenga:
> The main problem with the current submodule support is that there is
> so much manual work needed. It is too easy to forget a step. Moreover,
> it's not easy to determine *that* you forgot a step or which step you
> forgot.

Looks like you are talking about the submodule support how it was a few years ago. Since 1.7.0 you cannot forget to commit changes in the submodule anymore, and since 1.7.5 all referenced submodule commits are fetched when you fetch the superproject. The only thing missing (with some work done towards that in last years GSoc) is supporting the pushing of submodule changes and the transparent update of submodule content when the superproject is updated, both of which are currently being worked on.

What else was bothering you so much you dumped submodules?
Show 12 quoted lines
>> Of course, this is entirely driven by git-subtree's model of actually
>> incorporating subproject history into one big umbrella repository.
>> There is no separation between the subprojects and umbrella projects.
>> It's one giant history.  Therefore, push/pull to/from subprojects are
>> explicit operations.  That's probably not the best model for every
>> situation but I find it very nice.
> 
> I do not have enough (okay, any) experience with subtree to comment on
> that. The first part seems just what I want. I'm not sure about the
> explicit pushing/pulling part. That sounds too much like asking for
> the sort of problems that scared us away from submodules. Hopefully,
> I'm dead wrong. :-)

As I understand subtree the pushing and pulling of the subprojects is needed pretty much at the same points in time it is needed when using submodules (to share the subproject work between different superprojects via their upstream). The difference is you import all subproject changes into a single repo when using subtree, while they stay separate when using submodules (and additionally you have to record the updated subprojects in the superproject in an extra commit there). Submodules enforce the distinction between submodules and the superproject while subtree doesn't, which may or may not be just what you want ;-)

Previous: Namit BhallaNext: dag@cray.com
Message 13 of 34 in “organizing multiple repositories with dependencies”
  1. Namit BhallaApr 16, 2012
  2. Jakub NarebskiApr 16, 2012
  3. dag@cray.comApr 16, 2012
  4. Hilco WijbengaApr 17, 2012
  5. dag@cray.comApr 17, 2012
  6. Seth RobertsonApr 17, 2012
  7. Hilco WijbengaApr 17, 2012
  8. dag@cray.comApr 17, 2012
  9. Hilco WijbengaApr 17, 2012
  10. PJ WeisbergApr 17, 2012
  11. Hilco WijbengaApr 17, 2012
  12. Namit BhallaApr 18, 2012
  13. Jens LehmannApr 18, 2012
  14. dag@cray.comApr 24, 2012
  15. Hilco WijbengaApr 24, 2012
  16. PJ WeisbergApr 24, 2012
  17. Hilco WijbengaApr 24, 2012
  18. dag@cray.comApr 24, 2012
  19. Phil HordApr 30, 2012
  20. dag@cray.comApr 30, 2012
  21. Jens LehmannApr 18, 2012
  22. dag@cray.comApr 24, 2012
  23. Seth RobertsonApr 24, 2012
  24. Jens LehmannApr 24, 2012
  25. Seth RobertsonApr 24, 2012
  26. dag@cray.comApr 24, 2012
  27. username localhostApr 28, 2012
  28. dag@cray.comApr 24, 2012
  29. Seth RobertsonApr 25, 2012
  30. dag@cray.comApr 27, 2012
  31. Eugene SajineApr 24, 2012
  32. Hilco WijbengaApr 24, 2012
  33. dag@cray.comApr 24, 2012
  34. dag@cray.comApr 24, 2012

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.