From: Jens Lehmann <Jens.Lehmann@web.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
Git Mailing List <git@vger.kernel.org>,
"Shawn O. Pearce" <spearce@spearce.org>,
Paul Mackerras <paulus@samba.org>,
Heiko Voigt <hvoigt@hvoigt.net>, Lars Hjemli <hjemli@gmail.com>,
Avery Pennarun <apenwarr@gmail.com>
Subject: Re: submodules' shortcomings, was Re: RFC: display dirty submodule working directory in git gui and gitk
Date: Tue, 05 Jan 2010 12:57:32 +0100 [thread overview]
Message-ID: <4B43292C.5060106@web.de> (raw)
In-Reply-To: <7v1vi428w0.fsf@alter.siamese.dyndns.org>
Am 05.01.2010 10:33, schrieb Junio C Hamano:
> So it is not necessarily a bad thing if the commit checked out in the
> submodule repository is different from what the superproject records in
> its index when a commit is made in the superproject. We allow committing
> with local changes in regular files, while we do notify the users about
> them to avoid mistakes. We should give the same kind of notification
> about submodules, but the "local changes" need to be thought out more
> carefully than plain files in the superproject itself. Does uncommitted
> changes in the index of submodule repository count? Local changes in the
> work tree files? What about untracked files that the user might have
> forgot to add? Should they be warned? What about the commit in the
> submodule repository being a non-descendant of the commit recorded in the
> HEAD of the superproject's tree, resulting in a non-ff change at the
> submodule level?
Committing in the superproject with any dirty state in a submodule
should always work (same as it does with local changes in regular files),
but be visible for the user (again as local changes in regular files are).
Right now we do not show enough information about a submodule to protect
the user from accidentally throwing away changes made inside it.
The only thing we show right now are the differences between submodule
commits and what the superproject has in its index and in its commits.
Missing are:
a) modified files
I think these have to be shown, no matter if they are checked into
the submodules index or not (because until they are committed, they
can't be staged in the superproject anyway).
b) new unignored files
IMO these files should show up too (the superproject doesn't show
ignored files, the submodule state shouldn't do that either). But
OTOH i don't see a possibility for loss of data when this state is
not shown.
c) a detached HEAD not on any local *or* remote branch
This can be fatal when doing a reset, revert or checkout, so it
should be shown. Alternatively when applied on a submodule, forcing
could be disabled to let the command fail instead of throwing stuff
away.
d) a detached HEAD not on any remote branch
AFAICS this is only important for a push, and could just error out
there.
(But i don't think it is necessary to show detailed information, just
what type of states are found in the submodule)
Concerning Dscho's remarks about the performace impact: We could control
this behavior via .gitmodules too (and later have different settings
for the submodules depending on the group the user chose). So you could
turn these checks off for repos where you don't care, saving the time to
go through the whole working directory of the submodule. But i would vote
for the default to show at least case a) and maybe even c) to follow the
principle of least surprise.
> I think "clone" has a chicken-and-egg problem. If all of your project
> participant are expected to check out all the submodules, are expected to
> make commits in all of them, and essentially have to track everything in
> sync, then "clone" can obviously do that without asking what kind of
> participant you are [*1*]. Otherwise, you need to have some mechanism
> (e.g. "group mapping" you mentioned earlier) for the user to specify "I am
> interested in these submodules" before the actual sub-clones to happen,
> but until you clone the superproject that has some description for that
> mechanism to use, and the user to see what's available, you cannot say
> what kind of participant you are. It has to become two-step process;
> either "clone" going interactive in the middle, or you let the clone to
> happen and then "submodule init" to express that information.
Yes, we can leave it that way for now (first "clone" and then "submodule
init <the submodules you need>"). We can migrate to the "group mapping"
functionality later (which would then allow to force certain submodules
to always be populated because they appear in every group).
next prev parent reply other threads:[~2010-01-05 11:57 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-01-02 15:33 RFC: display dirty submodule working directory in git gui and gitk Jens Lehmann
2010-01-04 9:44 ` Johannes Schindelin
2010-01-04 10:44 ` Heiko Voigt
2010-01-04 11:46 ` submodules, was " Johannes Schindelin
2010-01-04 18:29 ` Avery Pennarun
2010-01-04 19:14 ` Jens Lehmann
2010-01-04 17:04 ` Jens Lehmann
2010-01-04 22:29 ` submodules' shortcomings, was " Johannes Schindelin
2010-01-04 22:27 ` Shawn O. Pearce
2010-01-04 22:35 ` Avery Pennarun
2010-01-04 22:53 ` Avery Pennarun
2010-01-05 8:11 ` Jens Lehmann
2010-01-05 9:33 ` Junio C Hamano
2010-01-05 10:07 ` Johannes Schindelin
2010-01-05 11:57 ` Jens Lehmann [this message]
2010-01-05 18:31 ` Junio C Hamano
2010-01-05 20:01 ` Jens Lehmann
2010-01-06 1:04 ` Junio C Hamano
2010-01-06 14:05 ` Jens Lehmann
2010-01-06 17:01 ` Junio C Hamano
2010-01-06 17:23 ` Nguyen Thai Ngoc Duy
2010-01-06 17:55 ` Junio C Hamano
2010-01-06 18:22 ` Nguyen Thai Ngoc Duy
2010-01-06 18:32 ` Jens Lehmann
2010-01-06 20:01 ` Junio C Hamano
2010-01-06 21:19 ` Jens Lehmann
2010-01-06 18:20 ` Jens Lehmann
2010-01-05 23:02 ` Johannes Schindelin
2010-01-05 9:46 ` Johannes Schindelin
2010-01-05 12:19 ` Jens Lehmann
2010-01-05 14:27 ` Heiko Voigt
2010-01-05 15:07 ` Johan Herland
2010-01-05 15:30 ` Johannes Schindelin
2010-01-05 22:37 ` Nanako Shiraishi
2010-01-05 23:13 ` Johannes Schindelin
2010-01-07 11:04 ` Nanako Shiraishi
2010-01-05 20:38 ` Pau Garcia i Quiles
2010-01-05 23:06 ` cmake, was Re: submodules' shortcomings Johannes Schindelin
2010-01-06 1:17 ` Pau Garcia i Quiles
2010-01-06 4:25 ` Miles Bader
2010-01-06 9:24 ` Johannes Schindelin
2010-01-04 17:51 ` RFC: display dirty submodule working directory in git gui and gitk Nguyen Thai Ngoc Duy
2010-01-04 18:40 ` Jens Lehmann
2010-01-04 19:05 ` Junio C Hamano
2010-01-04 19:21 ` Jens Lehmann
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=4B43292C.5060106@web.de \
--to=jens.lehmann@web.de \
--cc=Johannes.Schindelin@gmx.de \
--cc=apenwarr@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=hjemli@gmail.com \
--cc=hvoigt@hvoigt.net \
--cc=paulus@samba.org \
--cc=spearce@spearce.org \
/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).