Php 在同一个git存储库中存储两种不同类型的代码可以吗?

Php 在同一个git存储库中存储两种不同类型的代码可以吗?,php,git,matlab,bitbucket,Php,Git,Matlab,Bitbucket,我正在启动一个新项目,并试图决定如何在Bitbucket中组织代码。我在一家初创公司工作,我们所有人都有技术经验,但没有人在软件开发公司工作过。我们一直在争论在bitbucket存储库中组织代码的最佳方式 我们的网站前端有一些PHP代码,后端有一些Matlab(Matlab被编译成与PHP一起工作,但我认为这与此无关)。PHP代码专门用于网站,但Matlab由许多开发人员进行修改,有些与网站相关,有些与网站无关 我们提出了三种方案来组织代码: 方案1:将Matlab和PHP放在同一个存储库中。将

我正在启动一个新项目,并试图决定如何在Bitbucket中组织代码。我在一家初创公司工作,我们所有人都有技术经验,但没有人在软件开发公司工作过。我们一直在争论在bitbucket存储库中组织代码的最佳方式

我们的网站前端有一些PHP代码,后端有一些Matlab(Matlab被编译成与PHP一起工作,但我认为这与此无关)。PHP代码专门用于网站,但Matlab由许多开发人员进行修改,有些与网站相关,有些与网站无关

我们提出了三种方案来组织代码:

方案1:将Matlab和PHP放在同一个存储库中。将Matlab分为“网站”(也称为稳定主分支)、“开发1”、“开发2”等。开发人员在自己的分支上工作,我们定期将开发分支合并到网站分支中

方案2:将Matlab和PHP放在同一个存储库中。希望使用Matlab的开发人员将Matlab转移到其他存储库中,然后在希望其代码与网站Matlab代码合并时提交请求

方案3:将PHP放在一个存储库中,将Matlab放在另一个存储库中。然后,开发人员按照上面所述进行分叉或分支

你的想法是什么?我们公司的DBA说,将两种类型的代码放在同一个存储库中是一个糟糕的想法(在某些情况下,可能是三种,因为我们会放慢将Matlab代码转换为C或其他语言的速度)。另一方面,我担心,如果PHP和Matlab在不同的存储库中,那么很难跟踪它们的哪些版本可以相互协作

我读了一些关于堆栈溢出的帖子,部分回答了我的问题:

这帮助我理解了分支和分支之间的区别——在我看来,分支只需要对开发人员有更多的信任,因为它们可以在没有许可或代码审查的情况下合并

这似乎与我的问题非常接近,尽管当我向DBA展示时,他说这不是一个好例子,因为Java和Javascript非常相似。然而,这里的答案似乎指向了我的方案1

这也帮助我更好地理解了分支和git

这个答案似乎还表明,即使是不共享任何文件的代码,如果它是同一个项目的一部分,也应该在同一个存储库中


只使用一个存储库。完全没有理由仅仅因为语言的原因就创建两个存储库。大多数项目无论如何都使用不止一种语言(例如,web应用程序会有一些服务器部分,比如Java或Go、一些HTML、CSS和JavaScript文件、一些shell脚本、一些SQL脚本、一些常用的实用程序等等)。仅当您可以以某种方式使用一个存储库而不使用另一个存储库,并且您在它们之间指定了一个干净的接口时,才使用两个存储库(在这种情况下,创建两个存储库可能很有用,但这显然不是您的情况)。您的担心是对的:保持独立存储库的同步是一场噩梦

分支根本不用于分离语言。它们用于让您拥有整个代码的不同版本(开发新功能、存储已发布的版本以便您可以重新使用它进行修复、为生产提供专用的、经过更好测试的分支等)


还请注意,您可以拥有存储库的克隆(记住:git是分布式的),您甚至可以决定有一个存储库,其中只有少数维护人员具有写访问权限,并且他们从其他存储库获取。但在这一点上,根据您的经验,您可能希望使用基于git构建的解决方案,而不是纯粹的基本git,无论是商业解决方案(寻找Atlassian、GitHub等)还是免费解决方案(例如gitolite)。

关于上一段,Bitbucket是“基于git构建的解决方案”吗?我不知道你说的是什么意思。bitbucket允许你使用git或mercurial是的。现在bitbucket归Atlassian所有(Atlassian也生产bitbucket)。对于专业团队,我建议避免使用bitbucket并选择隐藏。