我们正在运行一个包含多种语言的大型项目:Java,Python,PHP,SQL和Perl。
到目前为止,人们一直在他们自己的私有存储库中工作,但现在我们想要将整个项目合并到一个存储库中。现在的问题是:目录结构应该如何?我们应该为每种语言设置单独的目录,还是应该按组件/项目分开? python / perl / java如何处理公共目录布局?
答案 0 :(得分:6)
我的经验表明这种布局是最好的:
mylib/
src/
java/
python/
perl/
.../
bin/
java/
python/
perl/
stage/
dist/
src
是您的来源,也是唯一签到的。
bin
是构建期间发生“编译”的地方,并且未签入。
stage
是您在构建期间复制内容以准备打包
dist
是您放置构建工件的地方
我将模块/组件/库放在层次结构的顶部,因为我单独构建每个模块,并使用依赖管理器根据需要组合它们。
当然,命名惯例各不相同。但我发现这个工作非常令人满意。
答案 1 :(得分:2)
我认为最好的办法是确保各种模块不依赖于同一目录(即按组件分开)。很多人似乎都对这个想法感到害怕,但是一套好的构建脚本应该能够自动消除任何痛苦。
最终目标是使安装基础架构变得容易,然后在设置环境后轻松地在单个组件上工作。
(重要的是要注意我来自Perl和CL世界,在那里我们将“模块”安装到某个全局位置,比如〜/ perl或〜/ .sbcl,而不是像每个项目那样包含每个模块,比如Java你会认为这会是一个维护问题,但它最终不会成为一个问题。有一个脚本可以定期更新你的git存储库(或CPAN)中的每个模块,这确实是最好的方法。)
编辑:还有一件事:
项目始终具有外部依赖关系。我的项目需要Postgres和Linux安装。将它与版本控制中的应用程序代码捆绑在一起会很疯狂 - 但是在新工作站上安装所有内容的脚本非常有用。
我想我想说的是,或许是一种迂回的方式,我认为你不应该对待内部模块与外部模块不同。