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

eam*_*m55 6 php git matlab bitbucket

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

我们的网站前端有一些PHP代码,后端有一些Matlab(Matlab正在编译与PHP一起工作,但我不认为这是相关的).PHP代码专门用于网站,但Matlab是由许多开发人员进行更改,一些与网站相关而另一些则没有.

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

方案1:将Matlab和PHP放在同一个存储库中.将Matlab分为"网站"(又名稳定的主分支),"Develop1","Develop2"等.开发人员在他们自己的分支上工作,并定期将Develop分支合并到网站分支.

方案2:将Matlab和PHP放在同一个存储库中.想要使用Matlab的开发人员将Matlab分成其他存储库,然后在他们希望将代码与网站Matlab代码合并时提交拉取请求.

方案3:将PHP放在一个存储库中,将Matlab放在另一个存储库中.然后开发人员如上所述分叉或分支.

你的想法是什么?我们公司的DBA说,将两种类型的代码放在同一个存储库中是一个糟糕的主意(在某些时候,它将是三个,因为我们将减慢将Matlab代码更改为C或其他语言) .另一方面,我担心如果PHP和Matlab位于不同的存储库中,很难跟踪哪些版本相互协同工作.

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

这有助于我理解分支和分支之间的区别 - 在我看来,分支只需要更多信任开发人员,因为他们可以在未经许可或代码审查的情况下合并.

git branch,fork,fetch,merge,rebase和clone,有什么区别?

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

如何使用git存储库跨项目组织共享代码/资产

这也有助于我更好地理解分支和git.

http://tom.preston-werner.com/2009/05/19/the-git-parable.html

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

我应该将项目的客户端和服务器端分成两个Git存储库,还是将它们保存在一个存储库中?

Den*_*ret 10

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

并且分支根本不用于分离语言.它们习惯于让您拥有整个代码的不同版本(开发新功能,存储已发布的版本,以便您可以返回它进行修复,拥有专门的更好的测试分支进行生产等).

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