Working with multiple projects on the same stack/git/IDE environnement

时间:2018-12-03 13:21:08

标签: git haskell

I'm building a project in Haskell and as this project is growing, some libs emerge and could be extracted in different git repository. So far, these libs are at the root of my project, Is there a way (like an intermediate step) where I could really extract these libs but locally on the same git repository ?

2 个答案:

答案 0 :(得分:0)

您可以使用以下技术为库创建新的存储库:https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/

然后,您可以将此原始存储库作为子模块导入:https://chrisjean.com/git-submodules-adding-using-removing-and-updating/

答案 1 :(得分:0)

“项目”有几种不同的概念:

  • git回购
  • 堆栈项目(由stack.yaml定义)
  • cabal项目(由project-name.cabal定义)
  • 库/可执行文件

从简单的一对一结构开始,这是很合理的,在这种结构中,您恰好拥有每个结构中的一个,然后将其分解。

  • 一个git repo可以轻松保持更改同步;多个存储库可以轻松地使不同的人提交访问权限,或反映团队之间的松散耦合
  • 一个堆栈项目可轻松为所有代码使用相同版本的依赖项;多个项目可以轻松地在不同时间更新不同的程序/库
  • 如果您使用的是stack,则我认为将可执行文件保存在单独的阴谋项目中还是将其保存在一起并没有多大区别。如果要在Hackage上发布库,则希望每个库都在其自己的cabal项目中。

stack docs说明了如何在一个堆栈项目中包含多个阴谋计划。它们可以位于包含stack.yaml的目录下,也可以不在。因此,如果需要,可以按以下步骤进行操作:

  • 从一个阴谋计划到几个
  • 从一个git存储库到多个git存储库,使用stack.yaml中本地结帐的路径来构建您当前已结帐的内容
  • 到git repo并在stack.yaml中提交哈希,因此任何建筑物都将获得相同版本的库repo