On 03/11/2014 05:14 PM, Eyal Edri wrote:


----- Original Message -----
From: "Itamar Heim" <ih...@redhat.com>
To: "Eyal Edri" <ee...@redhat.com>, "Tomasz Kołek" <tomasz-ko...@o2.pl>, us...@ovirt.org, 
"infra" <infra@ovirt.org>
Sent: Tuesday, March 11, 2014 5:10:54 PM
Subject: Re: [Users] [GSOC][Gerrit] add potential reviewers - questions

On 03/11/2014 05:06 PM, Ewoud Kohl van Wijngaarden wrote:
On Tue, Mar 11, 2014 at 10:37:22AM -0400, Eyal Edri wrote:
Tomasz Kołek wrote:

I've got a few questions about project description.
Please tell me if my problem's understanding is good or not.
We need to add a few flags/methods to git review module. This flags
should
allow to add potential reviewers in gerrit.
So:
Let's assume that we've got special flags for this operations. What's
next?
1. In gerrit system we need to add special place for potential reviewers?
2. Potential reviewers should agree that they want to review?
3. We can have more than one accepted reviewer?

I'm not sure i understood exactly what you mean by 'potential
reviewers'.  do want gerrit (hook?) to automatically add reviewers to
a patch according to the code sent?  so in fact you'll have a place
somewhere for mapping code & specific developers?

I really like this idea. Gerrit currently requires new users to know who
to add as reviewers, IMHO impeding new contributors.

One relative simple solution would be to look at who recently touched
the files that are being modified and add them as reviewers. This can be
done by looking at the git log for a file. Some pseudo python code
solution:

reviewers = set()

for modified_file in commit.files:
      reviewers += set(commit.author for commit in git.log(modified_file))

return reviewers

This gives a system that those who touche a file, become the maintainer
for that file. A more complex solution could improve on that and limit
the reviewers added per patch. One can think of limiting to only
contributions in the last X months, weigh contributions so common
committers are prefered. It could also combine several methods.

For example to limit to the 5 authors who touched the most files:

reviewers = collections.Counter()  # New in python 2.7

for modified_file in commit.files:
      reviewers += collections.Counter(commit.author for commit in
      git.log(modified_file))

return [author for author, count in reviewers.most_common(5)]

Since Counter also accepts a dictionary, one could also weigh the
touched lines per file. Downside there is big whitespace/formatting
patches can skew the line count.

In short, I think an entire thesis could be written on the optimal way
to determine reviewers but a simple algorithm could do to show the
method works.

Does this help?
_______________________________________________
Users mailing list
us...@ovirt.org
http://lists.ovirt.org/mailman/listinfo/users


I think if we do this, we want to make sure we cover per file who is
required to +2 it before we consider it acked.


won't it require maintaining static lists of people per file/path/project?


yes, but considering our project layout, i don't see an alternative.
(some of the layout could be improved to be path based, rather than file based)
_______________________________________________
Infra mailing list
Infra@ovirt.org
http://lists.ovirt.org/mailman/listinfo/infra

Reply via email to