创建一个官方的github镜像


108

我如何为外部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”出现在重新张贴的名称下方吗?


2
github.com/apache/libcloud镜像回购的另一个示例,全部来自Apache LOL
Colin Su

Answers:


113

基于与GitHub支持团队的沟通,我发现GitHub当前不提供任何直接机制来让用户以这种方式镜像存储库。

但是,可以要求GitHub为组织中的存储库安装此服务。然后GitHub将现有的存储库配置为此类镜像,并以一定间隔从中拉出该镜像,该间隔取决于它们拥有的整体镜像的数量。

编辑:正如Stuart所指出的,GitHub不再接受镜像任意存储库的请求。剩下的唯一选择就是我在问题中发布的解决方案,即创建一个接收后挂钩以自动推送到您的GitHub存储库。


9

https://github.com/mirrors的当前内容来看,似乎GitHub不再做“官方镜像”,因为今天大多数想要将其代码镜像到GitHub的项目只是为它建立了一个组织,例如Git本身。

在以下位置也有功能请求:https : //github.com/isaacs/github/issues/415


实际上,其中一些具有GitHub镜像存储库。他们仍然会这样做,但前提是您是项目的开发人员,即没有“非正式”的镜像。
nyuszika7h 2014年

正如他们所说,仅适用于组织。
nyuszika7h 2014年


4

根据导入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

1
git clone --bare和之间有什么区别git clone --mirror?第二个版本不是更合适吗?
user7610

0

我使用了一个名为github-backup的工具,该工具取得了一定的成功,即使不是镜像,也至少可以对Github用户或组织进行完整备份(包括问题和其他元数据)。引用自述文件

每次运行github-backup时,它将在GitHub上找到任何新的fork。它将使用诸如这样的名称将远程添加到您的分叉的存储库中github_torvalds_subsurface。它将从每个叉子中获取。

它从每个fork下载元数据。这存储在名为“ github”的分支中。每个fork在其中都有一个目录,例如torvalds_subsurface。目录中将包含一些文件,例如torvalds_subsurface/watchers。可能有进一步的目录,如征求意见:torvalds_subsurface/comments/1

您可以跟踪对github分支的提交,以查看随着时间的推移GitHub上更改了哪些信息。

github分支中的文件格式当前为Haskell序列化的数据类型。这是纯文本,如果您斜视,则可读。

限制包括:

  • 没有私有存储库支持
  • 没有诸如明星,关注者等“社交”内容
  • 不支持提交行注释(是吗?)
  • 发行标签
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.