RubyForgeのSubversionレポジトリからGitHubへの引越
RubyForge.orgがサービスを縮小させつつあるので、 そのSubversionレポジトリをGitHubに移動させる。 ssh-keyは双方について適宜設定されているものとする。
もっと冴えたやりかた等、ご意見募集中。
参考文献
- http://dqn.sakusakutto.jp/2012/10/svn-git-github-migration.html 仕事で使ってる巨大SVNレポジトリをGithubに移管するためにやったことまとめ
- https://www.atlassian.com/ja/git/migration Gitチュートリアル Gitへの移行
- http://qiita.com/ironsand/items/6c301fef730d53f35bc3 git push -u オプションの意味
Subversionレポジトリの様子
trunkは1.1MB程度。 サブプロジェクトを登録することを考えてulmul/ulmulとしておいたが、 結局ulmul/sub_projectのようなものは作らなかった。
$ pwd
/Users/takeshi/ruby/ulmul/trunk
$ svn info
Path: .
Working Copy Root Path: /Users/takeshi/ruby/ulmul/trunk
URL: svn+ssh://t-nissie@rubyforge.org/var/svn/ulmul/ulmul/trunk
Repository Root: svn+ssh://t-nissie@rubyforge.org/var/svn/ulmul
Repository UUID: 591d1d34-8138-47ad-a474-ac4e47b36248
Revision: 186
Node Kind: directory
Schedule: normal
Last Changed Author: t-nissie
Last Changed Rev: 186
Last Changed Date: 2015-01-13 22:08:49 +0900 (火, 13 1 2015)
$ du -sh .
1.1M .
とりあえずgit svn clone
/Users/takeshi/authors.txtを用意。 このファイルの場所は .git/config に書かれるのでいつでも変更可能。
t-nissie = t-nissie <t-nissie@example.com>
とりあえずgit svn clone。 ディレクトリulmulが作られるはず。
$ git svn clone --stdlayout --authors-file=/Users/takeshi/authors.txt --prefix=svn/ svn+ssh://t-nissie@rubyforge.org/var/svn/ulmul/ulmul
Initialized empty Git repository in /Users/takeshi/tmp/ulmul/.git/
Using higher level of URL: svn+ssh://t-nissie@rubyforge.org/var/svn/ulmul/ulmul => svn+ssh://t-nissie@rubyforge.org/var/svn/ulmul
r2 = 2d7f3204a9785fc687fa2c0337d9f52bd0f4cbae (refs/remotes/svn/trunk)
A slidy.js
A ruby.jpg
A ulmul.gemspec
A Rakefile
:
$ cd ulmul
$ ls -la
そのリポジトリをgithubにpush
GitHubに中身のないリポジトリを作ってそこにpushする。 2行目の--set-upstreamにより、次回から git push が git push origin master と等価になる。
$ git remote add origin git@github.com:t-nissie/ULMUL.git
$ git push --set-upstream origin master
$ git branch -a
* master
remotes/origin/master
remotes/svn/aasm-branch
remotes/svn/tags/0.4.2
remotes/svn/tags/0.5.0
remotes/svn/trunk
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
引越し先はここ → https://github.com/t-nissie/ULMUL
他所でgit clone
もちろん他所でgit cloneできる。
$ git clone git@github.com:t-nissie/ULMUL.git ulmul