git鯖の構築 -1-
Ubuntu Server 11.04をインストールしたMac miniでGitサーバーを構築する。
kinneko@gitsv:~$ sudo apt-get install git Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: emacsen-common git-man liberror-perl Suggested packages: git-doc git-el git-arch git-cvs git-svn git-email git-daemon-run git-gui gitk gitweb The following NEW packages will be installed: emacsen-common git git-man liberror-perl 0 upgraded, 4 newly installed, 0 to remove and 81 not upgraded. Need to get 5278 kB of archives. After this operation, 12.5 MB of additional disk space will be used. (snip)
はいったバージョン。
kinneko@gitsv:~$ git --version git version 1.7.4.1
パッケージを最新に更新しておく。
kinneko@gitsv:~$ sudo apt-get update kinneko@gitsv:~$ sudo apt-get upgrade (snip) 78 upgraded, 0 newly installed, 0 to remove and 3 not upgraded. Need to get 47.2 MB of archives. After this operation, 225 kB of additional disk space will be used. (snip)
まだ、とりあえずの運用なので、IPアドレスはDHCPで。
更新は、LAN内から行ない、公開はhttpでダウンロードのみの予定。
kernel上がったな。再起動できるか確認しないと。
問題なく再起動できた。
まずは共有リポジトリを作る。
ディレクトリは、varに作るのが一般的なのかな?
kinneko@gitsv:~$ sudo mkdir -p /var/git/EVT/test.git kinneko@gitsv:~$ cd /var/git/EVT/test.git kinneko@gitsv:/var/git/EVT/test.git$ sudo git --bare init --shared Initialized empty shared Git repository in /var/git/EVT/test.git/
開発者グループを作って、ユーザーを登録し、オーナーを変更する。
kinneko@gitsv:/var/git/EVT/test.git$ sudo groupadd developer kinneko@gitsv:/var/git/EVT/test.git$ sudo usermod -G developer kinneko kinneko@gitsv:/var/git/EVT/test.git$ sudo chown root:developer -R ./
LAN内のLinuxマシンから、リポジトリにデータを登録する。
kinneko@BuildSV:~$ mkdir test kinneko@BuildSV:~$ cd test/ kinneko@BuildSV:~/test$ git init Initialized empty Git repository in /home/kinneko/test/.git/ kinneko@BuildSV:~/test$ touch test.dat kinneko@BuildSV:~/test$ ls -l total 0 -rw-r--r-- 1 kinneko kinneko 0 Jul 27 18:51 test.dat kinneko@BuildSV:~/test$ git add . kinneko@BuildSV:~/test$ git commit -m "Test Commit" [master (root-commit) 17aa57a] Test Commit 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.dat kinneko@BuildSV:~/test$ git log commit 17aa57a149b74d1c84f7ea71049ad2d120b61cc3 Author: kinneko <kinneko@gmail.com> Date: Fri Jul 27 18:53:16 2012 +0900 Test Commit
サーバーに登録する。
kinneko@BuildSV:~/test$ git remote add origin ssh://192.168.1.100/var/git/EVT/test.git kinneko@BuildSV:~/test$ git push origin master The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established. ECDSA key fingerprint is 74:72:ee:23:c0:29:29:a4:46:3f:6f:a7:81:f2:ff:b8. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.1.100' (ECDSA) to the list of known hosts. kinneko@192.168.1.100's password: Counting objects: 3, done. Writing objects: 100% (3/3), 206 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To ssh://192.168.1.100/var/git/EVT/test.git * [new branch] master -> master
ssh初回なので、鍵を受け入れるか聞かれた。
鍵を登録しておけば、パスワードもなしで同期できる。
サーバー側で登録を確認。
kinneko@gitsv:/var/git/EVT/test.git$ git log commit 17aa57a149b74d1c84f7ea71049ad2d120b61cc3 Author: kinneko <kinneko@gmail.com> Date: Fri Jul 27 18:53:16 2012 +0900 Test Commit
ちゃんと来ている。
ローカルで作ったものを破棄して、新しく同期してみる。
kinneko@BuildSV:~/test$ cd ../ kinneko@BuildSV:~$ rm -rf test/ kinneko@BuildSV:~$ git clone ssh://kinneko@192.168.1.100/var/git/EVT/test.git Cloning into test... kinneko@192.168.1.100's password: remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0) Receiving objects: 100% (3/3), done. kinneko@BuildSV:~$ cd test/ kinneko@BuildSV:~/test$ ls -l total 0 -rw-r--r-- 1 kinneko kinneko 0 Jul 27 18:58 test.dat kinneko@BuildSV:~/test$ git log commit 17aa57a149b74d1c84f7ea71049ad2d120b61cc3 Author: kinneko <kinneko@gmail.com> Date: Fri Jul 27 18:53:16 2012 +0900 Test Commit
問題なし。
ファイルを追加して同期してみる。
kinneko@BuildSV:~/test$ touch test2.dat kinneko@BuildSV:~/test$ git add test2.dat kinneko@BuildSV:~/test$ git commit -m "add test2.dat" [master 95f79c3] add test2.dat 0 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 test2.dat kinneko@BuildSV:~/test$ git push origin master kinneko@192.168.1.100's password: Counting objects: 3, done. Delta compression using up to 12 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 231 bytes, done. Total 2 (delta 0), reused 0 (delta 0) To ssh://kinneko@192.168.1.100/var/git/EVT/test.git 17aa57a..95f79c3 master -> master
問題なし。
sshサーバーさえ上がっていれば、ローカルにやるのとほとんど同じ。
とても簡単。