目標
バックアップや新バージョンのXAMPPへの移行、複数のPCでの共通化のために、XAMPPの設定ファイルをGitで管理します。
たとえばphp.ini
やhttpd.conf
などです。
htdocs/
の中身やMySQLのデータは対象外です。別途バックアップしてください。
環境
- Windows 10
- XAMPP 7.2.2
- Git 2.16.1
Gitで管理する
C:\xampp
でリポジトリを作成します。
最初のコミットの前に、管理対象を絞り込むために.gitignore
を作成します。
除外すべきファイルが多すぎるので、一旦xammp/
内を全て除外した後で、必要なファイルの除外だけを打ち消します。
必要なファイルへの経路にあるフォルダの除外も解除しなければならないので、ちょっと面倒です。
# 一旦すべてを除外する
*
# 必要なファイルだけを管理対象とする
## このファイル自体
!.gitignore
## 復元の手順などをメモしたリードミー
!README.md
## PHP設定ファイル
!php/
!php/php.ini
## Apache設定ファイル
!apache/
!apache/conf/
!apache/conf/httpd.conf
!apache/conf/extra/
!apache/conf/extra/httpd-ssl.conf
!apache/conf/extra/httpd-vhosts.conf
## 自作のSSLサーバ証明書 (オレオレ証明書)
!apache/conf/ssl.crt/
!apache/conf/ssl.crt/my-server.crt
!apache/conf/ssl.key/
!apache/conf/ssl.key/my-server.key
An optional prefix "!" which negates the pattern; any matching file excluded by a previous pattern will become included again. It is not possible to re-include a file if a parent directory of that file is excluded. Git doesn’t list excluded directories for performance reasons, so any patterns on contained files have no effect, no matter where they are defined.
訳: 任意の接頭辞"!"は除外パターンを打ち消します。つまり、それまでのパターンで除外されたけれどもこの接頭辞のパターンに当てはまるファイルは、再び管理対象に含まれることになります。
ただし、そのファイルの親ディレクトリが除外されている場合は不可能です。
Gitはパフォーマンス上の理由で、除外されたディレクトリを記録しません。
よって、除外されたディレクトリ内のファイルに対するパターンは、どこで定義されても無効です。
新環境へ移行する
- 下記のファイルとフォルダを退避。
.git/
.gitignore
- 旧XAMPPをアンインストール。
- 新XAMPPをインストール。
- 退避させていたファイルとフォルダを戻す。
- Git GUIでdiffを表示し、衝突を修正する。
たいていはphp.ini
だけを修正することになるはず。
そこで、下記のようにする。- 新しい
php.ini
を退避。 -
git reset --hard <最後のコミット番号>
を実行。 - 退避させていた
php.ini
を戻す。 - diffで見比べてひとつずつ修正。
- 新しい
- 動作確認。
- 問題がなければコミット。