- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的 5 名开发人员团队维护着一个由 6 个解决方案(也称为部分)组成的中型应用程序。目前,我们使用 TFVC 进行源代码控制。每个解决方案都位于自己的主分支中。
我想迁移到 Git。我的问题是,是为所有 6 个解决方案使用 1 个 Git 存储库,还是为每个解决方案使用单独的 Git 存储库。
我被一个单一的 Git 仓库所吸引,因为:
另一方面,一个 Git 存储库意味着对任何解决方案的更改都会导致在我们的 TeamCity CI 服务器上对所有解决方案进行全新的完全重建。
就此问题寻求其他团队领导的一些见解。
最佳答案
即使在使用 git 时,目前允许按项目使用 1 个存储库(并且大多数答案或建议会告诉您这样做),确实有将所有内容放在同一个存储库中的解决方案,这称为'monorepo' 策略。
像谷歌、Facebook 和微软(几乎)那样,大型互联网玩家正在这样做(不仅是使用 git)......所以你可以很容易地找到一些关于利弊的文档。
例如:https://github.com/babel/babel/blob/4c371132ae7321f6d08567eab54a59049e07f246/doc/design/monorepo.md
一旦您了解主要问题之一是您的版本控制工具的性能(但 git 肯定可以支持 5 人开发团队),它更像是一个项目的感觉......看起来,您已经了解了一些优势,我强烈建议您对其进行测试!
此外,如果您不满意,使用 git 命令拆分存储库(保留历史记录)比 merge 存储库要容易得多,所以它似乎是首先尝试的东西。
在我的团队中,我们越来越倾向于 monorepo。
My team of 5 devs maintains a medium sized application consisting of 6 solutions (aka sections).
如果这是针对一个应用程序,那么 monorepo 确实可能是好的解决方案。
但是您必须解决的一个问题是,如果您在使用 nuget 管理的解决方案之间存在依赖关系。
要么删除 nuget 的使用,要么使用二进制依赖项(不 checkin 它们!),因此您必须构建所有这些依赖项(但如果您想使用分支将很困难)。
要么您接受进行 2 次提交以进行更新(就像您对多个 git 存储库所做的那样)。可以通过构建手动或自动完成。
Ps: git 子模块很困难,不建议第一次使用 git 的用户...所以基于它的解决方案会很痛苦 :-(
On the other hand, one single Git repo means that a change to any solution leads to a new complete rebuild of all solutions on our TeamCity CI server.
不一定,您可以为每个解决方案创建不同的构建,并仅在它们自己的解决方案文件夹上设置 teamcity 触发器。
Ps2:我做了比预期更长的答案 ;-) 我希望它会有所帮助...
关于git - 一个大的 Git 仓库或多个小的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43634596/
Hortonworks 数据平台 HDP 3.0 有 spark 2.3 和 Hive 3.1,默认情况下 spark 2.3 应用程序(pyspark/spark-sql 等)使用 spark 数据
是否最好让一个软件仓库包含多个文件夹,这些文件夹映射到工作区中的不同路径。或者一个仓库中的多个文件夹映射到多个工作区,或多个仓库映射到多个工作区。 有人对此事有任何实用建议吗? 我还注意到,当我在仓库
Git 是分布式源代码控制系统,对吧。如何在没有集中存储库的情况下连接两个开发人员。 我们的团队使用 Github,如果两个开发人员想在同一个分支上工作,似乎需要将该分支推送到远程,然后他们才能访问它
Maven – 仓库 什么是 Maven 仓库? 在Maven 的术语中,仓库是一个位置(place),例如目录,可以存储所有的工程 jar 文件、library jar 文件、插件或任何其他的工
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 3年前关闭。 Improve this questi
我开始将 git 与我的 .git 目录以及网络根目录中的其他所有内容一起使用。进一步阅读后,这似乎是一种不好的做法。我现在将我的应用程序和系统文件夹放在网络根目录之外。我的网络根目录中唯一剩下的就是
有没有可能没有历史的 Git 仓库?例如,我有一个我工作的本地 Git 存储库,我想将最新版本推送到生产服务器。生产服务器上不应存储任何历史记录。我该怎么做? 最佳答案 你可以看到命令 git arc
Laravel 中的 Repositories 有什么优势?它似乎是从应用程序的业务逻辑中抽象出模型层。虽然这似乎只是让整个请求生命周期变得更加复杂,但收效甚微。 有人可以阐明 Laravel 存储库
我有一个本地 git 服务器在我的 NAS 上运行,我正在我的笔记本电脑和工作站上进行开发,所有这些都在我的本地网络中。所以,如果我想在一个新的空 repo 中开始一个项目,我会关注 this ans
我们正在使用 SVN 来存储 maven 依赖项(组织限制不能像现在那样使用 nexus 或 artifactory maven 存储库)。 SVN 在使用 https 协议(protocol)的网络
我想允许某人查看我在我的私有(private)存储库中所做的工作。我该怎么做? 我看了https://help.github.com/articles/making-a-private-reposit
我试图阻止同事在 git 中再次推送已删除的标签(因为它被错误地推送了一次)。 我知道如何在本地执行此操作以及如何将其推送到远程以及如何指示我的同事以正确的方式从他们的本地存储库中删除已删除的标签。
我已经使用 url 克隆了一个 friend 的 git repo git 克隆 https://github.com/user/repo_name.git 然后我创建了我的分支,提交并尝试将我的代码
我目前正在我的代理机构安排比赛。我想对开发人员可以使用的模块进行一些管理。 是否可以托管 Play 模块和 Maven 库的镜像存储库并将 play 配置为仅使用这些存储库? 我已阅读此内容 docu
我正在尝试在我的 readme.md 中嵌入图像用于在 GitHub 上显示。我以前在公共(public)存储库中没有遇到任何问题,格式如下: ![header image](https://raw.
我想访问公司内部Artifactory实例上自定义开发的Gradle插件。对于公司内部发生的每一个Gradle构建,我都希望如此。我是否缺少任何东西,或者建议的方法是在每个项目的每个Gradle构建之
我想保留我在 docker hub 帐户中使用的图像,同时保持对拉取图像的引用。就像你在 github 上 fork 一个项目一样。 目前我已经尝试过jwilder/nginx-proxy图片。现在我
Perforce 中是否有命令可以获取客户端从软件仓库映射到特定文件夹的信息? 示例: 我有仓库位置//depot/myfolder/somefile.java 我想知道哪些客户端将此位置映射到哪个路
我被指派为一个项目开发一项功能。在几周的时间里,我将花几天时间研究该功能。我将克隆中央仓库。然后我将在本地工作 3 周。在此过程中,我会多次将我的进度提交到我的 repo 协议(protocol)中。
我发现自己越来越喜欢将Rstudio与R markdown文件(.rmd)一起使用,并且我非常喜欢“编织HTML +发布到Rpubs”的便利与同事共享我的工作。不幸的是,发布的文件必须是公开可见的,而
我是一名优秀的程序员,十分优秀!