On Wed, Apr 30, 2008 at 3:29 PM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > > > For example, it has long been known ever since submodules were introduced > that if you work inside a sparsely checked out supermodule you have to use > "commit -a" with care, because the command notices missing submodule, and > there is no way for it to differenciate between the case you _want to_ > remove it and the case you did not care about it, If i am not misunderstood, there is one way now (although broken now, it used this kind of behaviour before git-status became built-in): empty directory to denote that the submodule is not checked out and unaware, and deleted directory to denote that the submodule is deleted. Actually, i don't like the empty directory trick, since it will leave so many empty directories in a repository with many submodules unchecked out. > > That quirk was something people could live with while submodule support > was merely a newly invented curiosity. But I do not think a command at > high level (iow Porcelain) such as commit and status should be left > unaware of the Policy that equate missing submodule and unmodified one > forever. We should actively enforce the policy, so that unless you > explicitly ask nicely, the command should consider a missing submodule > just as unmodified, e.g. "commit -a" should not remove unchecked out > submodules. > > But then you would need a way to ask nicely. How? Perhaps using "git rm", > and low level "update-index --remove". Do we even need "commit -A"? I > doubt it --- you do not remove submodules every day. > > We'd like to keep the lowest-level unaware of the Policy, which means that > "diff-files" and "diff-index" should report unchecked out submodules. > Otherwise script writers will be left with no way to differenciate missing > and removed submodules. Good point. > > Once we start doing this, I think "git diff" Porcelain should fall into > Policy-aware category. > Agree this pilicy. If this change needs a long way. Should we fix the regression first? Anyway, 'git status' and 'git status -a' should behave the same for submodules unchecked out. I have tried but i failed. I just found this regression was introduced on the first day of built-in status -- Ping Yin -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html