4 ms·
curious why you say it's strangely designed. seems pretty rational to me.
by mbfg 8y ago
curious why you say it's strangely designed. seems pretty rational to me.
- gmueckl 8y agoThere are three things in git that I consider design errors: - The staging area/index/cache should not even exist. That the same construct has three interchangeable names is already a sign that something is wrong. The fact that that construct is used to confusingly stage snapshots of files for committing as well as moerge operations makes it an unwieldy thing that has probably teleported too many lines of code into the digital nirvana already. - Branches should be immutable properties of changesets instead of flimsy, easily deleted tags with special flags. Deleting a branch after a merge makes it impossible to tell which branch in the history was the master and which the feature branch. - Gits graph of changesets is also too lightweight and is missing forward references. This is the reason why deleting branches irreversibly deletes their entire history. The reflog is only a crude hack around that and exists only because the crude data structures require taking stock of the entire set of internal references to figure out that a certain part of it (an "object", but essentially a file in the repository) is actually no longer referenced and can be removed. I can probably come up with more reasons why git is very flawed. But this is enough fuel for the fire for one post.
- mbfg 8y agoMaybe -- but the index is ridiculously useful. being able to commit some of your changes is part of what makes git so much more useful than something like mercurial. To be honest you may have a complaint for 2 and 3, but i'm not sure what it is, as i've never had any of the issues you bring up.
- krupan 8y agomercurial and git both have commands that allow you to select part of a change to commit, and both allow you to amend an existing commit. No index necessary.