- 先
到原 svn 專案下,執行 svn log ^/ --xml | grep -P "^
(.*?)<\/author>/$1 = /' > users.txt ,產生 users.txt,編輯裏面 svn user 跟 git user 的對照。 - 接著用 git-svn 重新簽出 svn
repository: git svn clone your_svn_url -T trunk -b branches -t tags -s
your_project -git -Ausers.txt --no-metadata
在 Subversion 裡,是以目錄 trunk/branches/tags 來區分主枝、分枝跟標籤,-T, -b, -t 就是告訴 Git 這些事情。
-Ausers.txt 就是告訴 Git-svn 要參考前個步驟所產生的 users.txt 去做使用者的對照。
--no-metadata 是處理掉一些 git-svn 加上的附加訊息,這可以用 git log 比較得知,沒有加的話,git log 結果會有 git-svn-id: .... 的訊息。 - 如 果有 tags 的話,會需要處理:git for-each-ref refs/remotes/tags | cut -d / -f 4- | grep -v @ | while read tagname; do git tag "$tagname" "tags/$tagname"; git branch -r -d "tags/$tagname"; done
- 如果有 branch 的話,也需要處理:git for-each-ref refs/remotes | cut -d / -f 3- | grep -v @ | while read branchname; do git branch "$branchname" "refs/remotes/$branchname"; git branch -r -d "$branchname"; done
- 接著加入 git remote repository :git remote add origin your_git_remote_repository ,再用 git push origin --all 推上去。
- 最後把 tags 也推上去: git push origin --tags
星期一, 2月 09, 2015
搬家,從 Subverion 到 Git
從 Git - Git 与 Subversion 整理出來的步驟,Git 本身就有可以從 Subversion 簽出程式的功能:git-svn,應用 git-svn 就可以成功的搬家:
標籤(Label):
git,
note,
subversion
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言