我正在使用Haskell Stack,我正在构建的包的源代码是在git上。我的stack.yaml
看起来像这样:
packages:
- location:
git: git@github.com:mhwombat/blah-blah-blah.git
commit: master
. . .
一切都很好。但是,假设源代码在存储库中更新。 Stack无法获取最新版本;它继续使用它已有的版本。到目前为止,我的解决方案是删除.stack-work
并执行另一个stack build
,但当然它必须重建所有内容。当你使用镜头时,需要花费很长时间。
有没有办法强制Stack从git中获取最新版本?
已经尝试stack update
和stack clean
,但他们无法解决此问题。
答案 0 :(得分:1)
有一种方法,但是作为提交它是繁琐而不是主,放置最新提交的SHA1。您可以通过运行来获取最新的提交:
git rev-parse origin/master
输出应如下所示: de7059a7a7c81c9c8997cad6dce7cdbd5b6c09d9
然后在你的stack.yaml中你会放置这个:
packages:
- location:
git: git@github.com:mhwombat/blah-blah-blah.git
commit: de7059a7a7c81c9c8997cad6dce7cdbd5b6c09d9
. . .
当你运行stack build
而不再需要删除.stack-work
时,你会有“强制”堆栈来获取最新的提交。它并不像单个命令那么简单,但它对我有用并且不太烦人,对我而言它帮助我冻结了一个依赖。这是可编写脚本的,因为它只使用git,尽管我做了一个脚本并不够烦人。