是否可以使用mercurial python库从提交ID中获取文件更改信息?

熟透的

我正在Rhodecode CI中实现自定义挂钩,该挂钩在每次推送时都会向Buildbot发送构建请求。该挂钩为我提供了修订版本的commit-id,我如何提取有关在此提交过程中更改的文件的信息。

@has_kwargs({
'commit_ids': 'list of pushed commit_ids (sha1)',})
def _push_hook(*args, **kwargs):
     import mercurial # can I used this library to get this info?
     some_function(commit_id) # should return files changed

我可以使用mercurial库还是使用python以其他方式以编程方式获取此信息?

熟透的

使用rhodecode:

from rhodecode.model.db import Repository
from rhodecode.api.utils import build_commit_data, Optional


class Commit:

    def __init__(self, repo_name, commit_id):
        self._commit_id = commit_id
        repo = Repository.get_by_repo_name(repo_name)
        self.vcs_repo = repo.scm_instance(cache=False)

    def files_changed(self):
        changeset_details = self._changeset_details(self._commit_id)
        files_changed_ = [diff.get("filename") for diff in changeset_details["diff"]]
        return files_changed_

    def _changeset_details(self, commit_id):
        pre_load = ['author', 'branch', 'date', 'message', 'parents',
                    'status', '_commit', '_file_paths']
        changes_details = Optional.extract("full")
        changeset = self.vcs_repo.get_changeset(commit_id, pre_load=pre_load)
        changeset_data = changeset.__json__()
        changeset_data['diff'] = build_commit_data(changeset, changes_details)
        return changeset_data

使用HG:

from mercurial import ui, hg
hg_repo = hg.repository(ui.ui(), repo_path)
node = hg_repo.changelog.node(revision)    
log = hg_repo.changelog.read(node)
manifest, user, (time, timezone), files_changed, desc, extra = log

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以使用Apache Tika提取表信息?

是否可以使用JSON发送文件

是否可以使用JAVA从文件中读取/写入位?

是否可以使用python外壳程序中定义的函数?

Windows是否可以使用Tensorflow C库?

是否可以使用AudioKit / AKPlayer更改播放位置?

在Haskell中是否可以使用if函数使用模式匹配?

是否可以使用Jinja创建Python文件

是否可以使用regexp_replace()函数更改单词?

是否可以使用openpyxl更改列宽?

是否可以使用Hive计划python文件的CRON任务

是否可以使用鼠标更改计算机的音量?

是否可以使用JavaScript更改document.readyState?

是否可以使用dnf启用/禁用yum存储库?

Nautilus:是否可以使用Nautilus更改符号链接?

是否可以使用钩子类中的库?

是否可以使用FastCGI库在C ++中建立网站?

是否可以使用库中的类型创建DataContract?

是否可以使用Python创建文件夹?

是否可以使用映射类型更改属性形状?

是否可以使用 Python 编辑 MS word doc 文件?

是否可以使用 Forge API 更改 CAD 模型尺寸?

是否可以使用钩子更改 Cloudflare App 中的产品?

是否可以使用 javascript 更改实际的 css 文件?

是否可以使用 javascript 更改 <div> 父级?

是否可以使用 GitAhead 进行多行提交

是否可以使用js更改网站的背景?

是否可以使用 Rust 的日志信息进行测试?

是否可以使用 CSS 更改 svg viewBox 值?