SVNをGITに移行しようとした時、どうしても失敗したので流れをメモ
SVNの構成:
SVNルート:http://SVNのIPアドレス:ポート番号/svn/root
フォルダ構成:
/branches/Project_A/YYYYMMDD_release/src
/branches/Project_A/YYYYMMDD_release/src
/branches/Project_B/YYYYMMDD_release/src
/branches/Project_B/YYYYMMDD_release/src
/tags
/trunk/Project_A
/trunk/Project_B
GITの構成:(想定)
remotes/origin/master
remotes/origin/master_YYYYMMDD_release(branches分)
remotes/origin/master_YYYYMMDD_release(branches分)
今回の目標
1.Project_AのみをGITに移行
2.GITのフォルダ名を trunk ではなく master にしたい
***大事なのは手順1・2のみ 以降はいろんなサイトに書いてあるからそっちを見る事
手順1:(いろんなサイトに書いてあるやつ)gitbashで実行する → 作業フォルダはどこでも良い
【git svn init -s http://SVNのIPアドレス:ポート番号/svn/root/trunk --trunk="Project_A/" --branches="" --tags=""】
→ branchesとtagsは不要なので空白設定
-s の後ろと、--trunk で参照SVNパスになっていれば良い
手順2:
実行フォルダ/.git/config ファイルをテキストエディタで開く
ポイント1:fetch は【SVNのリポジトリの場所:Gitのリポジトリの場所】になる…はず…
なので、ここのパスを好きなように変えれば、SVNのどこのプロジェクトを移行したいか好きに決めれます。
同じようにGITのどこへ移行したいかも好きに決めれます。【trunk→master】の様に
ポイント2:branches と tags を空白にしているのでファイルに出力されません。
編集前:
編集後:
手順3:
gitbash で 【git svn fetch】を実行
→ 時間が掛ります
手順4:3が終わったら
gitbash で 【git svn rebase】を実行
SVNのリポジトリをGIT側に変換します?(たぶんそんなやつ)
手順5:4が終わったら
【git remote add origin http://ユーザ名@GITのIPアドレス:ポート/r/Project_A.git】
Project_AはGITのリポジトリを先に作成しておきます。
手順6:5が終わったら
【git push -u origin --all】
でGITにソースをpushします
手順7:6が終わったら
後は通常通りクローンして開発を開始してください。
(masterしかないから、developを作る所からかね)
*****************************************************
上記で、trunk のソースは移行出来ます。
で同じ手順で branches フォルダの特定ブランチも master_YYYYMMDD_release という名まで移行出来ます
(作業フォルダは新しく作る事)
結果
1.面倒
2.1つのブランチごとにフォルダ元・先を明確に移行できる
3.GIT側に Branches フォルダや tags フォルダなんていらねーンだよ
4.全部移行後に Branches や tags のブランチ切りなおして、Branches や tags フォルダをリモートから消せばいいんじゃね?orz
以上!
検索用:GIT SVN 以降 フォルダ指定 フォルダ名変更 指定フォルダのみ 指定フォルダだけ
SVNの構成:
SVNルート:http://SVNのIPアドレス:ポート番号/svn/root
フォルダ構成:
/branches/Project_A/YYYYMMDD_release/src
/branches/Project_A/YYYYMMDD_release/src
/branches/Project_B/YYYYMMDD_release/src
/branches/Project_B/YYYYMMDD_release/src
/tags
/trunk/Project_A
/trunk/Project_B
GITの構成:(想定)
remotes/origin/master
remotes/origin/master_YYYYMMDD_release(branches分)
remotes/origin/master_YYYYMMDD_release(branches分)
今回の目標
1.Project_AのみをGITに移行
2.GITのフォルダ名を trunk ではなく master にしたい
***大事なのは手順1・2のみ 以降はいろんなサイトに書いてあるからそっちを見る事
手順1:(いろんなサイトに書いてあるやつ)gitbashで実行する → 作業フォルダはどこでも良い
【git svn init -s http://SVNのIPアドレス:ポート番号/svn/root/trunk --trunk="Project_A/" --branches="" --tags=""】
→ branchesとtagsは不要なので空白設定
-s の後ろと、--trunk で参照SVNパスになっていれば良い
手順2:
実行フォルダ/.git/config ファイルをテキストエディタで開く
ポイント1:fetch は【SVNのリポジトリの場所:Gitのリポジトリの場所】になる…はず…
なので、ここのパスを好きなように変えれば、SVNのどこのプロジェクトを移行したいか好きに決めれます。
同じようにGITのどこへ移行したいかも好きに決めれます。【trunk→master】の様に
ポイント2:branches と tags を空白にしているのでファイルに出力されません。
編集前:
[svn-remote "svn"] url = SVNのIPアドレス:ポート番号/svn/root fetch = trunk/Project_A:refs/remotes/origin/trunk
編集後:
[svn-remote "svn"] url = SVNのIPアドレス:ポート番号/svn/root fetch = trunk/Project_A:refs/remotes/origin/master
手順3:
gitbash で 【git svn fetch】を実行
→ 時間が掛ります
手順4:3が終わったら
gitbash で 【git svn rebase】を実行
SVNのリポジトリをGIT側に変換します?(たぶんそんなやつ)
手順5:4が終わったら
【git remote add origin http://ユーザ名@GITのIPアドレス:ポート/r/Project_A.git】
Project_AはGITのリポジトリを先に作成しておきます。
手順6:5が終わったら
【git push -u origin --all】
でGITにソースをpushします
手順7:6が終わったら
後は通常通りクローンして開発を開始してください。
(masterしかないから、developを作る所からかね)
*****************************************************
上記で、trunk のソースは移行出来ます。
で同じ手順で branches フォルダの特定ブランチも master_YYYYMMDD_release という名まで移行出来ます
(作業フォルダは新しく作る事)
結果
1.面倒
2.1つのブランチごとにフォルダ元・先を明確に移行できる
3.GIT側に Branches フォルダや tags フォルダなんていらねーンだよ
4.全部移行後に Branches や tags のブランチ切りなおして、Branches や tags フォルダをリモートから消せばいいんじゃね?orz
以上!
検索用:GIT SVN 以降 フォルダ指定 フォルダ名変更 指定フォルダのみ 指定フォルダだけ