(A)WEBサーバ | (B)開発/検証/バックアップ機 | |||||
---|---|---|---|---|---|---|
(1) | /opt/git/◆◆◆.git | |||||
(2) | ★★★ | |||||
<<-----ssh ssh----->> |
||||||
(3) | △△△◆◆◆.git | |||||
(4) | ★★★ | |||||
★★★:作業ディレクトリ(絶対パスが安全)
◆◆◆:リポジトリ名(~.git)
●(A)でマスター用のベアリポジトリを置く場所を本家に習って /opt/git に。
●(B)で マスター用ベアリポジトリから 作業ディレクトリを作成。
●(B)で バックアップ用ベアリポジトリを作る。
●(A)で作業ディレクトリを作る。
.git で始まるファイルへのアクセスを禁止
.git/ フォルダ以下のファイル・ディレクトリへのアクセスを禁止
が必要 ---(4)
●(B)でバックアップする場合
●(A)で(3)へバックアップする場合
以降、(B)の★★★で
git version 1.7.1 / CentOS6.9
◆◆◆:リポジトリ名(~.git)
●(A)でマスター用のベアリポジトリを置く場所を本家に習って /opt/git に。
$ sudo mkdir /opt/git $ sudo chown admin:wheel /opt/git $ chmod g+w /opt/git●(A)でマスター用のベアリポジトリを作成(作業ディレクトリの設定が楽)。
$ mkdir /opt/git/◆◆◆.git $ git --git-dir=/opt/git/◆◆◆.git init --bare---(1)
●(B)で マスター用ベアリポジトリから 作業ディレクトリを作成。
$ git clone USER@HOST:/opt/git/◆◆◆.git ★★★(★★★を省略するとカレントディレクトリに◆◆◆ができる) ---(2)
●(B)で バックアップ用ベアリポジトリを作る。
$ git clone --mirror USER@HOST:/opt/git/◆◆◆.git △△△◆◆◆.git△△△:(B)内の /backup/ や /opt/git/ など ---(3)
●(A)で作業ディレクトリを作る。
$ git clone /opt/git/◆◆◆.git ★★★(4)の★★★がWEBのドキュメントルートの場合 /etc/httpd/conf/httpd.conf で
.git で始まるファイルへのアクセスを禁止
.git/ フォルダ以下のファイル・ディレクトリへのアクセスを禁止
が必要 ---(4)
●(B)でバックアップする場合
$ git --git-dir=△△△◆◆◆.git fetch --allcron などで定期的にバックアップする場合、最後のバックアップから障害時までの更新データを失うので注意。
●(A)で(3)へバックアップする場合
$ git --git-dir=/opt/git/◆◆◆.git push --mirror USER@HOST:△△△◆◆◆.git障害時のリカバリは バックアップ用ベアリポジトリから clone。
$ git clone USER@HOST:△△△◆◆◆.git ★★★
以降、(B)の★★★で
$ cd ★★★ $ git pullコンテンツを設置しでベアリポジトリを更新
$ git add . $ git commit $ git push(A)でリリースするには
$ git --git-dir=★★★/.git pull
git version 1.7.1 / CentOS6.9