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

Simplifying work across multiple projects (while tracking relationships among commit histories)

From
Yang Zhang <yanghatespam@gmail.com>
Date
May 31, 2010, 06:41 UTC
Message-ID
<AANLkTimC0SoVAG-2xByZFFitl2KNlAhYlAw5fN_XqriT@mail.gmail.com>

After looking at some of the tools/techniques out there for working with multiple git projects (submodules, subtree merge, braid, repo), it seems that none are really well-suited for our use case. We're developing a large system consisting of several components (libraries, servers, applications, etc.). None of these components will ever exist or be released as a stand-alone product. We're in "rapid development" mode, so we're not even close to dealing with e.g. manually maintaining information on versions/dependencies, and we just want very tight integration among all the components -- yet the components do deserve their own disentangled histories and (eventually) independent branches/tags/versions/etc.

If we were using svn, all the code would live in a single repository, and that would be all there was to think about this. However, it seems that our use case (surprisingly) doesn't have a lot of good support in the DVCS world.

For now, we'll probably just have some simple scripts that basically do 'for i in $projects' loops for pulls, pushes, commits, etc. However, this loses a lot of information that should be tracked about the version/dependency information among the projects -- information that at the same time we're not interested in manually tracking. We're currently thinking of having a simple system that is initially set up with a dependency graph among projects, e.g.:

  a: no dependencies
  b: depends on a

and whenever a commit is made to a project with dependencies (b), the commit (perhaps in the commit message) contains a reference to the particular versions of the dependent project(s) (a) that were checked out.

The tool could simplify the use of such a scheme, e.g.:
- automatically augmenting commit messages with this information
- on commits/pushes, first commit/push the dependent projects
- checking out consistent versions of all the projects (or subgraphs thereof)

Does this make sense to others? Are we overlooking a better/existing approach? Would it be worth building this? Suggestions on design improvements to such a tool over what was described (e.g. better approach than augmenting commit messages)? -- Yang Zhang http://yz.mit.edu/

Next: Jonathan Nieder
Message 1 of 2 in “Simplifying work across multiple projects (while tracking relationships among commit histories)”
  1. Yang ZhangMay 31, 2010
  2. Jonathan NiederMay 31, 2010

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.