创建一个官方的 github 镜像

如何为外部 git 存储库创建 github 镜像,使其看起来像“真正的镜像”,例如,在 https://github.com/mirrors中?

到目前为止,我设置了一个镜像,使用:

cd /path/to/bare/repository
git remote add --mirror github git@github.com:user/repo.git

并配置后接收钩做一个 git push --quiet github。这样,但是,github 不能识别镜像。

有没有什么办法可以用 github 的方式来实现,比如“ Mirrorred from”出现在存储库名称的下面?

41161 次浏览

基于与 GitHub 支持团队的沟通,我发现 GitHub 目前没有为用户以这种方式镜像存储库提供直接机制。

但是,可以要求 GitHub 为组织中的存储库安装此服务。然后,GitHub 将一个现有存储库配置为这样一个镜像,并从中抽取一个时间间隔,这个时间间隔是它们拥有的总体镜像数量的函数。

EDIT : 正如 Stuart 指出的,GitHub 不再接受对镜像任意存储库的请求。剩下的唯一选择就是我在问题中提出的解决方案,比如,创建一个后接收钩子来自动推送到您的 GitHub 存储库。

从目前 https://github.com/mirrors的内容来看,GitHub 似乎不再做“官方镜像”了,因为大多数希望他们的代码在 GitHub 上镜像的项目现在只是为它建立一个组织,比如 Git 本身

还有一个特性请求: https://github.com/isaacs/github/issues/415

根据 导入 Git:

为了便于演示,我们将使用:

  • 名为 extuser 的外部帐户
  • 一个名为 ghuser 的 GitHub 个人用户帐户
  • 一个名为 repo.git 的 GitHub 存储库

命令行:

# Makes a bare clone of the external repository in a local directory
$ git clone --bare https://githost.org/extuser/repo.git


# Pushes the mirror to the new GitHub repository
$ cd *repo.git*
$ git push --mirror https://github.com/ghuser/repo.git


# Remove the temporary local repository.
$ cd ..
$ rm -rf repo.git

我曾经使用过一个名为 Github 备份的工具,它取得了一定的成功,即使不能反映 Github 用户或组织的情况,至少也做了一个完整的备份(包括问题和其他元数据)。引用 自述文件的话:

Each time you run github-backup, it will find any new forks on GitHub. It will add remotes to your repository for the forks, using names like github_torvalds_subsurface. It will fetch from every fork.

它从每个分支下载元数据。它存储在一个名为“ github”的分支中。每个 fork 都有一个目录,比如 torvalds_subsurface。在目录中会有一些文件,比如 torvalds_subsurface/watchers。可能还有更多的目录,比如用于注释的目录: torvalds_subsurface/comments/1

You can follow the commits to the github branch to see what information changed on GitHub over time.

Github 分支中的文件格式目前是 Haskell 序列化数据类型。这是纯文本,如果你斜视的话,是可读的。

限制包括:

  • 没有私有存储库支持
  • 没有明星、追随者等“社交”的东西
  • 不支持提交行的注释(还不支持吗?)
  • 发出标签