【问题标题】:Git first steps - setting up repositoriesGit 第一步 - 设置存储库
【发布时间】:2012-07-19 13:26:55
【问题描述】:

我在一个小型开发办公室工作,有 7 名程序员,我们目前正在实施 Git 版本控制——我们之前没有版本控制系统。迟到总比没有好,对吧?

话虽如此,我们正在考虑实施以下结构:

开发服务器

  • 主存储库 - 开发的稳定版本
  • 开发者存储库 - 开发者存储库,每个开发者一个

测试服务器

  • 主存储库 - 稳定的测试版本。修改从主开发存储库推送

生产服务器

  • 主存储库 - 从主测试存储库推送修改

这种结构合适还是我错过了分布式版本控制系统的要点?有人可以给我一些建议或实际例子吗?

编辑1:

感谢您的所有反馈,伙计们 - 现在情况更清楚了。我了解像 developer repos(本地)、development(bare)repotesting repoproduction repo这样的结构> 将是一个更合乎逻辑的选择,我什至可以理解为什么有些人认为 开发回购 是不必要的步骤。

我想我们会做一些测试,看看我们最喜欢哪种结构。 谢谢

【问题讨论】:

  • 团队有多大?你多久发布一次?
  • 为什么您需要为每个开发人员提供一个开发存储库?为什么在开发服务器中还需要一个主存储库?测试还不够吗?
  • @PenchoIlchev,我们是 7 名开发人员。我们随时发布 .. 每个开发者每周可能会发布 1 个新功能。
  • @SamyDindane,这就是为什么我问结构是否合适。我们来自一个非常简单、非常容易发生冲突和错误的结构:开发服务器,在开发人员之间共享文件,测试服务器和生产服务器。现在我问,为什么我不应该为每个开发人员都需要一个开发代表?这不就是每个开发者都可以在不干扰其他开发者任务的情况下进行开发吗?
  • @PedroStadler 是的,但他需要在自己的机器上拥有本地存储库。

标签: git


【解决方案1】:

这或多或少是关于它的。不过,您应该注意以下几点:

  • 将开发服务器上的“主存储库”设为bare repository
  • 开发人员不需要在服务器上拥有自己的存储库,但他们在自己的计算机上本地拥有主存储库的副本。
  • 每个开发人员都应从主开发存储库中获取/合并,并在推回之前解决冲突。
  • 不要推送到测试和生产服务器。从这些存储库中,分别从开发和测试服务器获取和合并。这是因为这些存储库不是裸露的,实际上可能有自己的提交。
  • 让一名人员(或其中一名开发人员)负责从测试/生产服务器获取更改,将它们与当前稳定版合并并将它们推送到主存储库。这样,测试服务器中的错误修复将合并回开发中。

【讨论】:

  • 为每个开发人员集中存储一个 repo 可以使协作更容易(每个开发人员都不需要运行自己的实例),并且可以作为开发人员备份本地 repo 的地方(硬盘驱动器故障等等)。
  • @R0MANARMY,我不确定您是否熟悉 git,但是对于像 git 这样的去中心化 VCS,您必须拥有自己的主存储库的本地副本.确实,他们可以拥有 repo 的其他副本,只是为了在 master 以外的某个分支上进行协作,他们也可以在主存储库中创建一个分支。因此,协作并不是真正的问题。这也解决了备份问题。
  • @R0MANARMY,另外,由于使用 git 进行分支和合并非常容易,您很可能会从主存储库中获取/合并并经常推送您的更改(例如,与 svn 不同),所以您不会因为硬件故障而失去大量工作。
  • 我知道您必须拥有自己的 repo 副本,但 repo 只是一个目录。如果您想与其他开发人员共享它,您必须拥有一台服务器,无论是 git-daemon、git-web (它们都不是 Windows 友好的顺便说一句) 或直接文件系统访问。为每个开发人员提供自己的私有(ish)远程仓库意味着他们不必设置自己的服务器来进行协作。它还有助于解决以下情况:哦,不,我闪亮的新 SSD 不再工作,我所有的存储库都在上面!.
  • @R0MANARMY,我绝对不认为他们应该设置自己的服务器。我说的是,他们可以在同一个主仓库上拥有分支,而不是拥有与其他程序员共享的私有仓库。
【解决方案2】:

以下是我的建议:

  • 在您的某些服务器上拥有一个裸存储库。这是每个人都会推/拉的回购;你不会在里面工作。您可以将其视为集中式 SCM 上的服务器
  • 不需要开发服务器。每个开发人员都将在其本地计算机上拥有自己的存储库副本。
  • 测试服务器中,会有repos的副本。您通常不必推动它,因为您的所有工作都是在 您的 计算机上完成的。
  • 生产服务器也是如此。

关于您使用 Git 的方式,也就是工作流程,我建议使用我在 this answer 中解释过的基本方式。

【讨论】:

    【解决方案3】:

    开发服务器

    主存储库 - 开发的稳定版本 开发者仓库 - 开发者仓库,每个开发者一个

    我不认为每个开发人员都需要在服务器上拥有自己的存储库。他们只需要将 repo 克隆到自己的计算机上。

    此外,并非所有开发人员都应该有权推送到主仓库。只有团队负责人才能拥有主仓库的推送权限

    【讨论】:

      猜你喜欢
      • 2013-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 2022-06-16
      • 2016-11-13
      • 2010-10-11
      相关资源
      最近更新 更多