Great. On Mon, Aug 3, 2015 at 12:16 PM, amareshwarisr . <[email protected]> wrote:
> Parked https://issues.apache.org/jira/browse/LENS-708 > > On Mon, Aug 3, 2015 at 12:14 PM, Yash Sharma <[email protected]> wrote: > >> Oh. I was confused with the via thing. So I used the style in the commit >> doc. It had the name of author after via. >> Will update doc as well :) >> >> Thanks >> >> On Mon, Aug 3, 2015 at 12:11 PM, Rajat Khandelwal <[email protected]> >> wrote: >> >>> Yes. And the via thing is wrong in your commit message. It's other way >>> round. >>> >>> On Mon, Aug 3, 2015, 11:59 Yash Sharma <[email protected]> wrote: >>> >>>> Oh my bad. The most recent file is named LENS-541_01.patch. >>>> I picked the one with name LENS-541.03.patch. >>>> >>>> On Mon, Aug 3, 2015 at 11:55 AM, amareshwarisr . <[email protected] >>>> > wrote: >>>> >>>>> Rajat, >>>>> >>>>> Is the commit correct? Seems not. May be the file was not attached on >>>>> the jira? The one i reviewed has doc changes not a .py file. >>>>> >>>>> On Mon, Aug 3, 2015 at 11:51 AM, <[email protected]> wrote: >>>>> >>>>>> Repository: incubator-lens >>>>>> Updated Branches: >>>>>> refs/heads/master bffa78c97 -> 898e0a82e >>>>>> >>>>>> >>>>>> LENS-541 : Lens patch-review tool (Yash Sharma via Rajat Khandelwal) >>>>>> >>>>>> >>>>>> Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo >>>>>> Commit: >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/898e0a82 >>>>>> Tree: >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/898e0a82 >>>>>> Diff: >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/898e0a82 >>>>>> >>>>>> Branch: refs/heads/master >>>>>> Commit: 898e0a82ee7880747ffeaef2fa21b50dfaa96bbf >>>>>> Parents: bffa78c >>>>>> Author: Rajat Khandelwal <[email protected]> >>>>>> Authored: Mon Aug 3 11:49:05 2015 +0530 >>>>>> Committer: Yash Sharma <[email protected]> >>>>>> Committed: Mon Aug 3 11:49:05 2015 +0530 >>>>>> >>>>>> ---------------------------------------------------------------------- >>>>>> tools/scripts/lens-patch-review.py | 130 >>>>>> ++++++++++++++++++++++++++++++++ >>>>>> 1 file changed, 130 insertions(+) >>>>>> ---------------------------------------------------------------------- >>>>>> >>>>>> >>>>>> >>>>>> http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/898e0a82/tools/scripts/lens-patch-review.py >>>>>> ---------------------------------------------------------------------- >>>>>> diff --git a/tools/scripts/lens-patch-review.py >>>>>> b/tools/scripts/lens-patch-review.py >>>>>> new file mode 100644 >>>>>> index 0000000..48cf478 >>>>>> --- /dev/null >>>>>> +++ b/tools/scripts/lens-patch-review.py >>>>>> @@ -0,0 +1,130 @@ >>>>>> +#!/usr/bin/env python >>>>>> + >>>>>> +# Licensed to the Apache Software Foundation (ASF) under one >>>>>> +# or more contributor license agreements. See the NOTICE file >>>>>> +# distributed with this work for additional information >>>>>> +# regarding copyright ownership. The ASF licenses this file >>>>>> +# to you under the Apache License, Version 2.0 (the >>>>>> +# "License"); you may not use this file except in compliance >>>>>> +# with the License. You may obtain a copy of the License at >>>>>> +# >>>>>> +# http://www.apache.org/licenses/LICENSE-2.0 >>>>>> +# >>>>>> +# Unless required by applicable law or agreed to in writing, software >>>>>> +# distributed under the License is distributed on an "AS IS" BASIS, >>>>>> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >>>>>> implied. >>>>>> +# See the License for the specific language governing permissions and >>>>>> +# limitations under the License. >>>>>> + >>>>>> + >>>>>> +# Modified based on Kafka's patch review tool >>>>>> + >>>>>> +# Required Modules: >>>>>> +# - python-argparse >>>>>> + >>>>>> +import argparse >>>>>> +import sys >>>>>> +import os >>>>>> +import time >>>>>> +import datetime >>>>>> +import tempfile >>>>>> +from jira.client import JIRA >>>>>> + >>>>>> +def get_jira(): >>>>>> + options = { >>>>>> + 'server': 'https://issues.apache.org/jira' >>>>>> + } >>>>>> + # read the config file >>>>>> + home=jira_home=os.getenv('HOME') >>>>>> + home=home.rstrip('/') >>>>>> + jira_config = dict(line.strip().split('=') for line in open(home + >>>>>> '/jira.ini')) >>>>>> + jira = JIRA(options,basic_auth=(jira_config['user'], >>>>>> jira_config['password'])) >>>>>> + return jira >>>>>> + >>>>>> +def main(): >>>>>> + ''' main(), shut up, pylint ''' >>>>>> + popt = argparse.ArgumentParser(description='Apache Lens patch >>>>>> review tool') >>>>>> + popt.add_argument('-b', '--branch', action='store', dest='branch', >>>>>> required=True, help='Tracking branch to create diff against') >>>>>> + popt.add_argument('-j', '--jira', action='store', dest='jira', >>>>>> required=True, help='JIRA corresponding to the reviewboard') >>>>>> + popt.add_argument('-s', '--summary', action='store', >>>>>> dest='summary', required=False, help='Summary for the reviewboard') >>>>>> + popt.add_argument('-d', '--description', action='store', >>>>>> dest='description', required=False, help='Description for reviewboard') >>>>>> + popt.add_argument('-r', '--rb', action='store', >>>>>> dest='reviewboard', required=False, help='Review board that needs to be >>>>>> updated') >>>>>> + popt.add_argument('-t', '--testing-done', action='store', >>>>>> dest='testing', required=False, help='Text for the Testing Done section >>>>>> of >>>>>> the reviewboard') >>>>>> + popt.add_argument('-db', '--debug', action='store_true', >>>>>> required=False, help='Enable debug mode') >>>>>> + popt.add_argument('-rbu', '--reviewboard-user', action='store', >>>>>> dest='reviewboard_user', required=True, help='Review board user name') >>>>>> + popt.add_argument('-rbp', '--reviewboard-password', >>>>>> action='store', dest='reviewboard_password', required=True, help='Review >>>>>> board user password') >>>>>> + popt.add_argument('-v', '--version', action='store', >>>>>> dest='version', required=False, help='Version for patch') >>>>>> + opt = popt.parse_args() >>>>>> + >>>>>> + patch_file=tempfile.gettempdir() + "/" + opt.jira + "." + >>>>>> opt.version + ".patch" >>>>>> + if opt.reviewboard: >>>>>> + ts = time.time() >>>>>> + st = >>>>>> datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d_%H:%M:%S') >>>>>> + patch_file=tempfile.gettempdir() + "/" + opt.jira + '_' + st + >>>>>> '.patch' >>>>>> + >>>>>> + git_remote_update="git remote update" >>>>>> + print "Updating your remote branches to pull the latest changes" >>>>>> + p=os.popen(git_remote_update) >>>>>> + p.close() >>>>>> + >>>>>> + rb_command="post-review --publish --tracking-branch " + opt.branch >>>>>> + " --target-groups=lens --bugs-closed=" + opt.jira >>>>>> + rb_command=rb_command + " --username " + opt.reviewboard_user + " >>>>>> --password " + opt.reviewboard_password >>>>>> + >>>>>> + if opt.debug: >>>>>> + rb_command=rb_command + " --debug" >>>>>> + summary="Patch for " + opt.jira >>>>>> + if opt.summary: >>>>>> + summary=opt.summary >>>>>> + rb_command=rb_command + " --summary \"" + summary + "\"" >>>>>> + if opt.description: >>>>>> + rb_command=rb_command + " --description \"" + opt.description + >>>>>> "\"" >>>>>> + if opt.reviewboard: >>>>>> + rb_command=rb_command + " -r " + opt.reviewboard >>>>>> + if opt.testing: >>>>>> + rb_command=rb_command + " --testing-done=\"" + opt.testing + "\"" >>>>>> + if opt.debug: >>>>>> + print rb_command >>>>>> + p=os.popen(rb_command) >>>>>> + rb_url="" >>>>>> + for line in p: >>>>>> + print line >>>>>> + if line.startswith('http'): >>>>>> + rb_url = line >>>>>> + elif line.startswith("There don't seem to be any diffs"): >>>>>> + print 'ERROR: Your reviewboard was not created/updated since >>>>>> there was no diff to upload. The reasons that can cause this issue are 1) >>>>>> Your diff is not checked into your local branch. Please check in the diff >>>>>> to the local branch and retry 2) You are not specifying the local branch >>>>>> name as part of the --branch option. Please specify the remote branch >>>>>> name >>>>>> obtained from git branch -r' >>>>>> + p.close() >>>>>> + sys.exit(1) >>>>>> + elif line.startswith("Your review request still exists, but the >>>>>> diff is not attached") and not opt.debug: >>>>>> + print 'ERROR: Your reviewboard was not created/updated. Please >>>>>> run the script with the --debug option to troubleshoot the problem' >>>>>> + p.close() >>>>>> + sys.exit(1) >>>>>> + p.close() >>>>>> + if opt.debug: >>>>>> + print 'rb url=',rb_url >>>>>> + >>>>>> + git_command="git diff " + opt.branch + " > " + patch_file >>>>>> + if opt.debug: >>>>>> + print git_command >>>>>> + p=os.popen(git_command) >>>>>> + p.close() >>>>>> + >>>>>> + print 'Creating diff against', opt.branch, 'and uploading patch to >>>>>> JIRA',opt.jira >>>>>> + jira=get_jira() >>>>>> + issue = jira.issue(opt.jira) >>>>>> + attachment=open(patch_file) >>>>>> + jira.add_attachment(issue,attachment) >>>>>> + attachment.close() >>>>>> + >>>>>> + comment="Created reviewboard " >>>>>> + if not opt.reviewboard: >>>>>> + print 'Created a new reviewboard ',rb_url >>>>>> + else: >>>>>> + print 'Updated reviewboard',opt.reviewboard >>>>>> + comment="Updated reviewboard " >>>>>> + >>>>>> + comment = comment + rb_url >>>>>> + jira.add_comment(opt.jira, comment) >>>>>> + >>>>>> +if __name__ == '__main__': >>>>>> + sys.exit(main()) >>>>>> + >>>>>> >>>>>> >>>>> >>>> >> >
