我正在开始一个新项目并试图决定如何在Bitbucket中组织代码。我在一家初创公司工作,我们所有人都有技术经验,但我们都没有在软件开发公司工作过。我们一直在争论在bitbucket存储库中组织代码的最佳方法。
我们的网站前端有一些PHP代码,后端有一些Matlab(Matlab正在编写与PHP协同工作,但我不认为这是相关的)。 PHP代码专门用于网站,但Matlab是由许多开发人员进行更改,一些与网站相关而另一些则没有。
我们已经提出了三种如何组织代码的方案:
方案1:将Matlab和PHP放在同一个存储库中。将Matlab分为“网站”(a.k.a.稳定主分支),“Develop1”,“Develop2”等。开发人员在自己的分支机构工作,并定期将Develop分支机构合并到网站分支。
方案2:将Matlab和PHP放在同一个存储库中。想要使用Matlab的开发人员将Matlab分成其他存储库,然后在他们希望将代码与网站Matlab代码合并时提交拉取请求。
方案3:将PHP放在一个存储库中,将Matlab放在另一个存储库中。然后开发人员如上所述进行分支或分支。
你有什么想法?我们公司的DBA说,将两种类型的代码放在同一个存储库中是一个糟糕的主意(在某些时候,它将是三个,因为我们将减慢将Matlab代码更改为C或其他语言) 。另一方面,我担心如果PHP和Matlab位于不同的存储库中,很难跟踪哪些版本相互协同工作。
我读了一些关于堆栈溢出的帖子,部分回答了我的问题:
这有助于我理解分支和分支之间的区别 - 在我看来,分支只需要更多信任开发人员,因为他们可以在未经许可或代码审查的情况下进行合并。
git branch, fork, fetch, merge, rebase and clone, what are the differences?
这似乎与我的问题非常接近,虽然当我向DBA展示时,他说这不是一个很好的例子,因为Java和Javascript非常相似。但是,这里写的答案似乎指向我的方案1。
How to organize shared code/assets across projects with git repositories
这也有助于我更好地理解分支和git。
http://tom.preston-werner.com/2009/05/19/the-git-parable.html
这个答案似乎也表明,即使是不共享任何文件的代码,如果它是同一个项目的一部分,也应该在同一个存储库中。
答案 0 :(得分:10)
仅使用一个存储库。由于语言原因,绝对没有理由制作两个存储库。大多数项目无论如何都使用多种语言(例如,Web应用程序会有一些服务器部分,比如Java或Go,一些HTML,CSS和JavaScript文件,一些shell脚本,一些SQL脚本,一些常用的实用程序等等。 )。只有当你可以以某种方式使用一个存储库并且在它们之间指定一个干净的接口时才使用两个存储库(在这种情况下,它可能有助于制作两个存储库,但这显然不是你的案件)。您的顾虑是正确的:保持单独的存储库同步 是一场噩梦。
分支根本不用于分离语言。它们习惯于让您拥有整个代码的不同版本(开发新功能,存储已发布的版本,以便您可以返回它进行修复,拥有专门的更好的测试分支进行生产等)。 / p>
另请注意,您可以拥有存储库的克隆(请记住:git是分布式),您甚至可以确定有一个存储库,只有少数维护者具有写访问权限并且从其他存储库获取库。但就此而言,根据您的经验,您可能希望使用基于git构建的解决方案而不是纯粹的基本git,无论是商业化(寻找Atlassian,GitHub等)还是免费(例如gitolite)。