用于访问 Hg、Git 和可能的 Bazaar 存储库的 Python 包装器?
我正在寻找一个可以对存储库进行基本操作但独立于后端版本控制系统的Python 库。
通过基本操作,我指的是:初始化存储库、添加文件、提交、拉取、推送、获取当前修订号。
该库的用户可以执行以下操作:
import dvcs_wrapper as dvcs
dvcs.set_backend('hg') # could choose 'git', 'bzr'
repo = dvcs.init('/home/me/my_repo')
repo.add('/home/me/my_repo/*.py')
repo.commit('Initial commit')
repo.push('http://bitbucket.org/....')
print('At revision %d' % repo.revision_num)
有任何指向类似上述内容的指针吗?我的 Google 搜索没有任何结果...
更新:无论其价值如何,我已经开始研究如下内容:代码在这里 和 单元测试 对于汞储存库。我可能会抽出时间去使用 Git 和 Bazaar;欢迎贡献。
I'm looking for a Python library that can do basic manipulation of repositories, but is independent of the backend version control system.
By basic manipulation, I'm referring to: initialize a repo, add files, commit, pull, push, get current revision number.
Users of the library could do something this:
import dvcs_wrapper as dvcs
dvcs.set_backend('hg') # could choose 'git', 'bzr'
repo = dvcs.init('/home/me/my_repo')
repo.add('/home/me/my_repo/*.py')
repo.commit('Initial commit')
repo.push('http://bitbucket.org/....')
print('At revision %d' % repo.revision_num)
Any pointers to something like the above? My Google searches turn up nothing...
Update: for what it's worth, I've started working on something like this: code is here with unit tests
for Hg repositories. I might get around to Git and Bazaar; contributions welcome.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
还有 VCS 模块,它宣传:
There's also the VCS module, which advertises:
我认为你不走运。
有 git 的 Python 包装器,但根据this,质量仍然达不到最佳水平。 Hg和bzr是Python项目,但它们的基础设施有很大不同,因此API级别的集成并不容易。此外,不同的 SCM 具有不同的设计理念,这使得统一的包装器不太可信。
话虽这么说,如果您确实需要一个简单的包装器,您可以使用 subprocess 模块并包装命令行以获得您想要的结果。
I think you are out of luck.
There are Python wrappers for git but according to this the quality is still less than optimal. Hg and bzr are Python projects but their infrastructure is quite different, so API level integration is not easy. Also different SCMs have different design philosophies, which makes a unified wrapper less plausible.
That being said, if you do need a simple wrapper, you can use the
subprocess
module and wrap the command lines to get the result you want.