Live data from Hacker News

Git can't be made consistent

bramcohen.livejournal.com

21–30 of 42 posts

Re: Git can't be made consistent

#21
post #18
post #17

Earlier quoted context omitted.

Someone who knows this stuff please tell me if I my analysis is correct: I see smart people pointing out "flaws" in software, not realizing the solution requires strong AI. (e.g. yesterday's post: http://news.ycombinator.com/item?id=2455793 )

Merging associativity doesn't require magic AI.

Merging can't be totally automated. Merging requires "intelligence" whatever that means.

Re: Git can't be made consistent

#22
post #18
post #17

Earlier quoted context omitted.

Someone who knows this stuff please tell me if I my analysis is correct: I see smart people pointing out "flaws" in software, not realizing the solution requires strong AI. (e.g. yesterday's post: http://news.ycombinator.com/item?id=2455793 )

Merging associativity doesn't require magic AI.

Sorry - I'm not sure what "merging associativity" is - can you give an example?

The above article gives us a simple example (A vs B) of a situation where doing the right thing requires a human aka strong AI because you need to know the "intent" of commit.

Is there a simple solution - or even a complex one - which would not require a human to verify?

For a similar analysis of yesterday's post, see this comment: http://news.ycombinator.com/item?id=2455970

Re: Git can't be made consistent

#23
post #18
post #17

Earlier quoted context omitted.

Someone who knows this stuff please tell me if I my analysis is correct: I see smart people pointing out "flaws" in software, not realizing the solution requires strong AI. (e.g. yesterday's post: http://news.ycombinator.com/item?id=2455793 )

Merging associativity doesn't require magic AI.

It does if you want to obtain the 'expected' results despite retaining merge associativity.

Re: Git can't be made consistent

#25
>I have a little secret for you: Git can't be made to have eventual consistency

David Roundy, the initial author of darcs, seems to disagree on this. From https://github.com/droundy/iolaus : > I realized that the semantics of git are actually not nearly so far from those of darcs as I had previously thought. In particular, if we view each commit as describing a patch in its "primitive context" (to use darcs-speak), then there is basically a one-to-one mapping from darcs' semantics to a git repository.

Re: Git can't be made consistent

#26
post #4

Note that darcs implements the "expected" or "naive" semantics, at the cost of edge cases that have exponential time (rather than going ahead with unflagged inconsistent merges).

The really big insight Linus had that Brahm apparently still doesn't want to recognize is that if that if you design what essentially a snapshotted filesystem, the merge algorithm is just a convenience. Any better merge algorithms can be added to git without touching the format. In fact any individual user can pick and choose their merge algorithm that the repository just cares about the recorded content history (which trees are parent to which trees).

Re: Git can't be made consistent

#27
post #10

Another interesting case: http://www.kernel.org/pub/software/scm/git/docs/howto/revert... I'm not sure if the "forget whatever happened" metaphor works for me. In the "revert a revert" article above, the problem is that merging a topic branch doesn't cause the first few commits on it to be applied if those commits were already merged but then reverted -- the revert has no effect on the merge. This is precisely becaus…

Thanks for mentioning B', I first did not understand what the problem was. Merging B' will turn A to B', which is equivalent to B. This causes confusion if the author of the left branch intended to get rid of B.

Re: Git can't be made consistent

#28
post #26
post #4

Note that darcs implements the "expected" or "naive" semantics, at the cost of edge cases that have exponential time (rather than going ahead with unflagged inconsistent merges).

The really big insight Linus had that Brahm apparently still doesn't want to recognize is that if that if you design what essentially a snapshotted filesystem, the merge algorithm is just a convenience. Any better merge algorithms can be added to git without touching the format. In fact any individual user can pick and choose their merge algorithm that the repository just cares about the recorded content history (whi…

Git also stores diffs from time to time: http://book.git-scm.com/7_how_git_stores_objects.html

Re: Git can't be made consistent

#29
post #28
post #26

Earlier quoted context omitted.

The really big insight Linus had that Brahm apparently still doesn't want to recognize is that if that if you design what essentially a snapshotted filesystem, the merge algorithm is just a convenience. Any better merge algorithms can be added to git without touching the format. In fact any individual user can pick and choose their merge algorithm that the repository just cares about the recorded content history (whi…

Git also stores diffs from time to time: http://book.git-scm.com/7_how_git_stores_objects.html

That's just an optimization. The semantics are still stored snapshots, and the diffs can be from any version of any file (blob) to any other.

Re: Git can't be made consistent

#30
post #28
post #26

Earlier quoted context omitted.

The really big insight Linus had that Brahm apparently still doesn't want to recognize is that if that if you design what essentially a snapshotted filesystem, the merge algorithm is just a convenience. Any better merge algorithms can be added to git without touching the format. In fact any individual user can pick and choose their merge algorithm that the repository just cares about the recorded content history (whi…

Git also stores diffs from time to time: http://book.git-scm.com/7_how_git_stores_objects.html

I'm guessing you're referring to packed objects. If I understand them correctly they are just there for space efficiency of the filesystem that is git. They're not first order concepts on which git the DVCS builds upon, just an implementation detail.
Post reply on HN