Convert source code from SVN to Git
Ngày càng nhiều công ty/dự án sử dụng Git để quản lý source code thay vì SVN như trước đây. Nên sau đây mình xin giới thiệu các bước để chuyển source code từ SVN sang Git mà vẫn giữ được các thông tin như history, branchs, tags…
Lấy danh sách tất cả các committer của SVN
Chạy command sau tại root folder nơi checkout source SVN.
1
|
svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > authors-transform.txt
|
Thông tin về các committer sẽ được lưu tại file authors-transform.txt.
Dùng git-svn để clone SVN repository
Chạy lệnh sau để clone source code SVN về folder có tên là temp.
1
|
git svn clone [SVN repo URL] --no-minimize-url --no-metadata -A authors-transform.txt --stdlayout temp
|
Tạo repository trên git
Bước này có nhiều cách làm (dùng lệnh hay command) phụ thuộc vào môi trường bạn sử dụng nên mình bỏ qua bước này.
Push source code lên git master.
Tại folder temp bạn chạy các command sau để push code lên git master.
1
2
|
git remote add origin [origin URL]
git push -u origin --all
|
Push các SVN branch lên git branch.
Chạy các command sau để push branch lên git.
1
2
|
for b in $(git for-each-ref --format='%(refname:short)' refs/remotes); do git branch $b refs/remotes/$b && git branch -D -r $b; done
git push -u origin --all
|
Leave a Reply