Exemplo n.º 1
0
    def check(self, checker):
        warnings = 0
        old_rev = self.initial_revision
        for current_rev in self.revisions:
            rev_warnings = 0
            directory = tempfile.mkdtemp(suffix='-r' + current_rev,
                                         prefix='githooks')

            self.ui.debug(checker.__name__ + " -> Checking revision " +
                          current_rev)

            description = git.description(current_rev)
            if self.skip_text and self.skip_text in description:
                continue

            files_to_check = {}
            revision_files = git.file_names(old_rev, current_rev)

            for filename in revision_files:
                if not (filename and filename != ""):
                    continue

                # TODO check if the file was removed in this changeset

                filedata = git.file_data(current_rev, filename)

                if self.skip_text and self.skip_file(filename, filedata):
                    continue

                full_path = os.path.join(directory, filename)
                if not os.path.exists(os.path.dirname(full_path)):
                    os.makedirs(os.path.dirname(full_path))
                f = open(full_path, 'w')
                f.write(filedata)
                f.close()
                files_to_check[full_path] = filedata

            if files_to_check:
                rev_warnings += checker(files_to_check, description)

            if rev_warnings:
                self.ui.warn(
                    (checker.__name__ + ' -> %d warnings found in revision ' +
                     current_rev + '\n') % rev_warnings)
            else:
                self.ui.debug(checker.__name__ +
                              ' -> No warnings in revision ' + current_rev +
                              ' - Good job!\n')
            warnings += rev_warnings
            shutil.rmtree(directory)
            old_rev = current_rev

        if warnings:
            return True  # failure
        else:
            return False  # sucess
Exemplo n.º 2
0
    def check(self, checker):
        warnings = 0
        old_rev = self.initial_revision
        for current_rev in self.revisions:
            rev_warnings = 0
            directory = tempfile.mkdtemp(suffix='-r' + current_rev,
                                         prefix='githooks')

            self.ui.debug(checker.__name__ + " -> Checking revision "
                          + current_rev)

            description = git.description(current_rev)
            if self.skip_text and self.skip_text in description:
                continue

            files_to_check = {}
            revision_files = git.file_names(old_rev, current_rev)

            for filename in revision_files:
                if not(filename and filename != ""):
                    continue

                # TODO check if the file was removed in this changeset

                filedata = git.file_data(current_rev, filename)

                if self.skip_text and self.skip_file(filename, filedata):
                    continue

                full_path = os.path.join(directory, filename)
                if not os.path.exists(os.path.dirname(full_path)):
                    os.makedirs(os.path.dirname(full_path))
                f = open(full_path, 'w')
                f.write(filedata)
                f.close()
                files_to_check[full_path] = filedata

            if files_to_check:
                rev_warnings += checker(files_to_check, description)

            if rev_warnings:
                self.ui.warn((checker.__name__
                              + ' -> %d warnings found in revision ' +
                              current_rev + '\n') % rev_warnings)
            else:
                self.ui.debug(checker.__name__ + ' -> No warnings in revision '
                              + current_rev + ' - Good job!\n')
            warnings += rev_warnings
            shutil.rmtree(directory)
            old_rev = current_rev

        if warnings:
            return True   # failure
        else:
            return False  # sucess
Exemplo n.º 3
0
Arquivo: hg.py Projeto: rotu/githooks
 def description(self):
     return git.description(self.rev)
Exemplo n.º 4
0
 def description(self):
     return git.description(self.rev)