【问题标题】:Moving from TFSVC to GIT - Repository with partial History?从 TFSVC 迁移到 GIT - 具有部分历史记录的存储库?
【发布时间】:2017-03-27 02:50:10
【问题描述】:

我们即将从 TFSVC 迁移到 git。我们当前的存储库已有 5 年多的历史,包含约 78000 次提交。到目前为止,我能够拥有一个巨大的完整克隆(~10GB)。该存储库将作为我们新的 git 存储库的基础,并作为对旧源研究的只读副本。

由于大小的原因,我们确实使用 BFG 清理了该 repo,并将其降低到 ~1GB,这仍然太大了。 我们目前使用发布分支,我们需要使用 dev 主干和最后几个发布分支迁移到新系统。可以在 10GB 存储库中查找较旧的分支及其提交。

是否可以按日期标记切断新存储库的提交(也称为历史记录)?我们确实希望保留大约最近 6 个月的提交以及最新的发布分支。

基本上归结为一个问题:当 git repo 真正成长了几年后,你如何管理它?可以说每隔几年我只想保留最后一年。你是如何做到这一点的?

我已经尝试了一个浅克隆,但它没有保留分支。

【问题讨论】:

  • 你的 repo 是否包含二进制文件? 1Gb 真的很大(不能只是来源)
  • 是的,它包含一些二进制文件。克隆后可以删除其中的许多内容。在那里我还需要一个较小的提交历史,否则 BFG 和 git filter-branch 将永远持续

标签: git tfs


【解决方案1】:

正如我在“Is it possible to do a shallow git clone based on datetime?”中提到的,Git 2.11 是可能的(which will be released soon: 22 Nov. 2016,其中there are previews already)

git clone --shallow-since=<date>

(参见git clone man page 和its test。在commit 994c2aa 中实现的功能)

关于分支,请参阅“git shallow clone (clone --depth) misses remote branches”。但是如果远程分支是从请求日期之前的提交开始的,则该分支不会进入浅层克隆。


基本上归结为一个问题:当 git repo 真正成长了几年后,你如何管理它?

我 keep an bundle 用于存档,fetch --depth 我想要的分支进入一个新的浅克隆 repo。

【讨论】:

  • 我已经做到了。我确实看到,根据我使用的日期,回购中有或多或少的对象。但我仍然看到了整个历史。我怎样才能减少提交?
  • @MichaelWagner 你这样做了吗?这仅在尚未发布的 Git 2.11 上可用。你使用了我提到的 Git 预览版吗?你在 Windows 上吗?
  • 是的,我下载了预览版并使用了
猜你喜欢
  • 2014-01-03
  • 2022-08-07
  • 2011-06-30
  • 2020-12-01
  • 2014-01-12
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多