从git中提取最新版本的软件包

时间:2017-10-05 11:58:53

标签: git haskell-stack

我正在使用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 updatestack clean,但他们无法解决此问题。

1 个答案:

答案 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,尽管我做了一个脚本并不够烦人。