[英]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 轉儲流文件的形式恢復和下載項目的歷史記錄。 請按照以下步驟操作:
示例網址:
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 服務器實例。
按照bahred 的解釋下載repo.svndump.gz
存檔。
創建本地 Subversion 存儲庫並導入轉儲
svnadmin create /home/mloskot/svn svnadmin load /home/mloskot/svn < /home/mloskot/repo.svndump
簽出 Subversion 存儲庫以生成作者文件
svn checkout file:///home/mloskot/svn
並找到許多腳本之一來生成authors.txt
。
從https://subgit.com下載最新的 SubGit
閱讀 SubGit 導入指南, https: //subgit.com/documentation/import-book.html
初始化 Git 存儲庫,其中 SubGit 將轉換 Subversion 存儲庫
subgit configure --minimal-revision 1 --layout std file:///home/mloskot/svn /home/mloskot/git
編輯/home/mloskot/git/subgit/config
生成的subgit/config
文件
將 Subversion 存儲庫導入 Git
subgit import /home/mloskot/git subgit uninstall --purge /home/mloskot/git
克隆 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
享受您的代碼的新家!
櫻桃采摘(嘿!)
svnadmin
使用的回復, 以下是我使用存檔在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,包括提交歷史記錄:
我只是使用一個空的 GitHub 存儲庫(為此創建的,沒有 README.md 文件)完成了它,並且在第一次嘗試時就成功了。 hg-git 擴展將在您的 git 存儲庫上生成一個名為“hg”的本地分支,可以推送到您的 Github 遠程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.