创建一个官方的Github镜像

125

我如何为外部git仓库创建一个GitHub镜像,以便它看起来像是一个"真正的镜像",比如https://github.com/mirrors中的那些?

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

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

并配置一个post-receive钩子,执行git push --quiet github。 然而,这样做后,github无法识别镜像。

有什么想法可以按照github的方式实现,以便"Mirrored from"出现在存储库名称下面?


2
https://github.com/apache/libcloud 是另一个镜像仓库的例子,都来自于Apache LOL。 - Colin Su
5个回答

128

根据与GitHub支持团队的交流,我发现GitHub目前没有直接允许用户以这种方式镜像存储库的机制。

然而,用户可以要求GitHub为组织中的存储库安装此服务。GitHub将现有存储库配置为这样的镜像,并在一定间隔内从中拉取,该间隔是它们拥有的总镜像数量的函数。

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


我有一个新手问题:镜像仓库有什么用,从而创建两个相同的仓库副本?这不会引起混淆吗?我的意思是,如果我要创建PR,应该使用哪个站点?这是为了获得曝光度,以便人们可以在Github上找到该仓库吗? - Tom Charles Zhang
@TomCharlesZhang一些人将他们的代码库存放在自己的服务器/网站上,例如,Linux内核托管在kernel.org上,但由于GitHub非常流行,将代码库镜像到GitHub上很有用,这样不太熟悉其他网页的人可以更容易地找到你的项目。 - Fabián Montero
@TomCharlesZhang 如果原始服务器停止存在,或者存放服务器的国家,镜像仍将拥有所有数据,数百人的工作也不会消失。 - undefined

13

1
实际上,其中一些有GitHub镜像仓库。他们仍然这样做,但只有当你是项目的开发者时,也就是说没有“非官方”的镜像。 - alexia
正如他们所说,仅适用于组织。 - alexia
1
https://zerobin.net/?b42e2c88a369bad2#+r/IWzlCjogsuUD4TBe0/nHPH469nmV6axhqmCQw858= - alexia

7
根据使用命令行导入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

5
git clone --baregit clone --mirror 有什么区别?第二个选项不是更合适吗? - user7610
但是现在GitHub会自动保持https://github.com/ghuser/repo.git更新吗? - undefined

1
我曾经使用过一个叫做github-backup的工具,取得了一定的成功,能够备份Github用户或组织的所有内容(包括问题和其他元数据),尽管不是镜像。引用README文件中的话:
每次运行github-backup时,它都会查找GitHub上的任何新分支。它将为这些分支添加远程仓库到您的存储库中,使用名称如github_torvalds_subsurface。它将从每个分支进行提取。
它会从每个分支下载元数据。这些数据存储在名为“github”的分支中。每个分支都有一个目录,例如torvalds_subsurface。在该目录中,将有一些文件,例如torvalds_subsurface/watchers。还可能有进一步的目录,例如评论:torvalds_subsurface/comments/1
您可以跟随提交到github分支,以查看GitHub上的信息随时间而变化的情况。
github分支中文件的格式当前为Haskell序列化数据类型。如果你眯起眼睛,这是纯文本且可读的。

限制包括:

  • 不支持私有仓库
  • 没有“社交”功能,如星标、关注等
  • 暂时不支持对提交的行添加注释
  • 问题标签

1

可以在仓库上设置一个操作,以实现推送和拉取式镜像。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接