如何使用git filter repo作为带有Python模块接口的库?

如何使用git filter repo作为带有Python模块接口的库?,git,git-filter-repo,Git,Git Filter Repo,我知道我在命令行中以字符串形式给出Python代码,例如: git-filter-repo --name-callback 'return name.replace(b"Wiliam", b"William")' 但特别是当我进入更复杂的脚本时,这将变得非常笨拙 相反,有没有一种方法可以做到: main.py import git_filter_repo def name_callback(name): return name.replace(

我知道我在命令行中以字符串形式给出Python代码,例如:

git-filter-repo --name-callback 'return name.replace(b"Wiliam", b"William")'
但特别是当我进入更复杂的脚本时,这将变得非常笨拙

相反,有没有一种方法可以做到:

main.py

import git_filter_repo

def name_callback(name):
    return name.replace(b"Wiliam", b"William")

git_filter_repo.name_callback(name_callback)
上面提到它可以用作库,我成功地安装了Python包,其中包括:

python3 -m pip install --user git-filter-repo

但是我很难找到关于如何使用Python API创建hello world的文档。

源代码的最后几行是一个很好的起点,因此我可以这样做:

#!/usr/bin/env python

import git_filter_repo

def blob_callback(blob, callback_metadata):
    blob.data = blob.data.replace(b'd1', b'asdf')

# Args deduced from:
# print(git_filter_repo.FilteringOptions.parse_args(['--refs', 'HEAD', '--force'], error_on_empty=False))
args = git_filter_repo.FilteringOptions.default_options()
args.force = True
args.partial = True
args.refs = ['HEAD']
args.repack=False
args.replace_refs='update-no-add'

git_filter_repo.RepoFilter(
   args,
   blob_callback=blob_callback
).run()
旨在等同于:

git filter-repo --refs HEAD <(echo 'd1==>asdf') --force
git过滤器回购——参考水头