github

时间:2016-03-09 01:27:33

标签: github

我是github.com的新用户,我正在尝试创建一个包含两部分的移动应用:客户端代码和服务器代码。客户端代码将使用Java for Android,Swift for iOS和C#for Windows Phone编写。服务器端将使用PHP,HTML,Javascript和CSS编写。

我的问题是:我应该如何构建代码?我应该将服务器代码和客户端代码放在不同的存储库中,还是应该将它们放在同一个存储库中的不同文件夹中?此外,由于有多个客户端(Android,iOS和Windows),我应该将它们放在不同的存储库或不同的文件夹中吗?

我已经知道任何一个都可以完成,但我想知道标准程序是什么以及优点/缺点是什么。

这个问题有很多可能的解决方案。 saljuama提供的答案是最完整的。

在github上查看几个项目后,我发现一种方法是为客户端和服务器创建单独的存储库。如果您有多个客户端代码(如我的情况),您可以使用相同的存储库但不同的makefile。

我在https://github.com/CasparCG找到了这种做事方式。server是与client不同的存储库。此外,客户端共享相同的src,lib和其他文件夹,但每个文件夹的build scripts不同。正如saljuama所指出的,当您的客户共享相同的代码库时,这种方法很有意义。如果您的客户不共享相同的代码库,请参阅saljuama的回答。

这不是唯一可行的方法。你可以用自己的方式做到这一点。

1 个答案:

答案 0 :(得分:2)

主题相当广泛,可能是基于意见的,但我会尽量保持中立。

根据12因子第一原则codebase,每个应用程序都应该有自己的代码库(或存储库)。由于客户端和服务器是不同的应用程序,因此它们不应共享相同的存储库。

为什么在同一个存储库中同时存在这个问题的一个原因是使用Continous Integration和Continous Delivery系统。由于存储库推送通常会触发这些进程,因此在其中一方执行更改将使CI / CD服务器在不需要时处理应用程序的两端。

我能想到的其他原因可以归类为基于意见的,所以我不会陈述。

<强>更新

要回答您问题的更新,如果不同的客户拥有完全相同的代码库,如果您继续阅读12因素应用原则,configurationbuilds,那么一个回购是你应该用什么。