login
Header Space

 
 

Re: [RFC] Submodules in GIT

Score:
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Linus Torvalds <torvalds@...>
Cc: <git@...>
Date: Saturday, December 9, 2006 - 5:34 pm

On Saturday 02 December 2006 12:41 pm, Linus Torvalds wrote:

Here's some thoughts on subprojects from my company's perspective.  I 
apologize for the long message.

Abstract: We use submodules heavily in CVS and SVN.  I like what I've read 
from Linus about the "thin veneer" approach of integrating subprojects.  It 
seems conceptually to provide the support we desire.  For us, it's important 
that the mandated linkage between a master project and a subproject is 
minimal to maximize our flexibility in building our processes.


We develop and maintain a lot of embedded applications.  Both for higher level 
systems (ex: 32MB RAM/32MB storage) running the Linux kernel and a customized 
set of libs/app support code and more deeply embedded environments (ex: 8KB 
of RAM and 32KB of storage).  Even though these two cases are very different 
in many repects, the version management issues are the same.

- We (mostly) track everything needed to build historical versions of code 
with 100% fidelity.  This includes all of the tools used to compile, build, 
test, deploy, debug, etc. the actual build results themselves.  I initially 
looked at Vesta several years ago.  I love their conceptual approach to this 
problem (integrated build system that caches mid-level build results within 
the repository itself), but it's too unwieldy, very hard to set up (lots of 
up-front effort), and lacks many useful features.

- Most of our "applications" are a relatively small amount of app-specific 
code with references to several/many shared modules.  Shared modules can 
contain support tools, like build/test/debug/deploy support for a given 
embedded platform, in-house developed shared app code, or shared code 
developed by third parties.

- We use CVS to manage our larger system development projects.  The repo is 
about 2GB and has several dozen application-code submodules.  We use the 
"third party sources" approach to tracking submodules as outlined in Ch.13 of 
the CVS manual.  Additionally, we manage our "buildox" (similar to buildroot 
in concept) in another CVS repo.  All prior interesting versions of the 
buildroot can be built from source (toolchains, everything), if necessary.  
Applications contain metadata (a file...) in the repo so the app-level build 
system can ensure it is being ran under the correct version of buildbox; 
clunky but serviceable.  CVS is a nightmare because of its poor 
branch/tagging facilities, and many of the things we *ought* to be doing with 
revision control we don't because of the complexity.

- We use SVN to manage our deeply embedded system projects.  The repo is about 
250MB in size.  Applications use the svn:externals property to reference 
needed modules.  We aren't using a buildbox in this environment yet (bad!).  
SVN's simple branching and svn:externals are a giant leap forward in 
comparison to CVS's capabilities.


Below are some common use case scenarios that are to varying degrees unweildy 
in CVS and/or SVN.  Many of these involving non-trivial branching and merging 
operations are nearly impractical in CVS, and the lack of merge tracking (to 
support repeated safe merging from one branch to another) makes some of these 
a bit tricky in SVN too.  Of course neither repo supports 
disconnected/distributed operation, which would make a number of activities 
that much simpler as well.

