簡體   English   中英

將本地 svn repo 轉儲轉換為 git

[英]Converting a local svn repo dump to git

我搜索了相關問題,但找不到與我的具體情況相符的任何內容:我有一些來自多年前被關閉的 SVN 服務器的舊存儲庫檔案。 它們是服務器上原始存儲庫結構的 tarball。 我想做的是將它們轉換為 git 存儲庫,作為未來工作/恢復項目的基礎。 我已經閱讀了幾個關於轉換過程的教程,我想我可以弄清楚作者轉換、分支映射等,但它們都假設您有一個 SVN 服務器和一個存儲庫的 url。 我是否需要安裝和設置和 SVN 服務器來執行此轉換,或者有什么方法可以將git clonesvn2git (或其他工具)指向我擁有的 repo 轉儲?

在本地安裝 subversion 以導入您的轉儲,然后使用 git-svn 包。

你可以使用git svn clone file:///path/to/svn/repo /path/to/empty/dir

檢索所有 Subversion 提交者的列表

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt

使用 git-svn 克隆 Subversion 存儲庫

git svn clone [SVN repo URL] --no-metadata -A authors-transform.txt --stdlayout ~/temp

將 svn:ignore 屬性轉換為 .gitignore

cd ~/temp
git svn show-ignore > .gitignore
git add .gitignore
git commit -m 'Convert svn:ignore properties to .gitignore.'

將存儲庫推送到裸 git 存儲庫

git init --bare ~/new-bare.git
cd ~/new-bare.git
git symbolic-ref HEAD refs/heads/trunk

然后將臨時存儲庫推送到新的裸存儲庫。

cd ~/temp
git remote add bare ~/new-bare.git
git config remote.bare.push 'refs/remotes/*:refs/heads/*'
git push bare

將“trunk”分支重命名為“master”

cd ~/new-bare.git
git branch -m trunk master

清理分支和標簽

cd ~/new-bare.git
git for-each-ref --format='%(refname)' refs/heads/tags |
cut -d / -f 4 |
while read ref
do
  git tag "$ref" "refs/heads/tags/$ref";
  git branch -D "tags/$ref";
done

參考: http : //john.albin.net/git/convert-subversion-to-git

  1. 所有 (?) svn -> git 轉換器都需要實時的 Subversion 存儲庫,
  2. 存儲庫的樹狀副本不是轉儲,而是通常的文件級備份。

你有:

  1. 安裝和配置任何 Subversion 服務器(如果您的轉換器無法處理 SVN 的file:///協議,否則不需要 - 只需解壓 tarball 並使用 svn 客戶端檢查 repo)
  2. 閱讀 git-svn
  3. 使用 git-svn
  1. 在您的服務器中獲取轉儲文件:

     svnadmin dump "repopath or url" > import.bkp git svn clone "back"
  2. 轉到克隆路徑,然后打開 git bash 並運行以下命令:

     git svn show-ignore > .gitignore git add .gitignore git commit -m "with message" git check in "git url"

reposurgeon工具支持將 SVN 轉儲文件直接(並且非常快速)轉換為 Git 存儲庫。

暫無
暫無

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

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