Re: submodules' shortcomings, was Re: RFC: display dirty submodule working directory in git gui and gitk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jens Lehmann <Jens.Lehmann@xxxxxx> writes:

> Am 06.01.2010 18:55, schrieb Junio C Hamano:
>> I was envisioning that the "git status" in submodule will be run with its
>> recent --porcelain option, and "git status" or "git commit" would read it
>> to postprocess and incorporate into its own output.
>
> And i thought about printing just one line for each dirty submodule that
> contains uncommitted and/or new files. I did not intend to list every
> file, for the same reason a "git diff --submodule" only shows the first
> line of the commit messages, not the actual differences of all changed
> files in the submodule. I am not against being able to show all files
> too, but i really would want to have an option to get a short output for
> git gui and gitk.

I don't think what you are saying is inconsistent with "git status/commit
that reads from 'git status --porcelain' it runs in a submodule directory,
postprocesses it and incorporates it into its own output."  When the
sub-status reports changes, your "postprocess" would condense it down to
"this has a potential change that user could want to commit".  How the
dirtiness is shown is entirely up to the caller that detected that change.

Let's explain it in another way.

The original "diff" for a submodule entry was implemented by preparing a

	"Subproject commit %s\n"

line for the submodule commit recorded in the preimage and postimage, and
compare these as if they are one-line files.  When the postimage was work
tree, it looked at submodule's .git/HEAD to learn what to stuff in %s
there.

But nobody forced you to limit the check only to .git/HEAD in the
submodule.  To make the comparison richer, you could check if the
submodule directory is dirty (and we have already discussed the potential
definition of dirtiness earlier), and add "-dirty" in the string as well.
With such a change, if you make some changes to a file in the work tree of
the submodule after a clean "clone", "git diff" between the index and the
work tree would report:

	-Subproject commit 37bae10e38a66e4f1ddd5350daded00b21735126
	+Subproject commit 37bae10e38a66e4f1ddd5350daded00b21735126-dirty

The suggestion to read from "status --porcelain" that is run in the
submodule directory was about how to implement the part that determines
this "dirtiness" information, and not about how that dirtiness is
expressed in the output.  The above is an illustration that even the
traditional output format can be made aware of this submodule dirtiness
check.  "diff --submodule" can express that dirtiness information in any
way it wants.
--
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

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]