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

Reply via email to