创建官方github镜像

时间:2012-07-06 22:02:02

标签: github mirroring

如何为外部git存储库创建github镜像,使其显示为“真实镜像”,例如https://github.com/mirrors中的

到目前为止,我使用以下方式设置镜像:

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

并配置post receive hook以执行git push --quiet github。但是,这样,github无法识别镜像。

任何想法如何以github方式进行,以便“Mirrorred from”出现在repostiory名称下面?

5 个答案:

答案 0 :(得分:107)

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

但是,可以要求github为作为组织一部分的存储库安装此服务。然后,Github将现有存储库配置为这样一个镜像,并在一个间隔中拉出它,该间隔是它们具有的整个镜像数量的函数。

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

答案 1 :(得分:8)

github上的以下页面为您提供了设置镜像到外部git仓库的必要说明。 https://help.github.com/articles/importing-an-external-git-repo

答案 2 :(得分:7)

根据https://github.com/mirrors的当前内容判断,GitHub似乎不再使用#34;官方镜像",因为大多数希望今天在GitHub上镜像的项目只是组建一个组织,例如Git itself

还有一项功能请求:https://github.com/isaacs/github/issues/415

答案 3 :(得分:2)

根据Importing a 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

答案 4 :(得分:0)

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

  

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

     

它从每个fork下载元数据。这存储在名为“ github”的分支中。每个fork都在其中有一个目录,例如torvalds_subsurface。目录内将有一些文件,例如torvalds_subsurface/watchers。可能还有其他目录,例如用于评论的目录:torvalds_subsurface/comments/1

     

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

     

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

限制包括:

  • 不支持私有存储库
  • 没有“社交”内容,例如明星,关注者等
  • 不支持提交行注释(是吗?)
  • 问题标签