Haskell 在我自己的项目中包含已发布库的分叉版本和未发布版本的最佳方法

Haskell 在我自己的项目中包含已发布库的分叉版本和未发布版本的最佳方法,haskell,haskell-stack,Haskell,Haskell Stack,我正在使用stack在Haskell中构建一个项目,需要更新我的项目所依赖的一个库,我们称之为otherlib 我已经分叉了otherlib并进行了必要的更改,增加了版本号,我们调用我的版本0.9.1,使用项目使用的cabal构建它,并运行cabal install otherlib将修改后的版本放入本地缓存。现在我想把它尽可能合理地包括在我自己的项目中 我对otherlib所做的更改在我看来是相当合理的,一旦我创建了一个PR,维护人员就有可能接受。但与此同时,我有一个版本不在stack的解决方

我正在使用stack在Haskell中构建一个项目,需要更新我的项目所依赖的一个库,我们称之为otherlib

我已经分叉了otherlib并进行了必要的更改,增加了版本号,我们调用我的版本0.9.1,使用项目使用的cabal构建它,并运行cabal install otherlib将修改后的版本放入本地缓存。现在我想把它尽可能合理地包括在我自己的项目中

我对otherlib所做的更改在我看来是相当合理的,一旦我创建了一个PR,维护人员就有可能接受。但与此同时,我有一个版本不在stack的解决方案集中

在我的包中包含otherlib-0.9.1.yaml依赖项不起作用,将其添加到堆栈中也不起作用


有没有一种很好的设置方法?

您可以在stack.yaml的额外deps中指定Git存储库及其修订版

下面是一个例子:


注意:只有当存储库包含多个包(如yesodweb)时,才需要subdirs。

您可以在stack.yaml的额外deps中指定Git存储库及其修订版

下面是一个例子:


注:只有当存储库包含多个包(如yesodweb)时才需要subdirs。

除了yuji yamamoto的正确和准确答案外,我发现我还可以将otherlib目录中的符号链接直接添加到我自己项目的基本目录中,并将其名称添加到stack.yaml中的包中。具体而言,修改后的部分内容如下:

packages:
- .
- otherlib-0.9.1
..目录本身也称为otherlib-0.9.1


这个解决方案在本地文件系统之外的任何地方都无法使用otherlib的情况下也能起作用。

除了山本由二正确准确的回答之外,我发现我还可以将otherlib目录中的符号链接直接链接到我自己项目的基本目录中,并将其名称添加到stack.yaml中的包中。具体而言,修改后的部分内容如下:

packages:
- .
- otherlib-0.9.1
..目录本身也称为otherlib-0.9.1

此解决方案适用于otherlib在本地文件系统之外的任何地方都不可用的情况