Google 代码存档到 Github

问题描述 投票:0回答:5

我想将这个项目 https://code.google.com/archive/p/majesticuo 迁移到 GitHub 来维护历史记录。

当我尝试使用“导出到 GitHub”按钮时,它显示“Google Code 项目导出工具不再可用”

Google 代码到 GitHub 导出器工具不再可用。现在可以在 Google Code Archive 中找到 Google Code 项目的源代码。'

手动执行此操作的最佳方法是什么?我没有svn知识,懂一点git。非常感谢!

git svn google-code
5个回答
24
投票

更新于 2017 年 11 月 6 日

看来您可以以 gzipped svn dump 流文件的形式恢复和下载项目的历史记录。请按照以下步骤操作:

    导航至该项目的 Google 代码存档页面。例如。
  1. https://code.google.com/archive/p/majesticuo/
  2. 复制源下的下载网址。
  3. 在 URL 中,将
  4. source-archive.zip 更改为 repo.svndump.gz 并下载文件。
示例网址:

https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/majesticuo/repo.svndump.gz


该文件是一个 gzipped svn 存储库转储流文件,您可以使用

svnadmin load

 工具将其加载到新存储库中。


10
投票
如果您在 Google 代码中导航到项目页面,然后单击侧边栏中的“源”,然后单击结果页面中的“源”,您将进入带有“下载”链接的页面。这将生成一个名为“source-archive.zip”的文件,其中包含项目的某种存档——我不确定它有多完整,但它确实包含一些 svn 元数据。但是,如果将该 URL 的最后部分从“source-archive.zip”更改为“repo.svndump.gz”,您将获得存储库的 svn“转储”。它应该包含完整的历史记录,并且可以使用各种 svn-to-git 迁移工具转换为 git 格式。 (我根据

这篇博文中的信息得出这一点,其中还列出了最终转换的一些建议步骤。但是,如果您第一次尝试转换转储失败,请尝试其他工具;有很多选项,并且有一些如果你的回购历史很复杂,这就是一门艺术。)


7
投票
这是我最近执行的将

gil-contributions 的 Google 代码存档移动到 GitHub repo 的过程,在本地没有任何 Subversion 服务器实例。

  1. 按照

    bahred 的解释下载repo.svndump.gz

    存档。

  2. 创建本地 Subversion 存储库并导入转储

    svnadmin create /home/mloskot/svn svnadmin load /home/mloskot/svn < /home/mloskot/repo.svndump
    
    
  3. 查看 Subversion 存储库以生成作者文件

    svn checkout file:///home/mloskot/svn
    
    
    并找到多个脚本之一来生成

    authors.txt

  4. https://subgit.com

    下载最新的 SubGit
  5. 阅读 SubGit 导入指南,

    https://subgit.com/documentation/import-book.html

  6. 初始化 Git 存储库,其中 SubGit 将翻译 Subversion 存储库

    subgit configure --minimal-revision 1 --layout std file:///home/mloskot/svn /home/mloskot/git
    
    
  7. 编辑

    subgit/config

    中生成的
    /home/mloskot/git/subgit/config

    文件
  8. 将 Subversion 存储库导入 Git

    subgit import /home/mloskot/git subgit uninstall --purge /home/mloskot/git
    
    
  9. 克隆 Git 存储库,也作为验证步骤,并将其推送到 GitHub

    git clone --mirror /home/mloskot/git repo cd repo git config remote.origin.mirror false git clone --mirror <GITHUB REPO URL> git remote set-url origin <GITHUB REPO URL> git push --all origin git push --tags origin
    
    
  10. 享受代码的新家!


3
投票
摘樱桃(呵呵!)

    来自
  1. bahrep/JiriHnidek 的回复,用于下载 gzip 压缩的 SVN“图像”,
  2. 来自
  3. mloskot的回复svnadmin
    使用,
  4. Coleman Corrigan 的回复描述了如何使用 Git 从 SVN 导入,
以下是我使用项目名称

$PROJECT

 所采取的步骤,存档于 
https://code.google.com/archive/p/$PROJECT
,以及 
$GITHUB_NAMESPACE
 是将导入的存储库推送到的 GitHub 命名空间。

wget https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/${PROJECT}/repo.svndump.gz svnadmin create p time zcat repo.svndump.gz|svnadmin load p git svn init file://$(pwd)/p --stdlayout ${PROJECT} cd ${PROJECT} time git svn fetch --all git remote add origin https://github.com/${GITHUB_NAMESPACE}/${PROJECT} git fetch origin time git push -u origin master cd .. rm -rf p repo.svndump
    

0
投票
今天刚刚测试了接受的答案并收到以下错误:

“访问被拒绝。匿名调用者没有 storage.objects.get 访问 google-code-archive-source/v2/code.google.com//repo.svndump.gz 的权限。”

但是,有一种方法可以将其导入 git,包括提交历史记录:

我只是使用一个空的 GitHub 存储库(专门为此创建的,没有 README.md 文件)来完成此操作,并且它在第一次尝试时就成功了。 hg-git 扩展将在您的 git 存储库上生成一个名为“hg”的本地分支,可以将其推送到您的 Github 远程。

© www.soinside.com 2019 - 2024. All rights reserved.