LoginSignup
1
0

More than 3 years have passed since last update.

git-svnでSVN→gitする方法

Last updated at Posted at 2021-03-07

現場が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でも可能

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0