Re: RFC: Subprojects
- From
Alex Riesen <raa.lkml@gmail.com>
- Date
- Jan 16, 2006, 07:48 UTC
- Message-ID
- <81b0412b0601152348x1a8e7dy19dce8fcdd9b812b@mail.gmail.com>
- In-Reply-To
- <Pine.LNX.4.64.0601141154590.13339@g5.osdl.org>
On 1/14/06, Linus Torvalds <torvalds@osdl.org> wrote:
Show 28 quoted lines
> > So far I've not seen any convincing arguments why the sub-projects can not be > > managed by the Makefile, or equivalent, of the super-project. Particularly > > when the sub-projects have a life of their own. > > Now, from a developer standpoint I actually agree with you. I find > sub-projects totally useless - I'm much happier just having separate > trees. > > The advantage (as far as I can tell) of sub-projects is not that they are > easier to develop in, but that it's a total nightmare for the technical > _user_ to download ten different projects from ten different sites, and > configure them properly and install them in the right order, and keep them > up-to-date. > > There are projects that I simply gave up even trying to track: I wasn't > interested in being a developer per se, but I _was_ interested in trying > to test and give feedback to the current development tree - but it was > just too damn confusing to get it working. > > If I could have just done a "git clone <top-level>" to get it all, I'd > have been a much more productive user. > > This is why I think sub-projects are more about "git checkout" and an > automated "git fetch" than anything else. Doing actual development etc you > can easily do one project at a time. "git diff" and "git commit" wouldn't > need any real ability to recurse into subprojects and try to make it > seamless. And if you do a "git pull" that needs to do anything but > fast-forward, you might as well resolve the sub-projects one by one.
That is exactly how subprojects are used in Perforce- and ClearCase-like SCM: the working tree is "configured" to contain the super-project (build configuration) and the actual work happens in the subproject and _only_ there. The mentioned systems even have heavily used permission system just to prevent either checkout or commit anywhere outside the area of responsibility of a developer. (The "permissions" are somehow pointless in git context, just mentioned them to underline the main point).