From: Johan Herland <johan@herland.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Yin Ping <pkufranky@gmail.com>
Subject: Re: [PATCH] status&commit: Teach them to show commits of modified submodules.
Date: Mon, 12 Nov 2007 09:40:39 +0100 [thread overview]
Message-ID: <200711120940.40271.johan@herland.net> (raw)
In-Reply-To: <7vhcjscyhu.fsf@gitster.siamese.dyndns.org>
On Sunday 11 November 2007, Junio C Hamano wrote:
> "Yin Ping" <pkufranky@gmail.com> writes:
>
> > I think it's this kind of case in most open-source project. However,
> > in a company environment, superprojects may be not so super.
>
> Let's not say "most open-source" nor "company", because I think
> nobody said anything that substantiates that the commit density
> characteristics I described is typical for most open-source, nor
> what you said is typical for corporate development projects, in
> this thread so far.
>
> If "superprojects is not so super", why are you using submodule
> to bind these, instead of using a single project that tracks
> developments of such closely tied parts?
>
> I am not saying that it is wrong to use submodule to track such
> groups of source trees whose versions are very closely tied
> together. At least not yet.
>
> I am just trying to find out what benefit you are getting out of
> the submodule support, after rejecting one of the most visible
> and advertised benefit of submodule support, which is to enable
> binding "related but not that closely tied together" projects.
At $dayjob, we are working on a codebase roughly the same size as current
linux-kernel with about 8 years of history in CVS. I'm currently looking at
how suitable git would be for our revision control purposes (and so far I'm
lovin' it).
The codebase is divided into CVS modules; most modules (aka. "core" modules)
each have their own in-house maintainer and have internal releases with
variable frequency. The other modules (aka. "platform/product" modules)
each pull together a carefully chosen set of "core" modules as submodules,
and add platform code to create - in the end - a complete product (with its
own release frequency). Specifically:
- All the modules required by the product must be present in the checkout
before a build can be made
- All the modules are independently developed, with different
development/release timelines
- The "core" people only focus on 1-2 modules at a time, but
the "platform/product" people might make changes in _many_ modules during a
workday.
When investigating how to mesh this workflow with git, I naturally ended up
with converting each CVS module to a git repository, and making
the "platform/product" repos include the required "core" repos as
submodules. This decision has the following effect from git's POV:
- "superproject is not so super" in that _all_ required modules must be
checked out before a build can be made. In other words: all the submodules
in a repo are "interesting"
- The modules are "related but not that closely tied together" since they
follow separate development schedules, with separate releases, etc.
- The "platform/product" people will most certainly want to have commands
like "git diff", "git status", and maybe even "git log" and "git-commit"
recurse into submodules.
- The "core" people will probably not want "recurse-into-submodules"
behaviour, although I can see places where it could be useful for them as
well.
A possible solution to the above problem is to add
a '--recurse-into-submodules' option to all relevant git commands. At the
same time, the actual implementation of submodule recursion should probably
be kept in the vicinity of "git-submodule" (instead of spreading it across
the other git commands).
Probably unrealistic: Maybe we could solve the problem by adding
"--recurse-into-submodules" to the toplevel 'git' command itself, and make
it re-invoke itself recursively in each submodule.
Hope this gives you insight into how _some_ people would like to use git's
submodule support.
Have fun! :)
...Johan
--
Johan Herland, <johan@herland.net>
www.herland.net
next prev parent reply other threads:[~2007-11-12 8:41 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-11-10 19:27 [PATCH] status&commit: Teach them to show commits of modified submodules Ping Yin
2007-11-10 19:55 ` Sven Verdoolaege
2007-11-10 20:00 ` Sven Verdoolaege
2007-11-11 5:30 ` Yin Ping
2007-11-10 21:14 ` Junio C Hamano
2007-11-11 6:18 ` Yin Ping
2007-11-11 20:34 ` Junio C Hamano
2007-11-12 5:38 ` Ping Yin
2007-11-12 7:26 ` Johannes Sixt
2007-11-12 9:51 ` Johannes Schindelin
2007-11-12 22:39 ` Junio C Hamano
2007-11-12 8:40 ` Johan Herland [this message]
2007-11-12 10:03 ` Johannes Sixt
2007-11-12 14:21 ` [PATCH] status&commit: Teach them to show submodule commit summary Ping Yin
2007-11-12 14:46 ` Ralf Wildenhues
2007-11-12 15:17 ` Ping Yin
2007-11-12 16:53 ` Brian Gernhardt
2007-11-12 15:37 ` Jakub Narebski
2007-11-12 15:46 ` Ping Yin
2007-11-12 15:59 ` Johannes Sixt
2007-11-12 16:12 ` Jakub Narebski
2007-11-12 16:42 ` Ping Yin
2007-11-12 16:13 ` Johannes Schindelin
2007-11-12 16:39 ` Ping Yin
2007-11-12 16:51 ` Johannes Sixt
2007-11-12 16:35 ` Ping Yin
2007-11-12 16:45 ` Johannes Sixt
2007-11-12 17:47 ` Lars Hjemli
2007-11-15 16:49 ` Ping Yin
2007-11-11 0:07 ` [PATCH] status&commit: Teach them to show commits of modified submodules Lars Hjemli
2007-11-11 6:24 ` Yin Ping
2007-11-11 8:27 ` Lars Hjemli
-- strict thread matches above, loose matches on Subject: below --
2007-11-02 11:53 Ping Yin
2007-11-02 20:29 ` Junio C Hamano
2007-11-02 23:50 ` Yin Ping
2007-11-03 0:01 ` Junio C Hamano
2007-11-04 9:22 ` Yin Ping
2007-11-04 9:25 ` Yin Ping
2007-11-04 9:56 ` Yin Ping
[not found] ` <46dff0320711040145k1edb1fcaq1daa5469c1158e81@mail.gmail.com>
2007-11-04 11:41 ` Junio C Hamano
2007-11-04 13:17 ` Yin Ping
2007-11-06 2:22 ` Junio C Hamano
2007-11-07 15:20 ` Yin Ping
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200711120940.40271.johan@herland.net \
--to=johan@herland.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pkufranky@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).