sbzoom's comments

sbzoom | 9 years ago | on: Reinventing the Git Interface (2014)

If you had enough time to kill to read the original post above and you have some more time to kill, this is a really good write-up about git/hg/bzr.

https://duckrowing.com/2013/12/26/bzr-init-a-bazaar-tutorial...

Bazaar's model is based around branches. Make a branch, change stuff, commit, merge. Merges are like top-level things. When you read the log you get only the commits to that branch (like, say, "trunk"). If all you ever do is merge to trunk, you only see merges. Fancy trick - you can show nested commits in the log. So "bzr log -n3" shows you the merges, but all the commits that went into that merge. It really is super nice and very easy to use. And a lot of that ease of use is because the mental model makes sense.

Oh, and branches are stored as paths - that's right, folders. Instead of storing multiple versions of code in an "index" that you can't actually see, Bazaar just uses folders.

/workspace/my-project /trunk/ /the-thing-with-the-stuff/

So comparing files means... comparing two files. I don't actually have to use the VCS's commands to compare things. I could - I just don't have to. You can get diffs between a particular revision of a file (or folder). Or you could make a new branch (folder) at a particular revision. Then you can just actually look at all the files.

I know SVN does this too. And CVS. And probably Perforce. I just think people have forgotten how reasonable some of the older tools actually were/are. Bazaar does a good job keeping that ease while also being distributed.

sbzoom | 9 years ago | on: Reinventing the Git Interface (2014)

Most people moved from something like CVS/SVN/Perforce to Git. There are also a lot of people who started using Git at their first job. And most of these developers think of it as the same thing as GitHub. As others have said on this thread, you could try Mercurial. It is pretty nice. More user friendly than Git. But it does not do branching well. The original design did not include "named" branches, it was added later. Because of this it feels like it.

The usual way that people work in Mercurial is to make a clone - which is a whole copy. If you were working in SVN you would probably make a branch first (on the server), and then check out that branch. When you are done with your branch, you get up to date with trunk, then merge it in. And, this is the important part, your merge is treated as one commit. Pretty normal stuff. Mercurial though threads all your local commits into the log. So even though you make one merge, you can't find that merge in the log. All the commits are shown stuffed in there by date. And everyone is sad.

Now, you can change that if you use named branches instead of cloning. But it has other problems. The biggest one is you get "multiple heads." If I make a branch and you make a branch and we both commit, they both get stored in the index. But they get stored as different heads. So when I do a "pull" I get this strange warning about multiple heads - the "trunk" and your branch. I'm actually still not sure how to unwind it actually. I'm not enough of an expert.

So I try to user Bazaar wherever I go. It doesn't always happen - it is hard to change people's minds or have a company that is flexible enough to try different solutions. And, because Git is so popular, there is an integration with just about everything. For a 3-rd party candidate like Bazaar IDE integration is half-baked. So is Jira integration. Actually, just about all integrations. I'm considering becoming a committer on like 10 different Bazaar-related projects. :)

Check this out: https://duckrowing.com/2014/04/25/git-vs-mercurial-vs-bazaar... Yes GitHub is popular. But out there in the non-Opensource world, Git is WAY behind SVN. Which is totally fine. Use what works. If you have a centralized development organization, and everyone sits near each other and talks all the time, why do you need distributed VCS? And if everyone at the company knows how to use a tool and there aren't constant mistakes - just use it. It gets easy to not be able to see the forest for the trees when you spend 6 hours trying to figure out how to rewind a busted git repo.

sbzoom | 9 years ago | on: Reinventing the Git Interface (2014)

I try to use Bazaar. :) Don't laugh. You probably have never heard of it. If you have you probably forgot about it soon afterwards. It is distributed VCS just like Git and Mercurial. But the model of how data is stored and accessed just feels nicer. It doesn't just feel nicer, it is nicer. Special bonus, the commands make sense and are similar to commands you may have been used to with SVN.

sbzoom | 9 years ago | on: Reinventing the Git Interface (2014)

Just stop using Git. Jeez. I don't get it. It is a fundamentally broken tool. Why do people insist on using it? I have been confused about this for years. Just use something else. ANYTHING else.

I understand the usefulness (and popularity) of GitHub. It is a great tool for collaboration. Its just too bad that it uses git as the underlying vcs. I wish there was a decent competitor to GitHub with a different vcs so we could see if people would make the switch. Oh well. Maybe someday.

page 1