Subversion上にあるリポジトリをgithubへ公開する

Git

この記事は 2013-03-18に STBBS.NET BLOGから移動されました

次の SCMといえば gitか hgか、という話になるとおもうが、世の中的には”やっと最近 Subversionを知りました”みたいな人々もかなりたくさん居るため、そんな中で分散SCMが十分認知されているとはイマイチ言いがたい。かくいう私もまだ分散型SCMに移行できておらずもっぱら Subversionである。

が、githubという面白いサービスがあって、それを使いたいので Subversion上にあるリポジトリをどうやったら githubで公開出来るか調べてみたところ、いったん Subversionのリポジトリからクローンという形で gitのローカルリポジトリを作り、それを githubに pushする方法でそれっぽいことが出来たので手順を示しておく。

gitについての理解が足りないとおぼしき部分が文中に散見されるかもしれないが容赦されたし。

前提

  • ローカルにsubversion, gitはインストール済み (GentooならUSE="subversion" で emerge dev-util/git)
  • githubにサインアップしておりSSHの公開鍵が登録済み
  • github上で空のプロジェクト(リポジトリ)作成済み

まずは、下記のコマンドで Subversionのリポジトリからコンテンツをローカルへコピーする。

git svn clone SVNリポジトリURL

もし trunk, tags, branchesを切ってあるなら下記のように -T -b -t オプションを付ける。

git svn clone -T trunk -b branches -t tags SVNリポジトリURL

これで SVNのクローンが gitのローカルリポジトリとして新規に作成される。

次に github上で作成済みの空リポジトリを、このリポジトリのリモートとして追加する。

git remote add origin git@github.com:ユーザ名/リポジトリ名.git

続いて、github側(origin) に、こちら(master)のリポジトリ内容をプッシュする

git push origin master

ここまでで githubへの公開完了。ブラウザからは http://github.com/ユーザー名/リポジトリ名/ でアクセスできるようになる。

Subversion側で行われた変更をローカルの gitリポジトリに反映させるには、

git svn rebase

とする。これをさらに githubへ反映させるには、再度プッシュを行えば良い。

同じカテゴリの記事

githubから httpsでcloneしてしまったリポジトリの originを sshに変更する 2013年11月4日
100MB超のファイルをコミットしてしまい githubに pushを拒否された時 2013年10月17日
公開してはいけないファイルを誤ってgitに追加してしまった場合 2009年1月1日

お勧めカテゴリ

英語でアニメ観ようず
なじみ深い日本製アニメの英語版DVDで、字幕と音声から英語を学びましょうという趣旨のシリーズ記事です。
ScalaのようでJavaだけど少しScalaなJSON API
Scalaと Spring Frameworkを使って REST的なJSON APIを実装してみましょう。
ドクジリアン柔術少女 すから☆ぱいそん
代表 嶋田大貴のブログです。写真は神仏に見せ金をはたらく罰当たりの図