如何将 Bitbucket 存储库复制到 CodeCommit,包括所有分支,但不包括所有分支上的所有历史记录?
想要这样做的原因:我们的配置服务器从 CodeCommit 中读取,但事实来源在 Bitbucket。(我们这样做的原因说来话长。)我们有一个脚本,当前(并且成功地)将 Bitbucket 存储库“复制”到 CodeCommit。我们正在调查是否可以通过在没有所有历史记录的情况下同步到 CodeCommit 来改进配置服务器的响应时间,因此当 ConfigServer 进行克隆或获取时,它不会花费很长时间(目前 15-25 秒的响应时间很常见)。
我们希望我们可以简单地添加--depth 1
到我们的git clone --mirror
命令中。但是,将镜像存储库推送到 CodeCommit 时,我们会收到错误消息。为了查看这是否只是 CodeCommit 问题,我尝试执行类似的操作来从 bitbucket 中读取数据并推送回新的 bitbucket 存储库。我得到了一个不同但类似的错误。
以下是核心步骤。这工作得很好,没有--depth 1
:
git clone --mirror --depth 1 ssh://<bitbucket> RepoFolder
cd RepoFolder
git remote add codecommit ssh://<codecommit>
git remote update origin
aws codecommit create-repository --repository-name pvvts_configs-RepoFolder --repository-description 'Synced'
git push --mirror codecommit
错误发生在最后一个命令 ( git push
) 上。错误看起来像:
远程:未知提交 2280a0e659a1232a402041c27d94d81fd5142edberror:解包失败:未知提交 2280a0e659a1232a402041c27d94d81fd5142edb
接下来是每个分支的错误,如下所示:
[远程拒绝] dev -> dev(解包器错误)
如果我尝试做类似的事情,除了推回bitbucket,我会收到以下错误。(我跳过了 aws create-repository 步骤,而是先在 bitbucket 中手动创建新的存储库。)
错误:无法读取 6b0189279671f3a8c7b190dbc8d7ec91c0bb808a 到 ssh://git@bitbucket.pearson.com/pvvts_configs/vtscoreconfigurations_for_testing_only_marnee_1g_copy.git ![远程拒绝] dev -> dev(不允许浅更新)
我读到您现在可以从与 Git 1.9 或更高版本的浅同步中推送。我有 git 版本 2.7.4。(请参阅此处对问题的回答:https ://stackoverflow.com/a/21217267/1599362 。)但是,也许从普通克隆中删除了从浅同步推送的限制,而不是从mirror
.
有没有办法进行这种浅同步?有没有其他方法可以实现我在 CodeCommit 中减少复制的 repo 大小的目的?(请注意,配置服务器本身确实有一个选项告诉它进行浅克隆。)
(我意识到,即使我可以成功地执行此“浅同步”,该配置服务器也可能无法很好地使用它,并且它可能无法提供我们想要的性能改进。测试将是下一步。)