2014/10/01

轉移 svn 到 git



最近公司開始導入 git

我也開始學了一下~ 覺得 git 實在很好用

所以要把自己的 svn server 改成 git



以下教學如何把 svn 移植到git

首先先將 svn 中原有使用者資訊給列出


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

再來用灌 git-svn 並執行:
git svn clone "你的 svn repo" --no-metadata -A ~/authors-transform.txt --no-minimize-url ~/temp

這樣~/temp就會是你的 repo 了,如果原先 repo 很雜亂,多個專案都使用同一個的話也沒問題。

再來把git專案push到git server上

git remote add origin git@bitbucket.org:yours.git
git push -u origin --all

完成

2015/02/03 補充

在轉換的 svn 中,空的資料夾會遺失
必須加上 --preserve-empty-dirs

git svn clone "你的 svn repo" --no-metadata --preserve-empty-dirs -A ~/authors-transform.txt --no-minimize-url ~/temp
官網說明:
--preserve-empty-dirs
Create a placeholder file in the local Git repository for each empty directory fetched from Subversion. This includes directories that become empty by removing all entries in the Subversion repository (but not the directory itself). The placeholder files are also tracked and removed when no longer necessary.

--placeholder-filename=<filename>
Set the name of placeholder files created by --preserve-empty-dirs. Default: ".gitignore"


2016/01/07 補充

若只想 clone 部分範圍的 commit 可已加上 -r "開始版號":"結束版號"

git svn clone -r 100:200 "你的 svn repo" --no-metadata --preserve-empty-dirs -A ~/authors-transform.txt --no-minimize-url ~/temp

沒有留言:

張貼留言