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

Hub*_*bro 15 git project-management node.js

我正处于Web应用程序的早期阶段,该应用程序将包含部署到客户端浏览器的客户端JavaScript应用程序以及驻留在我的服务器上的服务器端REST类型API.这两个将使用Ajax和JSON数据进行通信.

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

这部分我不确定如何版本控制它.例如,他们是否应该共享或分开版本号.另外git repo应该怎么样.git repo根文件夹是否通常包含两个或多个具有单独但密切相关的项目的文件夹?或者我应该通过分支将它们分开,一个叫做服务器,一个叫做客户端?或者我应该将它们分成两个独立的存储库?(这会更贵,因为我正在使用github私有回购)

我不是在找任何人告诉我该怎么做,而是告诉我替代方案的利弊.根据您的经验,最佳的行动方案和原因.如果您认为它们是好的,请随意提出其他行动方案.

谢谢!

Bri*_*rie 13

一般的经验法则是,"同时改变的事物应该一起版本化".

如果后端需要支持多个客户端并且将独立于您的前端进行更改,就像您在使用基于服务的体系结构时那样,那么值得考虑将这些内容分成单独的项目.

但是,因为听起来这两个项目将相当紧密耦合,并且您的Web应用程序只有两者都有意义,我建议您首先将它们保存在同一个存储库中.这是一种低摩擦的开发体验,如果它变得很痛苦,或者如果不同的团队需要处理它们,你可以随后将它们分开.

  • 当您需要创建相同基本代码库的不同版本时,分支很有用,因此它们不适合这里.目前,同一主机中的单独目录可能是最佳选择.以任何对你有意义的方式组织它们,也许作为两个单独的目录,但我将它们视为相同的基本项目. (3认同)

Von*_*onC 7

分支用于制作公共代码库的并行版本(请参阅" 何时应该分支 ").
因此,它不适合跟踪两个不同但密切相关的模块.

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

  • @Codemonkey一些GitHub项目使用的孤立分支技术可以是一种很好的方法:a /避免为一组文件(文档)创建一个单独的repo,它仍然与主要文件集相关(它记录的程序) ),b /具有不同的生命周期(不同于主程序同时更新,在不同的分支中以不同的速度发展).请参阅孤立分支用法的其他示例:http://stackoverflow.com/a/7648343/6309或http://stackoverflow.com/a/7411758/6309 (2认同)

fyr*_*fyr 5

从我的角度来看,我将拆分clientserver在两个主要文件夹下root.有几个原因:

  1. 客户端和服务器版本将相互关联(物理上).正如他们所做的那样,因为你的客户将与你的服务器软件提供的api密切相关.因此,如果您将存储库标记为发布,您将确保两个工件一起平稳地协同工作.

  2. 实施大量集成测试以及推出连续集成基础架构将会减少您的痛苦.使用其他选项也可以实现这一点,但您必须提供更多的开销.

一般分支用法:

  • master通常用作应用程序(包括客户端,服务器)的一致稳定"快照"
  • 分支可用于表示新的功能开发.通常它们以这种方式使用.因此,您可能最终拥有1..n包含软件附加内容的分支.如果你对它感到满意,它将合并回你的主人.