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()) >> + >> >> >
