mercurial - 在 hg clone 中, "adding changesets"、 "adding manifests"和 "adding file changes"之间有什么区别?

标签 mercurial clone dvcs changeset

来自 Mercurial 文档:

The manifest is the file that describes the contents of the repository at a particular changeset ID https://www.mercurial-scm.org/wiki/Manifest

克隆 Mercurial 存储库时,我看到输出行:

adding changesets
adding manifests
adding file changes

我不明白这些东西之间的区别。我以为我理解变更集是什么,但我不知道它与一组“文件更改”有何不同。根据上面的描述, list 听起来像是同一件事。那么所有这些之间有什么区别?

最佳答案

Mercurial 将版本控制系统中需要跟踪的信息分为几个级别:

  • 变更集——有关每个修订的元数据。谁(作者)、何时(日期和时间)、原因(摘要文本)和内容(受影响的文件名)等都存储在这里。
  • list ——每个 list 列出了给定版本的文件的文件版本。这就像数据库中的链接表;不包含文件内容,只包含给定文件的哪个版本是此修订的一部分。
  • 文件更改——这些文件存储实际的文件数据。存储完整形成的给定文件的每个版本是低效的。相反,它以增量压缩形式存储文件数据;版本之间的更改会被存储,偶尔会保存完整副本以帮助更快地恢复到版本。

克隆时,所有 3 个级别都需要从远程服务器复制到您的存储库中。

请参阅 Mercurial Wiki Design page了解详情。

关于mercurial - 在 hg clone 中, "adding changesets"、 "adding manifests"和 "adding file changes"之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39664532/

相关文章:

mercurial - 以 hg 为单位分割一大块;改变容忍度

使用 LFS 从本地存储库进行 Git 克隆

version-control - 额外的 "push -f"/仅备份 Mercurial 存储库是否有效?

mercurial - 使用Mercurial (hg),如何只推送一个文件或一个目录?

macos - 如何解决 Mercurial 折叠箱碰撞问题?

git - 使用 DVCS merge 中间分支中的更改

chrome 中的 jQuery 可拖动助手故障

Mercurial 工作流可以并行处理多个单独的任务

mercurial - 如何忽略HG中的某些文件夹?

javascript - 克隆时如何为ID添加增量编号