On 04/28/15 18:13, Frank Filz wrote: (...) > The problem with a longer that one week cycle is that we get larger and > larger volumes of patches. With the right tools, we can sustain a weekly > cycle. We introduced the 1-week cycle to regulate/sort patches, for we had no other way of doing it when using github. I think that gerrit can help regulating patches workflow and so removes the need for a 1-week cycle. What we should do could look like this: - people depose patches and asks people to review it - gerrit runs automated test on it (like checkpatch) and verify the patches - do add +1/-1... new version of the patch is done, discussion are made... and finally the patch is ready - at this point, people contact the release manager (aka Frank ;-) ) and ask for landing the patch. - if the patch is mergeable (fast-forwardable) it is merged (cherry-pick button in github interface), if not, owner will have to rebase it and restart the whole review process This can be done on the fly, as patches arrive and are reviewed. This change a constrained 1-week cycle against several, less constrained, cycles, one per patch. Keeping this in mind, a single "big and squashed" patch is clearly easier to manage. As Matt said, bigger patches are no issue. If I do a big patch or 10 small ones, all of my changed files will have to be reviewed, which does have no impact on the workload. In fact, one big patch is a cool situation : it is easy to rebase, and it depends only on stuff already pushed and landed. If I publish 5 patches, what if patch 1, 2 and 3 merge fine, but 4 produce a conflict ? How could I rebase 4 without touch 1,2 and 3 ? This leads to a dependencies maze, and this is precisely the situation we fell into.
Regarding, I believe we should: - nfs-ganesha in gerrithub (Frank's home in gerrithub) should accept only fast-forwardable commit (that's a matter of clicking on the right button in the right page) - we should provide big and squashed patches, one per feature. For example, CEA will soon push a rework of FSAL_HPSS, this will be a single commit. - the git in gerrit is the reference. Forget githib, at best it a clone to expose code in a fancy way. This mean that we stop fetch frank's github and we fetch frank's gerrithub. This is a very important point. It seems to me that if a patch is landed in gerrithub, the related github repository is automatically updated. This will prevent Frank from doing not-funny work, getting things on one side to push it on the other. We use gerrit, gerrit becomes our reference. That's as simple as that. Forget github or use it to store work-in-progress stuff of your own. > Note however that the review cycle of a patch set needs to be understood to > not always be a week. Sometimes it will take several weeks of iterations. As I said, the "one single 1-week cycle" is replaced by "several independent patch-related cycle". Some may take weeks, some may take days or less. The 1-week cycle is github related. If we stop using github as a reference and use gerrithub instead, we have no need for this 1-week constraint. > What I want to work on though is responsiveness when people submit patches > that they get a first review in a timely fashion. They can. People could then add stuff in the patch, and squash the result in a new patch. If the ChangeId is preserved, gerrit will understand that this is a new version of an already known patchset and keep the same tracks. > Also, with the changeid allowing review comments to be tracked across > versions of a patch, I want to encourage posting patches for review earlier > so the major features are getting reviewed as they are developed, not one > huge review at the end that no one can keep track of. 10000% agreed ;-) This is a completely safe way of proceeding. > We have to do it because once a changeid has been merged, it is marked > closed, and can't be resubmitted. This happened because the way we are > trying to use gerrithub is non-native and I messed up. This will never > happen again (with the usual caveat, never say never). This is the result of a mistake, and we all are in a learning curve in using gerrithub. It's no actual issue so far. I understood that you spoke about modifying changeids in a normal workflow. Nice to see to do not think this way ;-) As far as possible changeids are to be preserved. > Yes, that is goodness. Long term, we need it to automate testing of a set of > temporarily merged patches, so if you and I have submitted patches, we test > that they play well together. We also need to automate testing across a > wider variety of platforms. We do need automated tests. TravisCI can do compilation tests, but it seems limited to run "client/server" tests on several machines (what Jenkins/Workflow does or what I do with some of my Sigmund tests). Ideally, when someone submit a patch, before it is actually merged or even reviewed, automated test should run on "next+this commit" (a temporary and volatile branch) to check for correctness. Gerrit can do things like that (for example it has strong coupling capabilities with Jenkins). The Lustre community use that kind of feature a lot. In fact review should start only if all automated tests are OK. In fact, what we need is a common places where we could run tests in an automated way (something like a "JenkinsHub"...) Dominique is currently in the process of automating some tests, he says more in another message in this list. Regards Philippe ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ Nfs-ganesha-devel mailing list Nfs-ganesha-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/nfs-ganesha-devel