kafka-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nehanarkh...@apache.org
Subject git commit: KAFKA-1053 Kafka patch review tool that integrates JIRA and reviewboard; reviewed by Joel Koshy, Swapnil Ghike and Guozhang Wang
Date Wed, 18 Sep 2013 03:50:35 GMT
Updated Branches:
  refs/heads/trunk 9feef9fd6 -> 8959690e9


KAFKA-1053 Kafka patch review tool that integrates JIRA and reviewboard; reviewed by Joel
Koshy, Swapnil Ghike and Guozhang Wang


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/8959690e
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/8959690e
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/8959690e

Branch: refs/heads/trunk
Commit: 8959690e96f22e6905f80c76faa355448e4d2e51
Parents: 9feef9f
Author: Neha Narkhede <neha.narkhede@gmail.com>
Authored: Tue Sep 17 20:44:33 2013 -0700
Committer: Neha Narkhede <neha.narkhede@gmail.com>
Committed: Tue Sep 17 20:48:15 2013 -0700

----------------------------------------------------------------------
 .reviewboardrc        |   3 ++
 kafka-patch-review.py | 103 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 106 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kafka/blob/8959690e/.reviewboardrc
----------------------------------------------------------------------
diff --git a/.reviewboardrc b/.reviewboardrc
new file mode 100644
index 0000000..5e8d670
--- /dev/null
+++ b/.reviewboardrc
@@ -0,0 +1,3 @@
+REPOSITORY = 'git://git.apache.org/kafka.git'
+TARGET_GROUPS = 'kafka'
+GUESS_FIELDS = True	

http://git-wip-us.apache.org/repos/asf/kafka/blob/8959690e/kafka-patch-review.py
----------------------------------------------------------------------
diff --git a/kafka-patch-review.py b/kafka-patch-review.py
new file mode 100644
index 0000000..f1d5192
--- /dev/null
+++ b/kafka-patch-review.py
@@ -0,0 +1,103 @@
+#!/usr/bin/env python
+
+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='Kafka 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')
+  opt = popt.parse_args()
+
+  patch_file=tempfile.gettempdir() + "/" + opt.jira + ".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=kafka
--bugs-closed=" + opt.jira
+  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())
+


Mime
View raw message