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