LoginSignup
31
30

More than 5 years have passed since last update.

git-svn のレポジトリからsvnを抜く

Last updated at Posted at 2012-10-16

git-svn を使って svnを使ってたけど svnからgitへ移行してsvnがいらなくなった

というかGUIフロントエンドのSourceTreeが使えないgit-svnを実行してCPUとか使いまくるのでsvnを外すことにした

手順

git-svnなレポジトリにgitのレポジトリを追加する

% git remote add -m master origin <git リモートレポジトリ> 

-m masterはリモートのmasterブランチをHEADに設定するオプション
master ブランチが既にある場合、一度masterブランチを削除してから
git リモートレポジトリのmasterをcheckoutする

ローカルのgit-svnブランチを削除

% git branch -l
% git log --all --graph --name-status
% git branch -D <branch name>
  1. git branch でブランチ名を確認
  2. ログを確認して消して問題なければ
  3. ブランチの削除

リモートのgit-svnブランチを削除

ローカルのブランチを削除してもgit-svnのリモートブランチが残る
ログとかにも出てくるので削除する

...
[svn-remote "svn"]
        url = <svnレポジトリurl>
        fetch = trunk:refs/remotes/trunk
        branches = branches/*:refs/remotes/*
        tags = tags/*:refs/remotes/tags/*
...

git-svnのsvnレポジトリの設定(↑)を削除

% git branch -r -d trunk
% for b in $(git branch -r|grep tags); do git branch -r -d $b; done 

svnのtrunkはremotes/trunkブランチになるので削除
svnのtagsはtagsのプレフィックスを付けたブランチになるのでそいつを削除
svnのbranchesは使ってなかったけど その場合もgit branch -rで確認して削除

ガベージコレクトしておく

git-svnのオブジェクトへの参照が消えたはずなので

% git gc

で不要領域を回収しておく

git-svnのmetadataを削除

.git/svn にgit-svnのメタデータ(.git/svn/.metadata)が残っているので.git/svnごと削除

rm -rf .git/svn
31
30
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
31
30