summaryrefslogblamecommitdiffstats
path: root/computer/yet-another-git-hg-flamewar.rst
blob: c7b5e7506f26e222857341366ec3a7f752e86389 (plain) (tree)






































































                                                                                             
Re: High-level Problems with Git and How to Fix Them
####################################################

:date: 2017-12-12
:category: computer
:tags: blogComment, git, DVCS, mercurial, gitlab

(originally written as a comment on `the blogpost`_ by Gregory 
Szorc)

Some comments:

1. I like your ideas about the improved documentation and better 
   sounding options (yes, ``git commit --cached`` is stupid). Did 
   you file them as RFE to ``git@vger.kernel.org``? I don’t think 
   they are that controversial.

2. I like your idea about workspaces, and it truly seems like an 
   ideal, but I think such drastic measures are not completely 
   necessary. If we just told everybody that more important than 
   ``git clone`` is ``git remote add`` command, and that it is 
   easy to have five different remotes in the local repository, 
   things would be better [#]_. I agree that design of 
   Git{Lab,Hub}/Bitbucket/Sourceforge is poorly based on the idea 
   of hard clone, but the solution is more in the web user 
   interface and presentation than in the substance. For example, 
   I have never understood what's the point of the master branch 
   on my personal clone of the main repository. That branch 
   should never be used (``git checkout master && git branch -u 
   origin/master`` are my first two commands I do after cloning; 
   origin is of course the primary repository, not my clone) and 
   it is confusing that it is the default branch displayed on the 
   webpage of my clone.

3. Concerning the need to name everything, I completely disagree. 
   The web is full of complaints of people who prefer something 
   else than git and complain bitterly. I suspect that git 
   fanboys (and fangirls) who got bitten by Mercurial/bzr are 
   just silent, being happy that their preferred VCS prevailed. 
   When doing some Firefox-related projects, I tried hard to do 
   it in Mercurial (I have even found a repository hosting which 
   supported hg), but after some weeks of working on my projects, 
   I got completely frustrated with hg, and moved my project to 
   git. I have never returned to hg again and I have never looked 
   back (and yes, it was couple of years ago, and no, I won't try 
   the latest version, because I don't see one reason why 
   I should). Multiple unnamed heads in my branches were one of 
   the biggest pet-peeves I had with hg. Yes, I tried all methods 
   how to get rid of them I found on the Internet, and no I have 
   never found a reliable way how to avoid them. So, if the need 
   to invent short brief name for every branch I make is the 
   price to pay for sanity, I am all for it. I have never needed 
   to ask my hosting server admins for wiping out my git repos 
   and starting over, I had to do it three times with one project 
   in hg. Never again!

4. Also, I disliked I couldn't overwrite history (yes, I know 
   about mq extension and other hopeless hacks which try to make 
   hg model at least somehow palatable, but I just prefer ``git 
   rebase -i``), and that branches are more or less permanent 
   (yes, again, I know there is some hack around that).

.. _`the blogpost`:
   https://gregoryszorc.com/blog/2017/12/11/high-level-problems-with-git-and-how-to-fix-them/

.. [#] I know there are a way better introductions to git, but 
    the first good description of how to work with git in the 
    collaborative manner for me was 
    https://wiki.gnome.org/Apps/Empathy/Git (yes, it is possible 
    that this page was the best product of whole Empathy project 
    ;)).