def __init__(self, repo_url=None):
        self._host = None
        self._repo_path = None
        self._repo_url = repo_url
        if repo_url is not None:
            parsed_url = urlparse(repo_url)
            self._host = parsed_url.netloc
            # Remove the / in the front of path.
            self._repo_path = parsed_url.path[1:]
            self._CloneOrUpdateRepoIfNeeded()

        self.changelog_parser = local_git_parsers.GitChangeLogParser()
        self.changelogs_parser = local_git_parsers.GitChangeLogsParser()
        self.blame_parser = local_git_parsers.GitBlameParser()
        self.diff_parser = local_git_parsers.GitDiffParser()
Exemplo n.º 2
0
  def testGitChangeLogParser(self):
    output = textwrap.dedent("""
        commit revision
        tree tree_revision
        parents parent_revision

        author Test
        author-mail [email protected]
        author-time 2016-07-13 20:37:06

        committer Test
        committer-mail [email protected]
        committer-time 2016-07-13 20:37:06

        --Message start--
        Revert commit messages...
        > Committed: https://c.com/+/c9cc182781484f9010f062859cda048afefefefe
        Review-Url: https://codereview.chromium.org/2391763002
        Cr-Commit-Position: refs/heads/master@{#425880}
        --Message end--

        :100644 100644 25f95f c766f1 M      src/a/b.py
        :100644 100644 25aa5f c777f1 X      src/a/c.py
        """)

    message = ('Revert commit messages...\n'
               '> Committed: https://c.com/+/'
               'c9cc182781484f9010f062859cda048afefefefe\n'
               'Review-Url: https://codereview.chromium.org/2391763002\n'
               'Cr-Commit-Position: refs/heads/master@{#425880}')

    expected_changelog = change_log.ChangeLog(
        change_log.Contributor('Test', '*****@*****.**',
                               datetime(2016, 7, 13, 20, 37, 6)),
        change_log.Contributor('Test', '*****@*****.**',
                               datetime(2016, 7, 13, 20, 37,
                                        6)), 'revision', 425880, message,
        [change_log.FileChangeInfo('modify', 'src/a/b.py', 'src/a/b.py')],
        'https://repo/+/revision', 'https://codereview.chromium.org/2391763002',
        'c9cc182781484f9010f062859cda048afefefefe')

    changelog = local_git_parsers.GitChangeLogParser()(output, 'https://repo',
                                                       'refs/heads/master')
    self.assertDictEqual(expected_changelog.ToDict(), changelog.ToDict())
Exemplo n.º 3
0
 def testGitChangeLogParserParseEmptyOutput(self):
   self.assertIsNone(local_git_parsers.GitChangeLogParser()(None, 'repo',
                                                            'ref'))