我在Mercurial中有一个Python应用程序。在应用程序中,我发现需要显示其当前正在从哪个提交运行。到目前为止,我发现的最佳解决方案是使用hglib
。我有一个看起来像这样的模块:
def _get_version():
import hglib
repo = hglib.open()
[p] = repo.parents()
return p[1]
version = _get_version()
它使用
hglib
查找使用的版本,并将结果存储在变量中,我可以在服务保持运行的整个过程中使用该变量。我现在的问题是,这会导致
hg
子进程正在运行,这对我来说是无用的,因为一旦完成该模块的初始化,我就不再需要使用hglib
了。我希望一旦对存储库实例的引用超出范围,子进程将在垃圾回收期间关闭。但这显然不是它的工作原理。
在阅读
hglib
文档时,我没有找到有关如何关闭子进程的任何文档。完成对
hg
子进程的关闭后,首选的方法是什么? 最佳答案
您需要像对待文件一样对待仓库。完成后调用repo.close()或在with中使用它:
def _get_version():
import hglib
with hglib.open() as repo:
[p] = repo.parents()
return p[1]
version = _get_version()