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).
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
and you will see little pink patches (tags) like
those refs/changes/14/2914/1 are gerrit pointers to commits.
calls them "Git references")
I see also some people want to get rid of them at times:
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
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:
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)
git add ... && git commit -m "..." && git push origin
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:
gerrit review eff577ea766db8dcb3952baf99ba8053fac0da8c --restore
So I think 'having stuff offline' is not an argument for gerrit
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.