2014-02-06 43 views
6

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

我们有一些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在不同的存储库中,那么将很难跟踪哪些版本可以相互协作。

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

这帮助我理解了分支和叉子的区别 - 它会出现,我认为分支仅仅需要在开发人员更多的信任,因为他们可以在未经许可或代码审查的情况下合并

git branch, fork, fetch, merge, rebase and clone, what are the differences?

这似乎很接近我的问题,但是,当我拿给数据库管理员,他说这是不是一个很好的例子,因为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

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

Should I separate client and server side of my project into two Git repositories, or keep them in one?

回答

10

只使用一个存储库。完全没有理由仅仅因为语言而创建两个存储库。大多数项目总是使用多种语言(例如,Web应用程序会包含一些服务器部分,例如Java或Go,一些HTML,CSS和JavaScript文件,几个shell脚本,一些SQL脚本,一些周围使用的实用程序等等。 )。只有当你以某种方式使用一个没有另一个,并且你在它们之间指定了一个干净的接口时(,在这种情况下,这可能对制作两个存储库很有用,但这显然不是你的情况),请使用两个存储库。你的关注是正确的:保持单独的存储库同步的噩梦。

而分支根本不用于分离语言。它们用于让您拥有不同版本的整个代码(开发一项新功能,存储发布的版本,以便您可以返回修复程序,拥有专门针对生产的更好测试分支等)。您还可以决定是否有一个存储库,其中只有少数维护人员具有写访问权限,并且可以从其他存储库中获取这些存储库。但就此而言,根据您的经验,您可能想要使用基于git而不是纯粹的基本git构建的解决方案,无论是商业的(寻找Atlassian,GitHub等)还是免费的(例如gitolite)。

+0

关于你的最后一段,是Bitbucket“一个建立在git上的解决方案”?我不确定你的意思。 – eam55

+0

bitbucket让你使用git或mercurial yes。现在bitbucket由Atlassian拥有(这也使[Stash](https://confluence.atlassian.com/display/STASH/Getting+started+with+Git+and+Stash))成为可能。对于职业团队,我建议避免bitbucket并选择Stash。 –

相关问题