Platonides Platonides@gmail.com wrote: The fundamental change is something else to me: you lose feeling of linearity. I like hg because it still tries to give me a cosy nice local version numbers (great to switch from SVN, you can even have your old SVN commit numbers to stay after migration). But when I look at the gerrit interface (not gerrit's fault) I have no idea what was done before, what was done after, what's the history.
Yes, git is so poewerful, that gets fragile in itself. I end up with several clones and no idea about where they differ. Isn't there a way to compare them?
Yeah, I have the same problem very often. Many times got confused enough to save diffs and "rm -rf" the working directory.
Git is a mess to integrate with - it's almost impossible to have some API. And you can't have "hg rollback" - my favorite feature of Mercurial (no need to commit --amend or something).
Looking at this again:
https://gerrit.wikimedia.org/r/#change,2916
I have 28f176ca9ca3767bfa9f0ec219f5fa0c299c5761 and 87f491132487313144e531354578ea2fbd3b42b4 here (those are commits, fine) and Ifb002160485030496c7d3f2abc4991484b533648
Additionally there is this c64fd4488d2ea24e120acb15db413377494dd3b3 ("Patch Set 1") referring me to (gitweb) which is calls it "commit". Ah, and there is 1101a1b3fe7f4d1c29321157fc1ef9b9f3fb6ff0 as well.
Ouch and there is this "refs/changes/16/2916/1" <-- the good think I can actually click on it in gitweb!
? That's not a link.
Go to to the gitweb screen
https://gerrit.wikimedia.org/r/gitweb?p=test/mediawiki/extensions/examples.g...
and you will see little pink patches (tags) like
https://gerrit.wikimedia.org/r/gitweb?p=test/mediawiki/extensions/examples.g...
those refs/changes/14/2914/1 are gerrit pointers to commits. (http://book.git-scm.com/7_git_references.html calls them "Git references")
I see also some people want to get rid of them at times: http://www.mailinglistarchive.com/html/repo-discuss@googlegroups.com/2010-05...
Unfortunately, I don't see them in my local repository. Why? How can you clone them?
All this makes "MFT r111795, r111881, r111920, r112573, r112995, r113169" looks pale in comparison. And I can actually click a link in [[Special:Code]], and go back and forth on followups, neat!
I proposed several times to bump git change numbers, so new ones don't "conflict" with svn ones. Ie. the number alone would allow you to point to gerrit or CodeReview, keeping a bit of consistency between models. Even the urls kind of match https://gerrit.wikimedia.org/r/123 for r123
Who cares about that? That r stands there for being a review system. I was told that zero effort was going to be made for that (they were unsure about the consequences of bumping the auto_increment, although there's little I can do about that) and to just talk about "change 1234" not "r1234".
It's obvious that c3000 comes after r115000, isn't it? ;)
It looks like that Gerrit precedessor, Rietveld works with SVN (yes!) and has a much nicer interface:
http://codereview.appspot.com/5727045/#ps1
it uses "Issues" as bases for development (I think this is gerrit's "change"). Maybe we should use that instead (yes, I know, google app engine and stuff...)
I really think that tighter integration with bugtracker (so bug attachments end up in vcs review queue and commit comments can be seen as quasi-bugs) would be much more beneficial to users. I will try to see how it would have worked with systems like fossil for example and report back.
Indeed, that'd be an important feature.
And I think now you have englightened me.
Maybe our workflow should probably be completely 'change' based and not 'commit' based.
Our [[Git/Workflow]] page does not say much about changesets.
Actually working on a changeset mini-branch (git fetch origin refs/changes/16/2916/1 && git checkout FETCH_HEAD) and then
git add ... && git commit -m "..." && git push origin HEAD:refs/changes/2916
would be a nice workflow; we probably wouldn't (or shouldn't) do rebasing then since theoretically many people can work on a changeset at the same time.
(I can't check how it works since my "git push" fails again on [remote rejected] HEAD -> refs/for/master (prohibited by Gerrit))
If "refs/changes/2916" would work also for fetch (now you need "refs/changes/xx/2916/n" it could be very interesting.
If only I could somehow fetch all tags "refs/changes/*...." to my local git repository - anybody knows how do this?
It also seems impossible to do code reviews offline, since we need to
ssh -p 29418 gerrit.wikimedia.org host gerrit review <options>
It seems that we can use revision numbers sometimes:
ssh -p 29418 gerrit.wikimedia.org gerrit query 2714
but to work on review witch patchsets we need to be more specific:
ssh gerrit.wikimedia.org gerrit review eff577ea766db8dcb3952baf99ba8053fac0da8c --restore
So I think 'having stuff offline' is not an argument for gerrit at all.
I can't even see changesets/patchets in my local git repository - it looks like I am living in a slightly different world with gerrit. Similarly to what we have with bugzilla now.
//Saper