Merge "Ask rev-parse for shortest unique SHA1"

This commit is contained in:
Jenkins 2016-01-27 14:25:35 +00:00 committed by Gerrit Code Review
commit 0c37b02c2e
3 changed files with 19 additions and 20 deletions

View File

@ -94,6 +94,10 @@ class GitUpstreamCompatCommit(Commit):
def hexsha(self):
return self.id
@property
def short(self):
return self.repo.git.rev_parse(self.hexsha, short=True)
@classmethod
def iter_items(cls, repo, ref, path='', **kwargs):
"""
@ -113,3 +117,5 @@ if not hasattr(Commit, 'iter_items'):
Commit = GitUpstreamCompatCommit
# monkey patch class so that Repo will use the patched class
git.commit.Commit = GitUpstreamCompatCommit
else:
Commit.short = GitUpstreamCompatCommit.short

View File

@ -82,34 +82,27 @@ class RebaseEditor(GitMixin, LogDedentMixin):
with codecs.open(todo_file, "w", "utf-8") as todo:
for commit in commits:
if not root:
root = commit.parents[0].hexsha
root = commit.parents[0]
subject = commit.message.splitlines()[0]
todo.write("pick %s %s\n" % (commit.hexsha[:7], subject))
todo.write("pick %s %s\n" % (self._shorten(commit), subject))
# if root isn't set at this point, then there were no commits
if not root:
todo.write("noop\n")
todo.write(TODO_EPILOGUE %
{'shortrevisions': self._short_revisions(root,
commit.hexsha),
'shortonto': self._short_onto(onto or root)})
{'shortrevisions': "%s..%s" % (self._shorten(root),
self._shorten(commit)),
'shortonto': self._shorten(onto or root)})
return todo_file
def _short_revisions(self, root, commit):
def _shorten(self, commit):
if not root:
if not commit:
return "<none>"
return "%s..%s" % (root[:7], commit[:7])
def _short_onto(self, onto):
if not onto:
return "<none>"
return self.git.rev_parse(onto)[:7]
return self.git.rev_parse(commit, short=True)
def _set_editor(self, editor):

View File

@ -569,7 +569,7 @@ class SupersededCommitFilter(LogDedentMixin, GitMixin, CommitFilter):
because the following superseding change-ids have not been
found:
%s
""", commit.hexsha[:7], commit.message.splitlines()[0],
""", commit.short, commit.message.splitlines()[0],
'\n '.join(superseding_change_ids))
yield commit
continue
@ -580,7 +580,7 @@ class SupersededCommitFilter(LogDedentMixin, GitMixin, CommitFilter):
because it has been marked as superseded by the following
note:
%s
""", commit.hexsha[:7], commit.message.splitlines()[0],
""", commit.short, commit.message.splitlines()[0],
commit_note)
@ -710,7 +710,7 @@ class DiscardDuplicateGerritChangeId(LogDedentMixin, GitMixin, CommitFilter):
Including change missing 'Change-Id'
Commit: %s %s
Message: %s
""", commit.hexsha[:7], commit.message.splitlines()[0],
""", commit.short, commit.message.splitlines()[0],
commit.message)
yield commit
continue
@ -735,7 +735,7 @@ class DiscardDuplicateGerritChangeId(LogDedentMixin, GitMixin, CommitFilter):
Skipping duplicate Change-Id in search ref
%s
Commit: %s %s
""", change_id, commit.hexsha[:7],
""", change_id, commit.short,
commit.message.splitlines()[0])
continue
@ -745,7 +745,7 @@ class DiscardDuplicateGerritChangeId(LogDedentMixin, GitMixin, CommitFilter):
Including unmatched change
%s
Commit: %s %s
""", change_id, commit.hexsha[:7],
""", change_id, commit.short,
commit.message.splitlines()[0])
yield commit