应该如何管理“.hg/”状态目录中特定于钩子的文件?

2024-09-30 05:26:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Mercurial API的原生Python实现编写一系列changegroup和commit钩子。这需要我保存一些特定于钩子的信息,比如钩子实际看到的最后一个修订ID。在

我希望这样做,所有外部元数据都保存在存储库中,而不是实际跟踪或忽略。我想确保这些数据永远不会成为历史的一部分。在

我的第一个想法是使用现有的.hg/hgrc配置,因为我只需要存储简单的字符串和整数,而这正是我的钩子当前使用的少数配置行的地方。API提供了一种通过ui.config*读取此配置的简单方法,但似乎没有提供实际更改或写入它的方法。在

对于我来说,获取配置列表、附加或修改它,然后使用config模块编写它是很容易的,但是我真的觉得我可能忽略了API提供的一些东西。我一直在想,如果在一个成熟的API中没有明显的方法来实现这一点,我可能会走错方向。“

有没有一种“正确”的方法来做到这一点,也许是使用API?或者,也许我在API中没有找到不使用hgrc来管理这类数据的东西?我最关心的是同时在多个种族之间进行竞争。在


Tags: 数据方法字符串api信息idconfig历史
1条回答
网友
1楼 · 发布于 2024-09-30 05:26:08

hgrc配置文件是有意只读的,没有内部API可以写入这些文件。此规则的唯一例外是clone创建了一个default.hg/hgrc,其中包含克隆源URL。所以,不,别想用这个。在

通常的做法是读写你自己的私人文件。Mercurial本身拥有这个名称空间,并且以一种有机的、向后兼容的方式增长它的内容,所以您最好选择一个不太可能与其他人或任何未来Mercurial特性冲突的子目录名,并将您的文件保存在那里。建议基于文本。在

为了方便起见,repo对象包含工作状态空间(.hg/)中文件的打开器方法,回购沃佩纳())受保护的回购股票()和存储库存储中的文件(.hg/store/,回购协议())受保护的回购锁定(). 在

还可以执行原子文件写入:

f = self.wopener("mydata", "w", atomictemp=True)
f.write(somedata)
f.close()

确保你也读过这个:

https://www.mercurial-scm.org/wiki/LockingDesign

相关问题 更多 >

    热门问题