Git Can't Be Made Consistent

Apr 17, 2011 18:56

This post complains about Git lacking eventual consistency. I have a little secret for you: Git can't be made to have eventual consistency. Everybody seems to think the problem is a technical one, of complexity vs. simplicity of implementation. They're wrong. The problem is semantics. Git follows the semantics which you want 99% of the time, at the ( Read more... )

Leave a comment

ciphergoth April 18 2011, 07:45:59 UTC
I think Monotone's mark-merge escalates all these decisions to the user, FWIW.

Reply

bramcohen April 18 2011, 08:33:19 UTC
I believe you're correct, and also that mark-merge will get horribly over-conservative in situations where two different branches keep pulling old versions of the other one for an extended period of time. It seems like nothing supports that use case well, and noone has ever really complained about it.

Reply

Complaining about pathological insanity... ext_513595 April 18 2011, 08:47:23 UTC
Why WOULD they complaint about it?

What you describe is a pathological scenario wherein the only fathomable explanation would be people making random guesses about what does or does not actually *work*. You are describing monkeys at keyboards.

There simply is not a good reason to go back and forth between historic versions repeatedly with no awareness of why one is doing it, and whether or not one's reason for doing it should override the judgements of others.

Reply

Re: Complaining about pathological insanity... bramcohen April 18 2011, 08:58:14 UTC
You shouldn't be so sharp in your judgements unless you actually understand what is being discussed, which in this case you clearly don't.

Reply

Re: Complaining about pathological insanity... ext_513595 April 18 2011, 09:04:07 UTC
I've seen the scenarios you describe arise, and in every case it's been a matter of people pushing buttons and hoping for the best. I have never seen a case where people intended to flip-flop between versions and then got hung up because the merge didn't do what they expected and they couldn't clearly and simply say "y'know what, screw B, I want A to 'win'.".

You either know what you expect to happen to the code when you do a merge, or you do not. If you know what you expect, git provides plenty of tools to help you ensure that you get what you expect. If you don't actually know what to expect and are blindly hoping for the best -- then you have no clear sense of your codebase, or the changes being made by others (either the mechanics or the intent).

Reply

Re: Complaining about pathological insanity... bramcohen April 18 2011, 14:43:32 UTC
You've both sneered at me for claiming that claiming that there's usually a unique latest common ancestor in practice, saying that I'm coming at it from SVN experience, and said that anyone following a methodology which doesn't result in a latest common ancestor is engaged in pathological insanity. You've now covered everything which someone might do as being crazy, and your only claim is that Git somehow has magical pixie dust to make neither of these cases happen, even though there are no other cases possible.

I'm going to start deleting further comments from you unless you start understanding what's being discussed and drop the Git fanboyism. You really aren't contributing anything to the conversation.

Reply

Re: Complaining about pathological insanity... ext_513595 April 18 2011, 17:16:45 UTC
Also, your example as presented seems to be incorrect, unless there is critical information you have failed to include.

https://github.com/MrJoy/MergingPlayedOut

I played out your example, with the slight change that the right-side, second A commit (which I refer to as A2) was created after X so I could determine if the ordering between the reintroduction of A and the creation of the B-B merge was relevant to how the merge resolves. It does not matter.

In both cases -- the A1-X merge, and the A2-X merge, the end result is A, not B.

Reply

Re: Complaining about pathological insanity... bramcohen February 11 2021, 22:54:48 UTC
X is not a merge in the history. It's ascii art of two lines crossing over each other

Reply

Re: Complaining about pathological insanity... ext_449870 April 20 2011, 06:34:16 UTC
Computers exist to perform computations, to do them automatically, scalably, and most importantly, predictably. Regardless of how an edge case manifests, we need computer software to resolve that edge case consistently. Most computer code isn't directly connected to bumbling humans but rather connected via a long daisy chain of code to other code, and finally a user interface. Fuckups like the failure at Dhahran happen when the properties of a system are taken for granted.

Reply


Leave a comment

Up