- Round trip module management.  A specific app requires a change to a shared 
module, so it makes a local branch to develop the change.  The "diff" is 
presented to the maintainer (who may be inhouse).  The next interesting 
maintainer version of the module gets imported into our repo (if in house, 
it's already there), where the app can reference it.  This merge process may 
leave changes not yet implemented (or never to be implemented) by the module 
maintainer in the local branch used by the apps.  Other apps are unaffected, 
as they are linking to a prior version in the local branch.

- Pragmatic development.  It's typical that in developing an application, a 
developer will need to simultaneously make changes to one or more submodules.  
If more than trivial, he/she should branch the submodules and continually 
tracking the HEAD of those branches in the relevant app.  This is so complex 
and fraught with problems in CVS that it doesn't get done, and developers 
house too much change over time in their working directories.  With SVN and 
svn:externals, the process is workable.  It is nice that an svn:external can 
point to (the HEAD of) a branch when making changes.

- An application implements a new feature internally (say support for a new 
digital chipset in the embedded world) which later needs to be "promoted" to 
a subproject for use by others.  Pretty easy in SVN.  A challenge in CVS; 
it's really not possible to "convert" app code into a "third party source" 
and retain an historical link.

- Updating build tools.  In concept no different than updating a shared code 
module.  In practice, due to the buildbox strategy, it's a bit convoluted.  I 
don't expect this to get much smoother.  Getting Vesta-like features, where 
integrated build suport can cache lower-level build results in a version-safe 
manner (like the binary code built when the cross toolchain was built) would 
be killer, but that's surely OT for the submodules discussion.

Thanks,
Steve
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: [RFC] Submodules in GIT, Jakub Narebski, (Tue Nov 28, 6:50 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Tue Nov 28, 9:35 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Wed Nov 29, 12:03 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Wed Nov 29, 4:00 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Thu Nov 30, 1:06 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 5:02 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 7:00 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 8:09 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 8:12 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 9:05 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 9:35 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 9:51 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 10:58 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 11:47 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 12:54 pm)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 1:33 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 3:17 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 3:38 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 5:04 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 5:37 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 5:54 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 6:08 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sat Dec 2, 6:04 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:40 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 9:50 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:43 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 9:02 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 2:48 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 7:34 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 3:46 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 9:43 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 9:46 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 10:52 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 11:00 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 12:38 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 12:57 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 2:08 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 2:51 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 12:49 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 1:14 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 1:08 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 4:13 pm)
Re: [RFC] Submodules in GIT, Jon Loeliger, (Fri Dec 8, 2:29 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 12, 4:32 am)
Re: [RFC] Submodules in GIT, Sven Verdoolaege, (Fri Dec 8, 2:45 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 6:35 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 6:06 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 6:26 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 6:55 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 7:30 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 8:14 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 8:33 pm)
Re: [RFC] Submodules in GIT, Michael K. Edwards, (Mon Dec 4, 2:56 pm)
Re: [RFC] Submodules in GIT, Sam Vilain, (Mon Dec 4, 9:31 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sat Dec 2, 5:27 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 7:07 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 6:41 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 7:09 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:12 pm)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 7:49 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sat Dec 2, 2:57 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 3:41 pm)
Re: [RFC] Submodules in GIT, R. Steve McKown, (Sat Dec 9, 5:34 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sun Dec 10, 7:47 am)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Thu Dec 14, 5:27 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Thu Dec 14, 7:07 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 1:43 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 15, 5:42 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 7:43 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 9:13 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 15, 9:49 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 15, 10:12 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sat Dec 16, 4:50 am)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Fri Dec 15, 9:20 pm)
Re: [RFC] Submodules in GIT, Daniel Barkalow, (Mon Dec 4, 10:33 pm)
Re: [RFC] Submodules in GIT, sf, (Tue Dec 5, 6:07 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sun Dec 3, 3:33 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Sun Dec 3, 5:19 am)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sun Dec 3, 1:54 pm)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Mon Dec 4, 4:26 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Mon Dec 4, 4:41 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 6:38 am)
Re: [RFC] Submodules in GIT, Torgil Svensson, (Mon Dec 4, 5:36 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 6:42 am)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 7:36 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Fri Dec 1, 8:12 pm)
Re: [RFC] Submodules in GIT, Sven Verdoolaege, (Sun Dec 3, 6:16 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sun Dec 3, 6:32 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Mon Dec 4, 7:12 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:18 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 4:44 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sun Dec 3, 4:46 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 5:22 pm)
Thoughts about memory requirements in traversals [Was: Re: [..., Josef Weidendorfer, (Sat Dec 2, 10:07 pm)
Re: Thoughts about memory requirements in traversals [Was: R..., Josef Weidendorfer, (Sat Dec 2, 11:21 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 5:06 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 5:29 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 7:32 am)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 3:52 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:21 pm)
Re: [RFC] Submodules in GIT, Linus Torvalds, (Sat Dec 2, 4:46 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:58 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 9:11 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Sat Dec 2, 5:22 am)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 7:03 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 6:12 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 7:17 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sat Dec 2, 4:24 pm)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Sat Dec 2, 8:55 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Sun Dec 3, 2:29 am)
Re: [RFC] Submodules in GIT, Josef Weidendorfer, (Fri Dec 1, 6:26 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 6:40 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 4:30 pm)
Re: [RFC] Submodules in GIT, Alan Chandler, (Fri Dec 1, 7:23 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 2:06 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Thu Nov 30, 2:57 pm)
Re: [RFC] Submodules in GIT, Uwe Kleine-Koenig, (Tue Dec 5, 5:01 am)
Re: [RFC] Submodules in GIT, Sven Verdoolaege, (Tue Dec 5, 12:00 pm)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 6:33 am)
Re: [RFC] Submodules in GIT, Uwe Kleine-Koenig, (Tue Dec 5, 11:02 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Tue Dec 5, 11:30 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 8:03 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 8:11 am)
Re: [RFC] Submodules in GIT, sf, (Fri Dec 1, 9:21 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 9:43 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 10:23 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 11:07 am)
Re: [RFC] Submodules in GIT, Stephan Feder, (Fri Dec 1, 12:04 pm)
Re: [RFC] Submodules in GIT, Martin Waitz, (Fri Dec 1, 12:15 pm)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 4:49 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Fri Dec 1, 5:33 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Fri Dec 1, 6:38 am)
Re: [RFC] Submodules in GIT, Andreas Ericsson, (Thu Nov 30, 8:16 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Thu Nov 30, 8:40 am)
Re: [RFC] Submodules in GIT, Steven Grimm, (Tue Nov 28, 3:58 pm)
Re: [RFC] Submodules in GIT, Shawn Pearce, (Tue Nov 28, 5:02 pm)
Re: [RFC] Submodules in GIT, Shawn Pearce, (Tue Nov 28, 11:44 am)
Re: [RFC] Submodules in GIT, Andy Parkins, (Tue Nov 28, 12:29 pm)
Re: [RFC] Submodules in GIT, sf, (Thu Nov 30, 7:57 am)
Re: [RFC] Submodules in GIT, Martin Waitz, (Wed Nov 29, 12:15 pm)
Re: [RFC] Submodules in GIT, Jon Loeliger, (Tue Nov 28, 1:38 pm)
Re: [RFC] Submodules in GIT, Shawn Pearce, (Tue Nov 28, 12:36 pm)
speck-geostationary