追踪 darc 中的依赖关系

Tracking down dependencies in darcs

我在工作中使用 darcs 已经一年多了,但我一直在问自己同样的问题:

追踪导致两个补丁之间依赖的代码 line/file/code 更改的最佳方法是什么?现在我的做法如下:

  1. 我使用 darcs changes -i 检查这两个补丁影响了哪些文件,并输入 x 以获得适当的补丁。

  2. 我检查哪些文件受到两个补丁的影响。

  3. 我猜是哪个文件导致了依赖关系,通过使用 darcs amend --unrecord 我从两个补丁中删除了对该文件的更改。

  4. 我检查依赖项是否已解决并将更改添加回补丁,同时不断检查依赖项是否再次出现,从而追踪导致依赖项的代码部分。

这种查找导致依赖性的代码 line/file 的试错法需要花费大量时间。必须有一种更简单的方法来做到这一点,我错过了什么吗?提前致谢!

Darcs 显示依赖关系:

从 darcs 2.12 开始 (release notes) 您可以使用命令

生成依赖关系图
darcs show dependencies

darcs 版本注意事项

我建议按照发行说明中的​​说明安装带有堆栈的 darcs。


显示输出

该命令以 graphviz 点格式生成依赖关系图。 您必须自己负责显示输出(这并不奇怪)。

一种简单的方法是将输出直接通过管道传输到 dot,让它创建一些输出(例如使用 Tpng 的 png),然后将其通过管道传输到 显示@ImageMagick:

darcs show dependencies --last 20 | head -n -1 | dot -Tpng | display

或者您可以将这些内容写入文件并使用 evince 或您喜欢的任何查看器打开它:

darcs show dependencies --last 20 | head -n -1 | dot -Tpdf > darcs-dependencies.pdf && xdg-open darcs-dependencies.pdf

图形界面:

我实际上已经编写了一个图形用户界面来自动执行此过程并进行一些颜色编码。

你可以在这里找到它:iHateDarcs on github

(Disclaimer/Warning: 我目前是该 gui 的唯一用户。它是根据我的工作流程高度定制的,包括许多您可能不感兴趣的其他内容,例如与 redmine 问题的集成跟踪器,需要一些设置工作才能获得 运行,但目前还没有经过除我之外的任何人的测试)