Hi all!

And here's another hi: Hi!  This is my first post to this list, so here is a 
quick intro in case you missed the other ones.  I'm Andrew Otto, an engineering 
on the new Analytics team.  I'm working with David Schoonover (new hire as 
well), Fabian Kaelin, and Diederik van Liere.  Right now we're working on some 
prototypes for the a WikiMedia report card.  

I think we are the first team that is doing active work in git using Gerrit, 
and Robla asked me to reach out here to describe our experiences and ask for 
help.  We're struggling right now to be productive using Gerrit (I spent 3 
hours today just trying to merge a branch), but it could be do to our lack of 
experience with it.  There have been a couple of emails bouncing around to Ryan 
Lane and Roan, but it might be more productive if I made this conversation more 
visible here.  I'll start with some questions.

1. Will Gerrit allow us to create branches without using the web GUI, and 
without having to be a Gerrit admin for a project?

One of the points of using git is to be able to create branches at will.  We're 
finding this very difficult right now, not only because creating requires GUI 
admin access, but because of other reasons explained below.

2. Do I need to rebase every time I push for review?  

I don't quite understand what is going on here.  I've installed git-review and 
am using this to push to git.  It does a rebase by default.  I'm not sure if I 
should be turning that off or not.  Rebases seem like a bad idea unless you 
really need to do them. I think git-review is doing a rebase by default so it 
can squash all of your local commits into one big review commit before pushing. 
Yuck!  This would surely mean fewer commits to review in Gerrit, but it 
destroys real the history.  It is making git work more like subversion, where 
you just work locally until everything is good and then have one big commit.  I 
should be able to commit often and be able to share my commits with other 
developers before having everything reviewed.  

3. How does Gerrit handle merges?  Do all merge commits need to be re-approved?

4. What should I do in the following situation?

I have a branch I recently made from master.  I've made some changes and pushed 
them to gerrit.  My changes have been approved.  Now I want to sync master into 
my branch.  I do

  git merge master

Then resolve any conflicts and commit.  How should I push these changes?  The 
commits that make up the merge have already been approved in gerrit on the 
master branch.  Do I need to push for review using git-review?  They've already 
been approved, so I would think not.  But gerrit will currently not allow me to 
push without using git-review (is that because the commits need a Change-Id?).

Since gerrit doesn't let me do a regular git push to push my master merge to 
the remote branch I am tracking, I do git-review.  This does rebase by default, 
so for some reason I am stuck having to resolve every single commit that was 
made to master in order to get the merge to push.  This takes quite a while, 
but I did it, and once the interactive rebase was finished I was able to 
git-review to push the merge from master.

Great.  Now I that my branch is in sync with master again, I want to merge it 
into master. 

  git checkout master
  git merge my_branch

All good.  Then what?  Since I can't do just 'git push', I try git-review 
again.  The same thing happens.  I have to run through the whole interactive 
rebase routine and resolve each of my commits from my_branch manually.  I do 
that, then run 'git-review' again.  Now I get this error message:

remote: Hint: A potential Change-Id was found, but it was not in the footer of 
the commit message.
To ssh://[email protected]:29418/analytics/reportcard.git
 ! [remote rejected] HEAD -> refs/for/master/master (missing Change-Id in 
commit message)
error: failed to push some refs to 
'ssh://[email protected]:29418/analytics/reportcard.git'

Each of the commits I merged from my_branch come with their own Change-Id in 
the commit messages.  But these commits are now merge commits (I think?), so 
they have information about the merge and any conflicts in the commit message 
below the original Change-Id.  I think this is confusing Gerrit, because it 
doesn't see the Change-Id in the footer.

Now I'm stuck, I'm really not sure how to push anymore.  I want to get Diederik 
some of my changes, but I can't push them to master.


Thanks for the help everybody!  It sounds like we in Analytics are the 
git+gerrit workflow Guinea pigs, eh?  We're happy to fill this role, but SCMs 
are supposed to streamline and improve work flow, and right now Gerrit is being 
a big ol' nasty nancy.  Help us iron this out so we can keep working!

- otto


http://ottomata.com
http://www.flickr.com/photos/OttomatonA
http://www.couchsurfing.org/people/otto


_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to