轉換成 Git 的方法可以看這篇,這篇其實是先轉成 git 後,然後用 git 合併起來
方法一:subtree add
git subtree add --prefix=DIR1 git://git.repo.1 master git subtree add --prefix=DIR2 git://git.repo.2 master git subtree add --prefix=DIR3 git://git.repo.3 master git subtree add --prefix=DIR4 git://git.repo.4 master
這是最簡單快速的方法,如果不介意看到一個新增目錄的 commit 出現的話。
參考:http://stackoverflow.com/questions/1425892/how-do-you-merge-two-git-repositories
方法二:cherry-pick
這個做法會改寫原來 repo 的歷史紀錄,所以先 clone 一份出來測試。mkdir temp cd temp git svn clone svn://repo1/ git svn clone svn://repo2/ git clone /path/to/repo3 git clone /path/to/repo4然後到每個 repo 裡去調整目錄,這裡最簡單的作法是把它搬到某個 dir 裡:
git filter-branch --index-filter 'git ls-files -s | perl -pe "s{\t\"?}{$&SUB_DIR/}" |GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info && if test -f "$GIT_INDEX_FILE.new"; then mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE; fi' HEAD參考:
沒有留言:
張貼留言