Re: Inconsistency with -a vs -A
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:51:03
Junio C Hamano [off-list ref] writes:
The only uppercase "-A" I am aware of are these two, and both are about "everything under the sun", which is a special case in the context of SCM. All the other usual "all" options are spelled "-a". I think we could give "add -a" as a synonym to "add -u", which would be a safe addition that would not break any existing user, if we wanted to be picky and really make things more consistent. Also in the longer term, I suspect we probably should deprecate "add -A" as a failed experiment, if we are not going to do "commit -A" after all. "add ." and "add :/" (from a subdirectory) would be much less ambiguous, and it will get rid of the only instance of "-A" that means something slightly different from the usual "all".
The last paragraph is really "in the _longer_ term". Two things need to happen before we get there: - we need to teach "add ." or with any pathspec to do what the current "-A" with the same pathspec does implicitly, while keeping "add" without any pathspec a no-op. - ":/" (from root, whole tree) needs to be added. We already know how that pathspec will behave and how to implement it. The former may need a bit of thought and discussion, but I personally think that "git add" with pathspec should notice deletion of tracked paths. It may have been Ok back when "git add $path" was only for adding new paths, but we have changed from that semantics a long time ago and the command deals with both tracked and untracked paths. It does not make much sense to special case tracked but removed paths anymore [*1*] The latter we know we will have in a release or two. [Footnote] * The code does not do any special casing at the design level, but they fall within the cracks of the implementation.