Haskell 堆栈和版本控制

Haskell stack and version control

我是 Haskell 和 Stack 的新手。使用 stack new 创建新项目时,应将哪些文件签入 git(或任何其他 VCS)?整个目录?

您应该签入 stack.yamlpackage.yaml(如果您的项目有)或 your-project-name.cabal(如果没有),以及 Setup.hs,因为它们对于以可重现的方式构建您的项目是必要的。 srcapptest 目录也应该提交,因为它们原则上是您的源代码所在的位置(当然,如果您愿意,您可以重新安排默认项目的结构这样做)。另一方面,您应该忽略 .stack-work 目录,因为它包含构建输出和其他易变数据。

你可以看看GitHub推荐的Haskell .gitignore:

dist
dist-*
cabal-dev
*.o
*.hi
*.chi
*.chs.h
*.dyn_o
*.dyn_hi
.hpc
.hsenv
.cabal-sandbox/
cabal.sandbox.config
*.prof
*.aux
*.hp
*.eventlog
.stack-work/
cabal.project.local
cabal.project.local~
.HTF/
.ghc.environment.*

如果您 运行 stack new --bare yesod-mysql 堆栈模板,它包含以下 .gitignore

.stack-work/
yesod-mysql.cabal
*~