[Git] SVN から Git へ移行する

もろもろ試してみました。

Contents

リポジトリを引き継ぐ

一般的にはリポジトリを引き継ぐことが多いと思います。
どんな方法があるのか。

git svn

svn2git

Bitbucket

機能があるよう。

Bitbucket 2013-08-16

Bitbucket インポーター

もろもろ分からずあきらめました。

Bitbucket

Site

できませんでした。
ローカルの場合は、どう指定するんでしょうか?

Bitbucket 2013-08-16 13-41-12

SourceTree

途中でエラーが出て止まってしまいました。

Bitbucket 2013-08-16 13-49-28

git svn を使う

% git svn clone file:///Users/***/svn/svn2git svn2git_new
Initialized empty Git repository in /Users/***/projects/svn2git_new/.git/
    A   tests/application/controllers/IndexControllerTest.php
    A   tests/bootstrap.php
    A   tests/phpunit.xml
    A   .zfproject.xml
    A   application/Bootstrap.php
    A   application/controllers/IndexController.php
    A   application/controllers/ErrorController.php
    A   application/configs/application.ini
    A   application/views/scripts/index/index.phtml
    A   application/views/scripts/error/error.phtml
    A   docs/README.txt
    A   public/.htaccess
    A   public/index.php
W: +empty_dir: application/models
W: +empty_dir: application/views/helpers
W: +empty_dir: library
W: +empty_dir: tests/library
r1 = 9fafce44d07d1b9793f809d4c28d625449333056 (refs/remotes/git-svn)
    A   docs/add.txt
r2 = 3d7b108e55818610f3e51e75963984d2e2a4bca6 (refs/remotes/git-svn)
Checked out HEAD:
  file:///Users/***/svn/svn2git r2
creating empty directory: application/models
creating empty directory: application/views/helpers
creating empty directory: library
creating empty directory: tests/library

引き継げているようです。

% git log
commit 3d7b108e55818610f3e51e75963984d2e2a4bca6
Author: *** <***@b14cf2f6-1541-407f-a031-d034b2552f5d>
Date:   Fri Aug 16 01:53:30 2013 +0000
    add add.txt
    git-svn-id: file:///Users/***/svn/svn2git@2 b14cf2f6-1541-407f-a031-d034b2
commit 9fafce44d07d1b9793f809d4c28d625449333056
Author: *** <***@b14cf2f6-1541-407f-a031-d034b2552f5d>
Date:   Fri Aug 16 01:35:39 2013 +0000
    initial import
    git-svn-id: file:///Users/***/svn/svn2git@1 b14cf2f6-1541-407f-a031-d034b2

関連ディレクトリの削除

リポジトリを引き継ぐ必要がなければ、削除して git init すれば良いですね。
下記の方法でディレクトリを作ったとして後述のとおり。

.svn ディレクトリを削除

プロジェクトディレクトリへ移動。.svn を探す。
(2つの方法をメモ)

% find ./ -name ".svn"
$ find.-typed-name.svn

.svn を削除する。

% find ./ -name ".svn" | xargs rm -R
$ find.-typed-name.svn-print0|xargs-0 rm-rf

リポジトリを削除

~/svn にあるレポジトリを削除する。

% rm -rf ~/svn

補遺

政治的理由で Subversion つかうこともあるかなぁ。