如果它们密切相关,将单独的项目保存在同一个存储库中是一个好主意吗?

我处于一个Web应用程序的早期阶段,它将包含一个部署到客户端浏览器的客户端JavaScript应用程序和一个驻留在我的服务器上的服务器端RESTtypes的API。 两者将使用Ajax和JSON数据进行通信。

现在是这个东西; 他们正在完全分开开发,甚至不共享一行代码或一个资源。 两者都是node.js应用程序。 服务器端使用express和sequelize所有服务器端的东西,而客户端是使用带有触笔和咖啡脚本的下摆开发服务器开发的,并将被编译成3个文件(index.html,application.js和application.css ),最终将被服务器部署为静态数据。

我不确定如何版本控制这一部分。 他们是否应该共享或分离版本号。 也应该怎么看git回购。 git回购根文件夹包含两个或多个具有独立但密切相关的项目的文件夹是否很常见? 还是我应该把它们分开,一个叫服务器,一个叫客户端? 还是应该把它们分成两个独立的版本库? (这将是更昂贵的,因为我使用github私人回购)

我不是在找人告诉我该怎么做,而是告诉我这些替代品的优缺点。 根据你的经验,最好的行动方式是什么,为什么。 如果你相信他们是好的,请随时提出其他的行动scheme。

谢谢!

一般的经验法则是,“同时变化的东西应该一起进行版本pipe理”。

如果后端需要支持多个客户端,并且将独立于前端进行更改,如果您要采用基于服务的体系结构,则需要考虑将这些内容分离为单独的项目。

但是,因为听起来这两个项目将会相当紧密地联系在一起,而且您的Web应用程序只有在两个地方才有意义,所以我build议您先将它们放在同一个存储库中。 这是一个较低摩擦的开发经验,如果它变得很痛苦,或者如果单独的团队需要对它们进行处理,你总是可以将它们分开。

分支用于制作公共代码库的并行版本(参见“ 何时应该分支 ”)。
所以它不适合跟踪两个不同但密切相关的模块。

你的Git仓库中的简单目录就足够了,并且将确保你将在该仓库上设置的任何标签都将引用这两个模块。

从我的angular度来看,我会分裂clientserverroot下的两个主文件夹。 有几个原因:

  1. 客户端和服务器版本将相互关联(物理上)。 无论如何,因为你的客户端与你的服务器软件提供的api密切相关。 因此,如果您将存储库标记为发布版本,则可以确保这两个工件均顺利地协同工作。

  2. 实施大规模集成testing以及推出持续集成基础架构将会减less您的痛苦。 有了其他的select,也可以把它放在适当的地方,但是你将不得不提供更多的开销。

一般分行用法:

  • 主站通常用作应用程序(包括客户端,服务器)的一致稳定“快照”
  • 一个分支可能被用来代表一个新的function开发。 通常他们是这样使用的。 所以你可能最终有1..n分支包含你的软件的附加。 如果你感到满意的话,这将被合并回你的主人。