Linux Git Serverの立て方

まず、クライアントにGitをインストールします。

①git bashを起動して以下のコマンドをうち、SSH用のキーを作ります。

ssh-keygen -t rsa

C:\Users\tuser\.sshにid_rsaとid_rsa.pubが作られます。

②Linuxサーバでの作業

Tera Termなどでサーバにログインします。

面倒なのでスーパーユーザーにしときます。

Git用のユーザーを作ります

adduser git-user
passwd git-user

そして先ほど作ったキーを登録するにディレクトリを用意します。

su git-user
cd
mkdir .ssh

先ほど作ったキーファイルid_rsa.pubをWinSCPなどでgit-userのカレントへ送ります。

cat id_rsa.pub >> ~/.ssh/authorized_keys

これでキーが登録されました。
また、スーパーユーザに戻ってリポジトリを置くディレクトリを作成します。

mkdir /var/lib/git
cd /var/lib
chown git-user -R git
chgrp git-user -R git

このディレクトリの中に各リポジトリを作って運用します。

最後に/etc/passwdにgitのシェルのパスを追記します。

vi /etc/passwd
git:x:1000:1000::/home/git-user:/usr/bin/git-shell

パスが違う場合があるので一応調べてください。

which git-shell

③LinuxServerのリポジトリを作る

先ほど作った/var/lib/git/の中にリポジトリにするディレクトリを作ります。

mkdir /var/lib/git/jivagoo
cd /var/lib/git/jivagoo
git init --bare --shared

これでリポジトリが作られました。
でも./objectsと./refs/headsに書き込み権限がないので最初のpush時に怒られてしまいます。
なので書き込み権限を与えておきます。

chmod -R 777 ./objects
chmod -R 777 ./refs/heads

④クライアントGitの設定

管理者でメモ帳などのエディタを開き、以下のファイルに追記します

C:\Program Files\Git\etc\ssh\ssh_config
Host gitlocal
  User git-user
  HostName wspri.dip.jp
  IdentityFile ~/.ssh/id_rsa
  Port 22
  IdentitiesOnly yes

このサーバの場合はwspri.dip.jpですが、IPでも大丈夫です。

⑤TortoiseGitでの作業

pushする最初のソースのあるディレクトリに移動してリポジトリを作成します

ディレクトリの中に.git(隠しファイル)ができます。
続いてTortoiseGitの設定メニューでサーバーのリポジトリのパスを設定します。

コマンドでもいけます。

git remote add origin ssh://wspri.dip.jp/var/lib/git/jivagoo

これで最初にpushする準備ができました。

git bashでリポジトリを見てみます

OKのようなので最初のpushをします。

git push origin master

これでエラーが出なければリポジトリはできています。TortoiseGitでクローンして開発を進めてください。
また、push前にはpullして最新版をバックアップするのを忘れないでください。

UE4などプロジェクトのサイズが大きい場合はPushでOut of memoryなエラーが出てPushできない場合があります。

http://iranoan.my.coocan.jp/essay/pc/201610270.htm

↑を参考にパックファイルの上限を上げてさらに小分けにするとpushできるようです。※僕の環境では2gが上限らしい

git config --global core.packedGitLimit 1g 
git config --global core.packedGitWindowSize 1g 
git config --global pack.packSizeLimit 2g
git gc --aggressive --prune=now

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *