我有一個既有的專案由 SVN 管控(遠端 server 1), 因為(*)我想要以後改用 GIT 管控(遠端 server 2), 但仍希望在 GIT 裡面還能看到舊有 SVN 版本的歷史紀錄.
NOTE: (*) 任何理由, 我猜大部分是因為有某人堅持 ^^
其實這個的需求跟之前我發表的 SVN 與 GIT 協同工作是同一回事, 只是改另外一種 "不回頭" 的說法, 把原有的紀錄搬過來後, 原有的 SVN 庫不要了, 而且會以為一開始就是 GIT 管控...
所以不再詳細寫下步驟, 快速的紀錄一下重點
Converting a Subversion repository to Git
-----------------------------------------
by TortoiseGit and TortoiseSVN
1. 原有的 SVN 庫, 必須要能用 URL 方式 like svn://xx.xx.xx.xx/oo
或 http://...方式存取, 而不是 file:///x:/xx/oo 這種檔案路徑方式,
如果 SVN 庫是放在本電腦用 file:// 方式, 請設置正確的 svn service 並
啟動, 改用 SVN://...
2. 建立一個新的 folder A, 操作 TortoiseGit clone, URL 填 SVN://...,
下面 'From SVN Repository' 勾選, 把整個 SVN clone 至這個 folder,
此時 folder A 為 GIT 管控, 但還與 SVN 庫連結著.
這個(folder A as GIT)可以查到全部的 SVN 歷史紀錄
3. a) GIT 庫仍在本機: 建立另一個新的 folder B, 操作 TortoiseGit 在這裡
建立一個新的 bare git 庫
b) GIT 庫放在他機: 遠端放 Git 庫的 server, 建立好一個新的 bare git 庫
此 git 庫就是以後你要送交的地方(remote).
4. 在 folder A 處開啟 TortoiseGit, settings -> Git -> Remote 新增
一個 remote 為 step 3 的位置.
5. 把 folder A 全部的文件, push 至 step 4 新增 remote 的位置.
6. (**)建立另一個新的 folder C, 操作 TortoiseGit clone 自 step 4 的
位置, 此 folder C 就是你最後要的工作路徑.
NOTE: (**) 我後來想到, 如果直接在 folder A 裡的 remote 設置
(as step 4 處), 把 original 的 SVN 的位置刪去, 不就好了?
那就不需要在弄一個 folder C, 需再測試看看此法, 但建立
folder C 新的 clone 也有順便測試以別人角色抓此 GIT 庫的好處.
7. 砍掉 folder A, 砍掉 SVN 庫....
8. 以後就在 folder C 工作, 可以提交本地端也可以 push 至遠端(***)...
P.S. (***) 對啦, 堅持的人總是說這個理由啦...:)
參考: http://john.albin.net/git/convert-subversion-to-git
P.S. 上面參考是用 git 指令操作, 感覺很複雜, 也許我的方法缺陷沒測到, 先這樣以後再說...
沒有留言:
張貼留言