4

如何使用 GitPython 使用命令(git archive --remote)?根据 GitPython 文档,我们可以直接使用 git。我正在做类似的事情:

git = repo.git git.archive(remote=' http://path ')

但收到错误“异常是:Cmd('git')失败,原因是:退出代码(1)”

我可以查看任何示例以在 python 脚本中执行 git archive --remote 吗?

谢谢

4

1 回答 1

0

这个问题很老了,但我遇到了同样的问题,所以这是我的解决方案:

import git
import shutil

url = 'ssh://url-to.my/repo.git'
remote_ref = 'master'
tmprepo = 'temprepo'
tarball = 'contents.tar'

try:
    repo = git.Repo.init(tmprepo)
    repo.create_remote('origin', url)
    repo.remote().fetch(remote_ref)

    with open(tarball, 'wb') as f:
        repo.archive(f, f'remotes/origin/{remote_ref}', path=None)
    print('Success')
finally:
    shutil.rmtree(tmprepo)

几点注意事项:

  • 此解决方案创建一个临时存储库,获取请求的远程 ref 并将其存档。理想情况下,我们不需要所有这些额外的步骤,但我无法找到更好的解决方案。请提出改进​​建议!
  • path如果您只想包含目录的子集,请将参数设置为有意义的值
  • 因为我们不需要任何历史记录,所以fetch()可以优化调用。函数所**kwargs采用的可能在这里有所帮助(请参阅man git-fetch
于 2021-05-21T11:16:03.830 回答