Commit e62f905e authored by Simon Glass's avatar Simon Glass
Browse files

patman: Allow reading metadata from a list of commits



We normally read from the current branch, but buildman will need to look
at commits from another branch. Allow the metadata to be read from any
list of commits, to provide this flexibility.
Signed-off-by: default avatarSimon Glass <sjg@chromium.org>
parent dc191505
...@@ -237,7 +237,8 @@ class PatchStream: ...@@ -237,7 +237,8 @@ class PatchStream:
# Detect the start of a new commit # Detect the start of a new commit
elif commit_match: elif commit_match:
self.CloseCommit() self.CloseCommit()
self.commit = commit.Commit(commit_match.group(1)[:7]) # TODO: We should store the whole hash, and just display a subset
self.commit = commit.Commit(commit_match.group(1)[:8])
# Detect tags in the commit message # Detect tags in the commit message
elif tag_match: elif tag_match:
...@@ -334,26 +335,47 @@ class PatchStream: ...@@ -334,26 +335,47 @@ class PatchStream:
self.Finalize() self.Finalize()
def GetMetaData(start, count): def GetMetaDataForList(commit_range, git_dir=None, count=None,
series = Series()):
"""Reads out patch series metadata from the commits """Reads out patch series metadata from the commits
This does a 'git log' on the relevant commits and pulls out the tags we This does a 'git log' on the relevant commits and pulls out the tags we
are interested in. are interested in.
Args: Args:
start: Commit to start from: 0=HEAD, 1=next one, etc. commit_range: Range of commits to count (e.g. 'HEAD..base')
count: Number of commits to list git_dir: Path to git repositiory (None to use default)
count: Number of commits to list, or None for no limit
series: Series object to add information into. By default a new series
is started.
Returns:
A Series object containing information about the commits.
""" """
pipe = [['git', 'log', '--no-color', '--reverse', 'HEAD~%d' % start, params = ['git', 'log', '--no-color', '--reverse', commit_range]
'-n%d' % count]] if count is not None:
params[2:2] = ['-n%d' % count]
if git_dir:
params[1:1] = ['--git-dir', git_dir]
pipe = [params]
stdout = command.RunPipe(pipe, capture=True).stdout stdout = command.RunPipe(pipe, capture=True).stdout
series = Series()
ps = PatchStream(series, is_log=True) ps = PatchStream(series, is_log=True)
for line in stdout.splitlines(): for line in stdout.splitlines():
ps.ProcessLine(line) ps.ProcessLine(line)
ps.Finalize() ps.Finalize()
return series return series
def GetMetaData(start, count):
"""Reads out patch series metadata from the commits
This does a 'git log' on the relevant commits and pulls out the tags we
are interested in.
Args:
start: Commit to start from: 0=HEAD, 1=next one, etc.
count: Number of commits to list
"""
return GetMetaDataForList('HEAD~%d' % start, None, count)
def FixPatch(backup_dir, fname, series, commit): def FixPatch(backup_dir, fname, series, commit):
"""Fix up a patch file, by adding/removing as required. """Fix up a patch file, by adding/removing as required.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment