分布式版本控制系统真的没有集中存储库吗?

2024-04-10

这似乎是一个愚蠢的问题,但是如何在没有服务器可供检出的情况下设置工作目录呢?企业如何保存存储库的安全备份副本?

我认为必须有一个中央仓库......但是它到底是如何“分布”的?我一直认为服务器-客户端 (SVN) 与点对点 (GIT) 的区别,但我不认为这是正确的,除非像 GIT 这样的工具依赖于 torrent 风格的技术?


分布式版本控制系统真的没有集中存储库吗?

没有enforced中央存储库 - 这只是按照惯例。大多数项目do有一个中央存储库,但每个存储库都是平等的,因为它们具有完整的历史记录,并且可以在彼此之间推送和拉取补丁。

一种思考方式是,集中式 VCS 固定在星形拓扑中:一个中央集线器充当具有完整存储库的服务器,一个或多个客户端挂在其上。客户通常只有最近干净结帐的副本和有限的历史记录(如果有)。因此大多数操作都需要与服务器进行往返。分支是通过在一个存储库中创建分支来实现的。

在分布式 VCS 中,网络拓扑没有限制。理论上你可以拥有任何你喜欢的形状。您可以为每个团队或子项目拥有一个单独的存储库,并进行阶段提交。您可以拥有一个稳定的存储库和一个不稳定的存储库,以及许多功能分支,等等。并且不存在客户端/服务器的区别——所有节点都是平等的。每个存储库都是独立且完整的,并且可以从任何其他存储库推送和/或拉取更改。首先,您克隆现有存储库(制作您自己的副本以供工作),然后开始进行更改。一旦你进行了第一次提交,你实际上就拥有了一个分支。幸运的是,完成后通常很容易将更改合并回来。

但什么normally发生的情况是您有一个位于中央服务器上的存储库,这使人们更容易入门并跟踪最新更改的位置。

如何在没有服务器的情况下设置工作目录以供检出?

您的存储库必须从源树的某个位置开始。因此,始终存在第一个存储库,以及最初的一系列签入。假设您想从事以下工作Murky http://bitbucket.org/snej/murky/wiki/Home。你会clone存储库,它为您提供了自己的完整存储库,其中包含所有历史记录和签入。您进行一些更改(从而创建分支),完成后,将更改推回原处,并在其中合并。两个系统都充当对等体,并且它们在彼此之间推送和拉动变更集。

Mercurial 和 Git 都将存储库保存在隐藏的子目录中,因此一个目录树包含您的工作副本(可以处于您喜欢的任何状态)和存储库本身。

企业如何保存存储库的安全备份副本?

如上所述,您只需拥有一个指定的主存储库,其中包含所有最新合并的更改,并像其他任何内容一样对其进行备份。您甚至可以拥有多个备份存储库,或者在物理上独立的盒子上进行自动克隆。在某些方面,备份更容易。

我认为必须有一个中央仓库......但是它到底是如何“分布”的?我一直认为服务器-客户端 (SVN) 与点对点 (GIT) 的区别,但我不认为这是正确的,除非像 GIT 这样的工具依赖于 torrent 风格的技术?

它不是分布式的,因为不同的客户端有不同的部分,例如点对点文件共享。这实际上与中心化模型形成鲜明对比。

