2

我目前正在尝试编写一个脚本,该脚本将在任务描述中给定特定 # 的情况下找到所有已更改的文件,并且我已经让脚本为此工作。但现在我试图按文件是否被添加、修改或删除来排序。我查看了Mercurial API,但找不到任何可以做我想做的事。

我的代码当前使用repo[revnum].description()并解析它以查找哪些包含#,如果它们包含,则将文件上下文添加到列表中。这工作正常,我可以打印文件列表,但我找不到一种方法来查看每个上下文做了什么。任何人都可以在这里帮助我,或者向我指出一些更好的文档吗?

4

3 回答 3

2

您需要使用 Mercurial API 吗?通过使用的输出可以做你需要的事情hg log

于 2012-06-01T17:43:02.923 回答
1

我最终使用了类似于 Tim 所说的东西,尽管我仍然使用 API。我从 mercurial 导入命令,然后调用 commands.status(repo.ui, repo, change=revnum)

我使用 repo.ui.pushbuffer() 和 repo.ui.popbuffer() 捕获了它的输出,格式为

A file_path1
R file_path2
R file_path3
A file_path4
M file_path5

我解析了这个输入并将其分类为添加、删除、修改等。

于 2012-06-01T19:01:49.647 回答
1

一般来说,您应该避免直接使用 Mercurial API 编写脚本。最好编写脚本以使用 CLI 或什至使用hglib. 如MercurialApi wiki所述:

对于绝大多数第三方代码,最好的方法是使用 Mercurial 已发布、文档化且稳定的 API:命令行界面。

话虽如此,如果您确实需要使用 API,您可以使用repo.status()来查找您询问的信息:

modified, added, removed, deleted, unknown, ignored, clean = repo.status(revnum-1, revnum)
于 2012-06-01T18:00:42.413 回答