Пример #1
0
    def __dump_tree_consistency_info (self, log, suite_ctxdata):

        log.write ("\n-- TREE CONSISTENCY LOG:\n")

        if not suite_ctxdata:
            log.write (
                "suite context info unavailable, "
                "tree consistency unchecked\n")
            return

        os.chdir (self.repodir)

        local_treeref = treeref_at(self.repodir)
        suite_treeref = suite_ctxdata['treeref']

        if local_treeref == suite_treeref:
            log.write (
                "artifact tree ref matches testsuite (%s)\n"  % local_treeref)
            return

        log.write (
            "local_treeref = %s , suite_treeref = %s\n"  % \
                (local_treeref, suite_treeref)
            )

        merge_base = output_of (
            "git merge-base %s %s" % (local_treeref, suite_treeref)
            ).strip(' \n')

        (first, next) = (
            (suite_treeref, local_treeref) if merge_base == suite_treeref
            else (local_treeref, suite_treeref) if merge_base == local_treeref
            else (None, None))

        if first == None:
            log.write (
                "!!! local and suite tree refs aren't sequential !!!\n")
            return
        
        log.write (
            "%s tree is ahead\n" % \
                ('suite' if first == local_treeref else 'local')
            )
        
        gitlog_cmd = (
            "git rev-list --oneline %s ^%s" % (next, first))
        log.write (
            '\n'.join (['', gitlog_cmd, '--', output_of(gitlog_cmd), ''])
            )
Пример #2
0
def treeref_at(dirname):
    """A string representative of where the DIRNAME directory originates from
    (e.g. svn rev or git commit), to be used for consistency checks when
    multiple operations are done separately but should work over synchronized
    directory trees."""

    # Assuming git, sha1 for the HEAD reference

    return output_of("git rev-parse HEAD", dir=dirname).rstrip('\n')
Пример #3
0
def current_gitbranch_at(dirname):

    cwd = os.getcwd()
    os.chdir(dirname)

    this_branch = re.search(pattern="\* (?P<branchname>\S*)",
                            string=output_of("git branch")).group('branchname')

    os.chdir(cwd)

    return this_branch