4 ms·
Renames break history in Git. Yup, that movie I linked to was not looking for renames and Git was still 1000x slower than BitKeeper. The default on blame in G
by luckydude 10y ago
Renames break history in Git. Yup, that movie I linked to was not looking for renames and Git was still 1000x slower than BitKeeper. The default on blame in Git is to not look for renames because doing so is so slow. It's a non-issue in BitKeeper, the pathname of an object is an attribute of the object, just like the contents. It's exactly like a file system, we have an inode that is a unique name for the file, where it lives can vary from delta to delta, BitKeeper doesn't care.
"Big merges" break history in Git. Not in BitKeeper, BK passes changes by reference not by value. What that means is suppose you have 3 users, A, B, and C. And you have a file with 1000 lines of code. A & B clone that repo and have identical versions of the file. A changes the top 501 lines, B changes the bottom 500 lines. Now C clones A and pulls B. In the merge, C has pick between A's line 501 and B's line 501 but the other lines are merged unchanged. In most naive systems, it will look like C wrote either the top 501 lines or the bottom 500 lines when you run blame. That's what I mean by pass by value, the merged lines are a copy.
In BitKeeper, the unchanged merged lines are passed by reference, they are in the history exactly once. Only the line where it was merged (changed in the merge) will show up as belonging to C.
You'd be amazed at how long it takes people to trust this. They are so used to pass by value semantics (and hate them because now a bunch code done by someone else appears to be done by C and C gets stuck with the bugs).
- iainmerrick 10y agoOK, you got me interested. "brew install bitkeeper" worked so I might give it a try! Is there anything like Github or Bitbucket that supports BK? If there were a service to easily host BK repos, and especially if you could easily make it readable via Git, that could be pretty compelling. (Edit to add: http://bkbits.net http://bkbits.net maybe?)
- luckydude 10y agoYeah, bkbits.net is it for now. Does brew tell you who did the packaging? I'm wondering if that's one of my guys or someone else (I'd love it if it were someone else, be good to get people hacking).
- iainmerrick 10y agoI think this is the package spec: https://github.com/caskroom/homebrew-cask/blob/master/Casks/bitkeeper.rb https://github.com/caskroom/homebrew-cask/blob/master/Casks/... So it's using the installer from bitkeeper.org; I don't know if the people who added it to homebrew are affiliated.