如何让 cabal 从 source-repository-package 中指定的存储库中提取最新版本?

问题描述 投票:0回答:1

我已将直接来自本地 Git 存储库的依赖项包含在我的 cabal.project 文件中,如下所示:

packages: .

source-repository-package
  type: git
  location: /home/chris/example/
  tag: master
  subdir: abcxyz

最初,运行

cabal build
成功获取存储库,并且项目编译没有问题。然而,更新存储库后,我似乎找不到正确的方法来让 Cabal 识别这些更新并获取最新的提交。有多种方法可以清除缓存,但随后我会删除其他内容并花费更多时间拉取和构建内容(这对于频繁更新外部存储库来说不太实用)。

我尝试重新运行

cabal build
cabal update
,但 Cabal 似乎不会像上面那样检查已获取的 Git 存储库的更新。我还快速阅读了https://cabal.readthedocs.io/en/3.4/cabal-project.html,但我没有看到任何提及此类功能的信息。

我该怎么做?

haskell cabal
1个回答
0
投票

我希望

cabal
模型标签是不可变的。当然,你我都知道没有办法强制执行这一点,但这似乎确实是 git 爱好者之间的一个相当强大的约定。

如果您计划更新要经常使用的提交,请从标签切换到提交:

source-repository-package
  type: git
  location: /home/chris/example/
  commit: deadbeef
  subdir: abcxyz

然后根据需要更新

cabal.project
中列出的提交。

不需要显式更新 cabal(但确实需要显式更新 git)的替代流程是将其他存储库放入子模块中。在您的

cabal.project
中,输入类似

的内容
packages: . example/abcxyz

然后运行这样的命令:

% git submodule add /home/chris/example example

当然,如果您想对同事友好,您需要使存储库在线可用,而不是在

/home/chris
中,并在那里引用它。但是
source-repository-package
方法和子模块方法都是如此。

© www.soinside.com 2019 - 2024. All rights reserved.