Dear git: STOP CHANGING DEFAULT BEHAVIOUR!

My struggles with git have been well documented. One thing I didn’t touch on is its tendency to suddenly change the behaviour of core commands from release to release. I’ve got used, over the last months, to seeing this:

mike@thor:~/git/other/kindle-backup$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from ‘matching’ to ‘simple’. To squelch this message
and maintain the current behavior after the default changes, use:

git config –global push.default matching

To squelch this message and adopt the new behaviour now, use:

git config –global push.default simple

When push.default is set to ‘matching’, git will push local branches
to the remote branches that already exist with the same name.

In Git 2.0, Git will default to the more conservative ‘simple’
behavior, which only pushes the current branch to the corresponding
remote branch that ‘git pull’ uses to update the current branch.

See ‘git help config’ and search for ‘push.default’ for further information.
(the ‘simple’ mode was introduced in Git 1.7.11. Use the similar mode
‘current’ instead of ‘simple’ if you sometimes use older versions of Git)

But today I saw this as well:

mike@thor:~/git/other/kindle-backup$ git add .
warning: You ran ‘git add’ with neither ‘-A (–all)’ or ‘–ignore-removal’,
whose behaviour will change in Git 2.0 with respect to paths you removed.
Paths like ‘documents/._pg10554.mobi’ that are
removed from your working tree are ignored with this version of Git.

* ‘git add –ignore-removal ‘, which is the current default,
ignores paths you removed from your working tree.

* ‘git add –all ‘ will let you also record the removals.

Run ‘git status’ to check the paths you removed from your working tree.

mike@thor:~/git/other/kindle-backup$

What the hell, git? This is simply not the way rational software behaves. I don’t get in my car and find a message saying “for your convenience, the functions of the accelerator and brake pedals have been swapped”.

Sheesh.

6 responses to “Dear git: STOP CHANGING DEFAULT BEHAVIOUR!

  1. Andrew Ducker

    Surely it’s not “suddenly” changing anything – it’s giving you notice that it’s changing it in a forthcoming major version update.

    If the defaults are causing an issue for people, and they’ve realised they’ve made a mistake, then they should absolutely improve things.

  2. Yeah, I agree with Andrew, it’s hardly sudden and the new behavior is much sainer.

  3. Err, so you find the default behaviour so confusing that you wrote a post about how confusing it was, but when they attempt to make things better and give you good warning that things are changing in a future major release, you make write a post about how that sucks too? Seems like they’re in an unwinnable position. Software changes, that’s the beauty of it. Version 1.0 of everything sucks, so that we can learn, and adapt it. Advocating for sticking with bad defaults is odd. In a car the way we change gears, the way we indicate, the way we start, and yes even the way we turn have gone through dramatic changes during the history of the automobile…

  4. It’s a tricky software design issue. You want to be able to create better defaults based on your user base, but you also ideally don’t want to upset the portion of the user base that really likes the current UI.

    Just like software developers lock the dependencies at specific versions, perhaps the UI itself should allow defaults to be locked at specific versions, too? So that the behaviour never changes until you opt-in?

  5. So, in summary, you hate GIT because it doesn’t work the way you want it to. You also hate GIT because they change the way it behaves and nothing is ever allowed to get better..

    You do realise your ranting make you sound like a total pleb….

  6. No. It’s fine that git doesn’t work the way I want it to. What’s not fine is that after I’ve taken the time and trouble to adapt to how it does work, it then changes.

    I’m not too worried about sounding like a pleb. I care more about getting my work done.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s