顯示具有 SVN 標籤的文章。 顯示所有文章
顯示具有 SVN 標籤的文章。 顯示所有文章

2013年3月8日 星期五

Git 轉換版本庫到 SVN

From Evernote:

Git 轉換版本庫到 SVN

Clipped from: http://www.worldhello.net/2010/01/08/74.html
在Git版本庫上建立SVN關聯
git svn init -s svn版本庫路徑

取得SVN版本庫第一筆log
git svn fetch

列出所有分支
git branch -r

建立新的分支,並切換過去
git checkout -b trunk remotes/trunk

列出目前有多少分支,顯示自已現在在那個分支
git branch

列出該分支所有log (在命令模式下查看第一比記錄)
git log master
[假設取得第一筆log Hash為123abcd]

只合併該筆記錄
git cherry-pick 123abcd

將trunk從123abcd這筆記錄合併到master
git rebase --onto trunk 123abcd master

列出目前有多少分支,顯示自已現在在那個分支
git branch

切換到trunk這個分支
git checkout trunk

取消master最後一次的commit
git reset --hard master

將所有的commit送到svn上
git svn dcommit

---------------------------------------我是分隔線--------------------------------------

經過上面的同步後,以後想要在把最新的資料提交回SVN,操作可參考如下。

trunk為SVN主線 (實際情況還是要看當下想使用那條線)
切換到trunk
git checkout trunk

將SVN上的最後版本與git合併到上最新版本
git merge -s subtree master

將trunk合併後的資料倒回SVN
git svn dcommit


使用git svn指令初使化一個svn的trunk

From Evernote:

使用git svn指令初使化一個svn的trunk

如果想要用git-svn同步一個svn的trunk版本庫

可以使用:git svn init -T trunk 版本庫路徑

重點在 -T 這個指令

Git 與 SVN 版本庫資料整合

From Evernote:

Git 與 SVN 版本庫資料整合

為了避免破壞了Local版本庫資料,建議cloen一份出來做整合

複制一份local版本庫 ,在此命名為work
git cloen /work

設定SVN版本庫,路徑在此命名為svn://work(也有可能是http),-T trunk則是設定為主線
git svn init svn://work -T trunk

複制一份SVN版本庫回來
git svn fetch

.....
......
.......
........


找出二份版本庫的共同點並合併單點