所有 DVCS 存储库都是一等公民。如何安排它们成为一个社会或管理问题,而不是一个技术问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分布式版本控制系统真的没有集中存储库吗? 的相关文章

  • 为什么 git checkout 不创建新的跟踪分支?

    TLDR 如果 X 作为远程分支存在 则git checkout X应该创建它的本地分支 就我而言 对于单个分支来说 情况并非如此 远程存储库有一个master release 和其他一些分支 比如refactor update I do
  • 是否有任何正式的方法或已知的方法来规范化 xml 文件以生成差异?

    似乎有很多关于 WRT 工具在 xml 之间生成差异的问题 但还没有这个问题 所以任何知道这个问题的人都会向我展示一个链接或粘贴任何人已经解决了这个问题的示例 规范化 xml 文件意味着 重新排序属性的外观 重新排序标签的外观 可通过命令行
  • Perforce - 每次签到时都会收到电子邮件

    有没有办法让 Perforce 在每张支票上向您发送一封电子邮件到特定的存款机构 是的 输入 p4 user 查看您的用户配置 然后在 评论 下将您希望在签入时收到通知的仓库区域的文件规范放入其中 如下所示 Reviews depot my
  • 在 Git 中,如何比较 Microsoft Word 文档?

    我一直在关注本指南在这里 https git scm com docs gitattributes performing text diffs of binary files关于如何区分 Microsoft Word 文档 但我遇到了以下错
  • 不在办公室时进行源代码控制

    有时我不在办公室时会编写代码 我想在未连接到公司网络时继续使用源代码控制的好处 我理想的系统将允许我将修订签入笔记本电脑上的存储库 然后当我连接到公司网络时 该存储库将与我们的主 SVN 存储库同步 当与主存储库同步时 如果可以维护单独的签
  • Subversion (svn + tortoiseSvn) 提交未锁定文件

    我经历过颠覆的奇怪功能 我们使用最新的 1 6 Svn 服务器 Visualsvn 和 tortoisesvn 1 6 6 我们已经为文件定义了属性 svn needs lock 那么如果您从不同位置复制文件 它会显示本地更改 如果您尝试提
  • 对超过 UInt16 屏障的程序集信息进行版本控制

    过去 我通常使用变更集或 svn 编号来对二进制文件进行版本控制 例如1 1 123 3 其中较大的数字是来自源代码控制系统的变更集或版本 然而 对于我现在使用的系统 我们已经远远超过了类似 70000 变更集的 uint 障碍 因此在用作
  • 如何防止 SVN 缓存单个存储库的凭据?

    我正在使用 Collabnet SVN 客户端版本 1 5 和 1 6 我的本地计算机运行的是 Windows Vista x64 我知道 确实非常悲伤 我想每次尝试在选定的存储库上执行任何颠覆操作时都强制进行身份验证 我如何将属性或设置设
  • svn 外部...是或否?

    我在这里读到了一些谴责使用 svn externals 的答案 我确实看到它们如何被滥用 这确实使我们更加依赖 Subversion 但我真的不认为我们的团队会很快放弃它 无论如何 这就是我的困境 我们的解决方案引用了多个项目 这些项目位于
  • 分布式版本控制系统[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想和我的程序员同事一起实现分布式版本控制系统 他们分散在周围 全部使用不同的 IDE 或不使用 IDE 也使用不同的操作系统 我对整个场
  • MKS/ PTC Integrity 源相当于 svn:ignore

    我们在工作中使用 MKS PTC Integrity 进行源代码控制 是否有与 subversion 中的 svn ignore 标志等效的东西 本质上 我想要一种方法来告诉 MKS 忽略文件夹 文件的更改 即我们的编译器输出文件夹等 您可
  • 在源代码管理中维护存储过程

    你们如何维护存储过程 由于一些不同的原因 我想保留它们的版本 本周末我还将设置 Cruisecontrol net 和 nant 来自动化构建 我正在考虑编写一些代码 为我的开发数据库中的所有表 sprocs udf xml 模式生成创建脚
  • IntelliJ:将“在路径中查找”范围限制为在 VCS 中跟踪的文件

    我想在 IntelliJ 中搜索整个项目目录 但将范围限制为在 VCS 中跟踪的文件 即我通过执行得到的结果相同git grep 我看到下面有一个自定义范围Find In Path gt Scope gt VCS Scopes gt Def
  • 将生成的文件存储在 Git 中

    我们有一个相当大且过于混乱的代码库 我们希望使用 Git 进行迁移 目前 它是一个大的整体块 不能轻易地分割成更小的独立组件 该代码构建了大量共享库 但它们的源代码如此交错 目前无法将其干净地分离到单独的存储库中 我不太关心 Git 是否可
  • Git 与 master 合并,无需签出 master

    每次我需要的时候merge develop with master I do git checkout master git merge develop 有时我忘记切换出去master 因此 我在运行时错误地更改了代码master 它可能会
  • 使用 Git 维护项目

    我有 2 个项目 实际上这 2 个项目彼此大约 80 相同 主要区别在于语言和商业模式 一个是针对使用英语的更多受众 并且有 9 美元 月的商业模式 另一个是使用本地语言与免费增值商业模式 有时 当我想添加新的特性 功能时 我想将其添加到两
  • 清理 Subversion 存储库的最佳方法是什么?

    我有一个不断增长的存储库 其中包含十几个我使用 TortoiseSVN 维护的项目 因为我对此完全陌生 还不知道其来龙去脉 我保存存储库的空间有限 因此我想备份它 然后删除一些旧版本 例如 如果一个项目的版本为 50 我只想保留 50 49
  • 交互式变基后,本地 Git 分支已偏离原始分支

    我有一个本地分行 CRM ayrshireminis 其中有一些我已推送到原点的提交 origin CRM ayrshireminis 这个分支是从创建的develop大约一周前的一个分支 其他合作者已经在该分支上完成了一周的工作 我想做的
  • DVCS命令的统一

    当处理多个 开源 项目时 多个版本控制系统开始出现问题 虽然它们共享共同的操作 但我经常在输入时犯错误hg add反而git add 我记得前段时间看到过一个项目 通过提供基本命令以统一的方式访问不同的源代码控制软件提交 ci add等在外
  • 单元测试类是否应该与其余代码一起置于版本控制之下?

    如果我为开发项目创建测试套件 这些类是否应该与项目代码的其余部分一起受版本控制 是的 没有理由不将它们置于源代码管理中 如果测试发生变化怎么办 如果接口发生变化 需要测试更改怎么办

随机推荐

  • 无法播放从 Android 应用程序发送的 Firebase 存储中的音频

    我正在使用 firebase 存储从我的 Android 应用程序上传音频 然后在我的应用程序中下载和播放 音频文件已上传 但当我从 firebase 存储播放它时 它采用如下图所示的视频格式 并且不播放音频 我还将其元数据设置为音频 mp
  • 产品和报价项目之间的概念区别是什么

    涉及班级 Mage Sales Model Quote Item and 法师 目录 型号 产品 我通过监听事件 在购物车添加上 得到了它们 我正在尝试从外部来源更新产品的数量信息 到目前为止 我的代码仅基于产品信息 我不确定这是否正确 报
  • 如何使用 pandas 计算所有列之间的相关性并删除高度相关的列?

    我有一个巨大的数据集 在机器学习建模之前 总是建议您首先应该删除高度相关的描述符 列 我如何计算列wice相关性并删除具有阈值的列 例如删除所有列或描述符具有 gt 0 8 的相关性 它还应该保留减少数据中的标题 示例数据集 GA PN P
  • Web API 2 OData = $format 不起作用:请求始终被忽略

    我有一个 Web API OData 项目 一切都运行良好 我现在尝试使用 format 参数返回 xml 而不是 JSON 而不是指定标头请求 但它不起作用 我尝试过这些方法 http localhost 3845 api Custome
  • Google Apps 脚本用于计算昨天收到的具有特定标签的电子邮件数量,然后将 # 每天保存到电子表格

    基本上就是标题所说的 但我想 1 自动计算我的 Gmail 帐户收到的带有特定标签的电子邮件数量 2 每天数一次 即使是零 3 每天向 Google 电子表格报告 4 所以我可以制作这样的月度报告 日期 日期 日期 10 月总计 平均每天
  • Python Tkinter - 恢复原始默认键绑定

    我正在 Win7 机器上使用 Python 2 7 和 Tkinter GUI 在某些情况下 我想完全覆盖 Tab 键的正常默认行为 但前提是存在某些条件 之后我想恢复到默认行为 请注意 目前我对 Tab 键感兴趣 但在某些时候我可能也需要
  • 表格单元格背景渗透到圆角表格中

    正如可以看到的这个演示 http jsfiddle net ZFYvq 其中表格设置有圆角 特别是右上角和左下角 这些角会被其包含的单元格的背景颜色破坏 我尝试应用一些padding到桌子上 但这并没有帮助 我唯一的选择是添加额外的列和行并
  • 树视图 - 突出显示多个项目

    在 Powerbuilder 中 这里有人知道我如何在树视图上突出显示多个项目吗 Selecteditem 函数没有这样做 我正在寻找 Selectedrow id 正在做的行为 Thanks 我自己没有尝试过 但有一个例子代码交换 htt
  • 使用带有 1 字节变量的 Python struct.unpack

    我该如何使用struct unpack 或 Python 中可用的其他一些函数可以轻松转换one字节变量到Python整数 现在 它是以一种相当蹩脚的方式完成的 file open telemetry dat rb read magic f
  • 对数字字符串映射的字符串进行排序

    我们有一个关于字符串排序的问题 在这种情况下排序不起作用 1 A 1 B 10 A 10 B 9 A 9 B 我们真正想要的是 1 A 1 B 9 A 9 B 10 A 10 B 如果我们将其作为字符串排序 结果将类似于第一部分 如果我们先
  • 在java中旋转图像

    我正在寻找旋转图像 我有一个JInternalFrame其中包含一个JLabel 标签包含图像 旋转图像后 我需要调整内部框架的大小 我当前的代码旋转图像 但图像边缘周围有黑色并且偏离中心 对于如何解决这个问题 有任何的建议吗 public
  • 使用expect进行无人值守(无提示)Homebrew安装

    根据Homebrew安装说明 可以使用以下命令进行安装 ruby e curl fsSL https raw github com Homebrew homebrew go install 这可行 但需要用户输入两次 确认安装并在脚本调用的
  • 在 Ruby 中生成 Paypal 签名“X-PAYPAL-AUTHORIZATION”

    Ruby 中是否有任何库可以生成签名 X PAYPAL AUTHORIZATION 代表通过 paypal Permissions API 授权我们的账户持有人进行调用时需要的标头 我完成了权限流程并获取了所需的访问令牌 tokenSecr
  • 在 Oracle SQL 中从当前日期减去 30 年

    我需要编写一个查询 选择所有出生日期在 30 年前的人 不幸的是 由于我使用的是 Oracle 所以我无法使用DATEADD 功能 我目前已经得到了这个 但显然这不是动态的 并且不会随着时间的推移而改变 SELECT Name DOB FR
  • 无法修改 Dictionary 的返回值,因为它不是变量

    有这样的错误 无法修改 System Collections Generic Dictionary this string 的返回值 因为它不是变量 My code Dictionary
  • Mysql 的 Doctrine 查询

    我想创建一个 Doctrine 查询 Doctrine 2 3 SELECT FROM car WHERE plate like AND datetime BETWEEN 2013 03 13 22 20 18 AND 2013 03 13
  • Ruby 进程之间的共享变量

    我有一个 Ruby 程序 可以加载两个非常大的 yaml 文件 因此我可以通过分叉一些进程来利用多核来提高速度 我尝试过寻找 但我无法弄清楚如何或是否可以在不同的进程中共享变量 以下代码是我目前拥有的 proteins decoyProte
  • 在 Moq 中模拟通用方法而不指定 T

    我有一个接口 其方法如下 public interface IRepo IA
  • Docker Compose 在 v2 中注入链接容器

    在 Docker Compose v1 中 etc hosts文件已使用链接的容器进行更新 例如 cat etc hosts 127 0 0 1 localhost 1 localhost ip6 localhost ip6 loopbac
  • 分布式版本控制系统真的没有集中存储库吗?

    这似乎是一个愚蠢的问题 但是如何在没有服务器可供检出的情况下设置工作目录呢 企业如何保存存储库的安全备份副本 我认为必须有一个中央仓库 但是它到底是如何 分布 的 我一直认为服务器 客户端 SVN 与点对点 GIT 的区别 但我不认为这是正