小编Seb*_*her的帖子

如何使用darcs库查询补丁信息?

我想编写一个Haskell程序来查询有关darcs存储库的信息.我宁愿直接使用darcs库,而不是调用darcs可执行文件并解析结果.它说成是 "正在进行很多工作",并以"缺乏一个稳定的API",但似乎可用.

我想我可以通过研究darcsden源代码来回答我的问题,例如,从这个模块开始,但我认为,如果知识渊博的人提供评论性的介绍来补充这样的研究,它不仅对我有用.

所以,这是一个具体的例子.

如何为给定文件计算影响它的最新补丁以及补丁的日期,作者和名称?如果您解释解决方案中使用的密钥库函数,那将非常有用.


编辑:

以下是对不熟悉darc源代码的人可能不太明显的一些评论.我从Jason Dagit的硕士论文中学到了它们,并希望它们有助于理解Ganesh给出的答案.

在Darcs中,补丁具有前置和后置上下文,表示应用补丁之前和之后的存储库状态.在源代码中,这些上下文使用关于补丁类型的幻像类型进行建模.这些幻像类型被称为见证,seal2用于摆脱它们.

在补丁列表中,只有第一个前上下文和最后一个上下文在类型中表示.使用存在类型隐藏所有其他上下文.Darcs定义了前向列表(称为FL)和反向列表(称为RL).反向列表以反向(按时间顺序)顺序存储补丁(由darcs完成的模补丁重新排序).反向列表可用于访问头部位置的最新补丁.名称中包含RL的所有函数都在此类反向列表上创建或操作.

haskell darcs

11
推荐指数
1
解决办法
251
查看次数

使用Yesod和Darcs库时如何解决重复的符号错误?

由于链接器问题,似乎不可能将Yesod与Darcs库一起使用.我追踪了这个问题,并需要熟悉Darcs内部人员的提示来解决这个问题.

Yesod应用程序中使用darcs库时,出现以下错误:

GHCi runtime linker: fatal error: I found a duplicate definition for symbol
   sha256_init
whilst processing object file
   /home/sebfisch/.cabal/lib/darcs-2.9.5/ghc-7.4.2/libHSdarcs-2.9.5.a
This could be caused by:
   * Loading two different object files which export the same symbol
   * Specifying the same object file twice on the GHCi command line
   * An incorrect `package.conf' entry, causing some object to be
     loaded twice.
GHCi cannot safely continue in this situation.  Exiting now.  Sorry.
Run Code Online (Sandbox Code Playgroud)

它似乎是由darcs和cryptohash库暴露相同的符号引起的,因为搜索相应的目标文件会显示:

# for file …
Run Code Online (Sandbox Code Playgroud)

haskell darcs yesod

7
推荐指数
1
解决办法
902
查看次数

标签 统计

darcs ×2

haskell ×2

yesod ×1