ローカルネットワークのLinuxに中央リポジトリを作ったときのメモ

書いておかないと忘れそうなので備忘録がわりに「unfuddlegithubなどのホスティングサービスを利用しないでpush先を自前で用意する時」のメモを残しておきます。

状況の前提

色々と制約や条件があったりなかったり。
ここが変だよXXXということもあったりなかったり。
いろいろ降りかかってきます。

  • svnリポジトリが存在するがコミット・ブランチ作成ができない状態
  • 既存ソースに対してある程度の量のソースを書く必要がある
  • Windowsのローカルで作業を行う
  • root権限OKなCentOSの共用Linux機が使用できる

CentOSにgitをインストール

現時点で標準のyumにはgitは含まれてないので、下記サイトからyum用の外部リポジトリrpmをダウンロードします。
CentOSRHELは同じ。
古いバージョンのOS用も用意されています。

今回はCentOS5だったので「rpmforge-release-0.3.6-1.el5.rf.i386.rpm」を使いました。

rpmforge-release-0.3.6-1.el2.rf.i386.rpm Wed 17 Jan 2007 10 kB Red Hat EL 2.1 - i386
rpmforge-release-0.3.6-1.el3.rf.i386.rpm Wed 17 Jan 2007 16 kB Red Hat EL 3 - i386
rpmforge-release-0.3.6-1.el4.rf.i386.rpm Wed 17 Jan 2007 16 kB Red Hat EL 4 - i386
rpmforge-release-0.3.6-1.el5.rf.i386.rpm Fri 09 Mar 2007 16 kB Red Hat EL 5 - i386
Index of /rpmforge-release
http://dag.wieers.com/rpm/packages/rpmforge-release/

インストールして、軽く初期設定を行います。
この設定は好みかもしれませんが、デフォルトで有効にならないようにしておきます。「enabled = 0」

rpm -ivh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
vim /etc/yum.repos.d/rpmforge.repo

あと、sshでログインするので公開鍵認証をできるように設定をしておきます。

LinuxにGitをインストール

yumコマンドでインストール

# enabled = 0にしたので明示的にリポジトリを指定する
yum -y --enablerepo=rpmforge install git

subversionのアップデートやらperlライブラリなどの依存パッケージもインストールされました。

LinuxでのGit関係の作業

Linuxにgit configの設定とgitリポジトリを作ります。
まっさらなリポジトリを作成。

$ pwd /home/sarry_harry/git_rep/hogeproject
$ git init-db

git config初期設定。
Windowsのユーザと合わせておく必要があるようです。

グローバルに作っておく(ユーザに対して.gitconfig)

$ git config --global user.name sarry_harry
$ git config --global user.email sarry_harry@mail.local

またはリポジトリのconfigに追加しておきます。

$ pwd /home/sarry_harry/git_rep/hogeproject/.git
$ vim config
# [core]とかの設定がある
[user]
name = sarry_harry
email = sarry_harry@mail.local
~
~

WindowsでのGit関係の作業

remoteにLinuxに作ったリポジトリを追加します。

git remote add linux ssh://sarry_harry@192.168.0.100/home/sarry_harry/git_rep/hogeproject
# originとしても追加しておくとなにかと便利
git remote add origin ssh://sarry_harry@192.168.0.100/home/sarry_harry/git_rep/hogeproject

pagentなどで鍵を読み込んでおいてから、最後にpushします。*1

git push

Linux側でgit logを実行し、ログが表示されれば完了。
これで、バックアップ&中央リポジトリ(と決めておくだけ)の完成。
さら応用して、git-svnを使ってsvnリポジトリにブランチや随時コミットを行わず、最後にまとめてsvnコミットができそうな感じがします。*2
俺git使ってて良かったよー。と思った瞬間でした。


このメモを再び見る時が来た時、すんなりと設定できるかなぁ?

※参考にしたエントリー
http://ukstudio.jp/2008/07/27/ukstudio_controlled_git/

*1:既にローカルで作業中でリポジトリもあったのでその辺のメモは省略。最初にコミットしておく必要あり。

*2:本体のSVNに影響を与えずリポジトリを関連させて開発