I agree with you in principle, but not with the details in the example.
This isn't about file vs tree, but more about centralized vs distributed.
In DVCS workflows "needs-update" as a concept does not even exist when you
are working on a topic branch to perfect one thing and one thing only.
You do not want to update only because somebody else did some work that
may be totally unrelated to what you wanted to achieve on the current
branch.
I presume that many people use git in centralized workflow where they use
only 'master' branch and "git pull ; work ; git commit; git push" are the
only things they do. In that setting, "needs-update" may make sense. The
VC backend implementation has to do "git fetch" to see if the origin has
advanced.
Almost the same comment applies to 'needs-merge', but the VC backend not
only needs to worry about "file has been edited", but also "commits that
touch the file has been made locally".
Isn't "git rm removed" exactly "scheduled to be deleted"?
Isn't "rm missing" exactly this?
Ignored is a subset of Unregistered, no? Neither exists in the index
(i.e. not tracked); ignored ones are covered by .gitignore and you need to
force "git add" to start tracking them.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html