何気にrita.xyzのディレクトリにGitのローカルレポジトリを構築してバージョン管理するようにしてみた。リモートレポジトリは設定していない。
前にrita.xyzが手動更新であると書いたが、その手動更新用スクリプトも大幅に変更。スクリプトを叩いた時にgit add --allとgit commit -aをするようにした。commitをコメント無しなどの理由でキャンセルした場合や変更がない場合は--forceオプションを付けない限りS3との同期は行わない設計。
コード
以下更新用スクリプトのコード(Gistをembedしてみる)。ほぼ適当に組んだコードなので変な所があっても気にしないように。
gist.github.com
コードについてとかいろいろ
- 5行目でif [ -n $1 ];とすると何故か条件合致となり6行目のif [ $1 != "--force" ];で「単項演算子が予期されます」と警告が出てしまうのでif [ ! -z $1 ];としている。
- ${0##*/}という謎の文字列はスクリプト自身のファイル名を$0(スクリプトファイルへのフルパス)から取り出すためのアレ。$(basename $0)でも可。
- カレントディレクトリがrita.xyzでなくても更新できるようにgitのオプションに--git-dirと--work-treeを付けて作業を行うディレクトリを指定している。
- s3cmdで更新の際は--exclude="${SYNCPATH}/.git/"を付けてGitディレクトリをアップロード対象から除外する。
- 万一revertなどでコミットを戻した後S3側も同期させたい時には--forceオプションの出番だったりする。
- え?Gitで管理するならGitHub Pagesで公開しろって?アーアーキコエナイキコエナイ
- そもそもGitは奥深くてあまり理解できてない。
- 記事画像はgitkというGUIツールでコミット履歴を出した様子。