# HG changeset patch # User Steve Losh # Date 1309391236 14400 # Node ID 48541d29e527decb9923dd6a1ab8536e8a62cbd2 # Parent e62677ebd73d62507b20fabc75ee0b5ecbd1cf90# Parent 971a3a6e1df95b59f03f8217f231efe8d667a51d Merged in benallard/hg-review (pull request #1) diff -r e62677ebd73d -r 48541d29e527 review/api.py --- a/review/api.py Sat Jan 29 19:00:39 2011 -0500 +++ b/review/api.py Wed Jun 29 19:47:16 2011 -0400 @@ -423,6 +423,16 @@ return ReviewSignoff(**data) + def _create_exists_entry(self): + path = os.path.join(self.repo.root, self.node) + os.mkdir(path) + with open(os.path.join(path, '.exists'), 'w') as e: + pass + + cmdutil.commit(self.ui, self.repo, _commitfunc, + [os.path.join(path, '.exists')], + { 'message': 'Initialize review data for changeset %s' % self.node, + 'addremove': True, }) def __init__(self, ui, repo, target, node): """Initialize a ReviewChangeset. @@ -455,16 +465,6 @@ self.comments = [] self.signoffs = [] - path = os.path.join(self.repo.root, self.node) - os.mkdir(path) - with open(os.path.join(path, '.exists'), 'w') as e: - pass - - cmdutil.commit(ui, self.repo, _commitfunc, - [os.path.join(path, '.exists')], - { 'message': 'Initialize review data for changeset %s' % self.node, - 'addremove': True, }) - def signoffs_for_user(self, username): return filter(lambda s: s.author == username, self.signoffs) @@ -486,6 +486,9 @@ if existing: raise SignoffExists + if not (self.comments or self.signoffs): + self._create_exists_entry() + signoff = ReviewSignoff(fromlocal(self.ui.username()), util.makedate(), self.node, opinion, message, style) signoff._commit(self.ui, self.repo) @@ -509,6 +512,9 @@ if filename and not ufilename: ufilename = fromlocal(filename) + if not (self.comments or self.signoffs): + self._create_exists_entry() + comment = ReviewComment(fromlocal(self.ui.username()), util.makedate(), self.node, ufilename, filename, map(int, lines), message, style) comment._commit(self.ui, self.repo) @@ -615,7 +621,7 @@ for n, line in enumerate(d): start = n - context if n > context else 0 end = n + context + 1 - if any(filter(lambda l: l[0] in '+-', d[start:end])): + if any(filter(lambda l: l and l[0] in '+-', d[start:end])): yield (n, line) for filename, content in ds.iteritems(): diff -r e62677ebd73d -r 48541d29e527 review/web.py --- a/review/web.py Sat Jan 29 19:00:39 2011 -0500 +++ b/review/web.py Wed Jun 29 19:47:16 2011 -0400 @@ -48,7 +48,10 @@ return 'http://www.gravatar.com/avatar/%s?s=%d' % (md5(email(cset.user())).hexdigest(), size) def _line_type(line): - return 'rem' if line[0] == '-' else 'add' if line[0] == '+' else 'con' + try: + return {'+': 'add', '-':'rem'}[line[0]] + except (IndexError, KeyError): + return 'con' def _categorize_signoffs(signoffs): return { 'yes': len(filter(lambda s: s.opinion == 'yes', signoffs)),