現場がSVNリポジトリを使用していたので、ブランチで分けて開発をすすめて行きたかったのと
その後結局gitリポジトリに移行することになったので、この方法でリポジトリ移行をしました。
git-svnを使って、SVNリポジトリにあるコミットログごとごっそりgitリポジトリに移行しましたので備忘録です。
(コマンドとTortoiseGit使用)
※コミットログやデータ自体が多い場合は10個ずつなどで分割しながらじゃないとエラーになってしまいますので注意です。
参考サイト:
https://www.karumado.com/2018/09/git-svnsubversiongit.html
https://qiita.com/toshikiw/items/56c57d12566cffa9e3fe
####1.git-svnでSVNリポジトリをclone
####2.ブランチの確認
git branch -a
####3.予め用意しておいたgitのリモートリポジトリをリモート設定に追加(add)
git remote add origin [リポジトリURL]
####4.gitのリモートリポジトリのほうにpush
git push -u origin --all
####5.SVNで管理できてた空のディレクトリをgitでも管理する
→https://improve.backlog.jp/wiki/DEVELOPE/git%E3%81%A7%E7%A9%BA%E3%81%AE%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%82%92%E7%AE%A1%E7%90%86%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E3%81%8D
=======================
ここからさきは、間違えてSVN側にコミットしちゃわないようにSVNの設定を削除しておく方法
####6.SVNの設定ファイルやgit-svnの設定ファイルを消す
・今のブランチがmasterであることを確認
・必要なSVNのブランチはgitのブランチとして作り直しておく
・ローカルのgit-svnブランチの削除
git branch -D [ブランチ名]
・リモートのsit-svnブランチの削除
設定ファイルからこの部分をまるごと削除
[svn-remote "svn"]
url = <svnレポジトリurl>
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/*
tags = tags/*:refs/remotes/tags/*
・リモートリポジトリ側からも削除
バックログの場合はブランチタブから削除可能
コマンドの場合は
git branch -r -d remotes/[trunk, tagsとか]
・ガベージコレクトする
git gc
・metadata削除
rm -rf .git/svn
rm -rf .svn
#####おまけ gitkeepのはなし
参考:
https://blog.fukata.org/archives/6577
http://note.mokuzine.net/git-gitkeep/
gitは空のディレクトリはバージョン管理できない仕組みになっているので、
空のディレクトリには「.gitkeep」というファイルをおいて、それを管理することでバージョン管理対象にします。
ex)logディレクトリ
空のディレクトリの場合には.gitkeepを作成するシェル
for d in $(find [対象のディレクトリ] -type d -empty); do touch "$d/.gitkeep"; done
■ディレクトリは管理したいけど、その中のファイルまでは管理したくない場合
ex) logディレクトリは管理しておきたいけど、中のログファイルは管理したくない
.gitignoreファイル(バージョン管理を無視するファイルの設定ファイル)を下記の様に編集(なければ作成)
path/to/*
!.gitkeep
※無視ファイルの追加はGUIでも可能