簡體   English   中英

谷歌代碼存檔到 Github

[英]Google Code Archive to Github

我想將此項目https://code.google.com/archive/p/majesticuo遷移到 GitHub 以維護歷史記錄。

當我嘗試使用“導出到 GitHub”按鈕時,它顯示“Google 代碼項目導出工具不再可用

Google Code to GitHub 導出器工具不再可用。 Google Code 項目的源代碼現在可以在 Google Code Archive 中找到。

手動執行此操作的最佳方法是什么? 我沒有 svn 知識,也知道一點 git。 非常感謝!

2017 年 11 月 6 日更新

您似乎可以以 gzip 壓縮的 svn 轉儲流文件的形式恢復和下載項目的歷史記錄。 請按照以下步驟操作:

  1. 導航到項目的 Google 代碼存檔頁面。 例如https://code.google.com/archive/p/majesticuo/
  2. 復制源下的下載 URL。
  3. 在 URL 中,將source-archive.zip更改為repo.svndump.gz並下載文件。

示例網址:

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

該文件是一個 gzip 壓縮的 svn 存儲庫轉儲流文件,您可以使用svnadmin load工具將其加載到新存儲庫中。

如果您在 Google Code 中導航到您的項目頁面,然后單擊側欄中的“源”,然后在結果頁面中單擊“源”,您將被帶到帶有“下載”鏈接的頁面。 這將導致一個名為“source-archive.zip”的文件,其中包含您項目的某種存檔——我不確定它有多完整,但它確實包含一些 svn 元數據。 但是,如果將該 URL 的最后一部分從“source-archive.zip”更改為“repo.svndump.gz”,您將獲得您的 repo 的 svn“dump”。 這應該包含完整的歷史記錄,並且可以使用各種 svn-to-git 遷移工具轉換為 git 格式。 (我根據這篇博文中的信息得出了這一點,其中還列出了一些最終轉換的建議步驟。但是如果您第一次嘗試轉換轉儲失敗,請嘗試其他工具;有很多選擇,而且有點藝術如果您的回購歷史記錄很復雜,則可以使用它。)

這是我最近執行的將gil-contributions 的Google Code 存檔移動到 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. 編輯/home/mloskot/git/subgit/config生成的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. 享受您的代碼的新家!

櫻桃采摘(嘿!)

  1. 來自bahrep's/JiriHnidek's對下載壓縮后的 SVN“圖像”的回復
  2. 來自mloskotsvnadmin使用的回復
  3. Coleman Corrigan 的回復描述了如何使用 Git 從 SVN 導入,

以下是我使用存檔在https://code.google.com/archive/p/$PROJECT的項目名稱$PROJECT采取的步驟:

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/${USER}/${PROJECT}
git fetch origin
time git push -u origin master
cd ..
rm -rf p repo.svndump

今天剛剛測試了接受的答案並得到以下錯誤:

“訪問被拒絕。匿名調用者沒有 storage.objects.get 訪問 google-code-archive-source/v2/code.google.com//repo.svndump.gz。”

但是,有一種方法可以將其導入 git,包括提交歷史記錄:

  • 使用提供的按鈕/網址下載“source-archive.zip”文件;
  • 使用 hg-git Mercurial 擴展將其轉換為 git 存儲庫(可在此處找到適用於 Windows 的說明)。

我只是使用一個空的 GitHub 存儲庫(為此創建的,沒有 README.md 文件)完成了它,並且在第一次嘗試時就成功了。 hg-git 擴展將在您的 git 存儲庫上生成一個名為“hg”的本地分支,可以推送到您的 Github 遠程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM