Prezto の設定を複数PCで同期させる備忘録

Environment
Photo by hyt.

シェル zsh の便利な設定をまとめて導入可能な prezto の設定を複数 PC で同期させるための細工についての備忘録です.なお,Prezto の導入や設定については

Prezto 備忘録
シェル zsh の便利な設定をまとめて導入可能な prezto 導入(はともかくとして)・維持のやり方をいつも忘れてしまうのでメモ.まず,Prezto の元ページは,ですね.初期設定は,上のページを見れば書いてありますが,git clone...

とか

Prezto を mintty で使うためのフォント設定備忘録
シェル zsh の便利な設定をまとめて導入可能な prezto を Cygwin の mintty で使うときに,綺麗なフォントが使えるようにするための備忘録です.これ以外の prezto 関係の備忘録は,からどうぞ.なお,以下の不具合は修...

をご覧ください.

今回の目標は以下の通りです.

  1. Cygwin と MacOS で同じものを使う
  2. Git で管理する(私の場合はローカルに GitLab サーバを立てています)
  3. 本家の更新に追従できるようにする.

Cygwin と MacOS で同じものを使う

単に if で OSTYPE を判定してやれば良いだけですね.例えば

if [[ "$OSTYPE" == darwin* ]]; then
  alias cygstart='open'
fi

if [[ "$OSTYPE" == cygwin* ]]; then
  alias open='cygstart'
fi

を ~/.zshrc に設定すれば良い訳です.なお,Cygwin の cygstart と MacOS の open は互いに同じようなコマンドで,私の場合,どっちでも使えるよう実際に上のような設定を行っています.

Git で管理する & 本家の更新に追従できるようにする

まず,Prezto を使う最初の(1台目の)PC の設定は以下の通りです.なお,ローカルに立てている私的な Gitlab のサーバ名を gitlab.*****.local としておきます.

  • ローカルに Prezto を clone する.
  • origin の push 先を GitLab に向ける.
$ git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
$ cd .zprezto
$ git remote set-url --push origin https://gitlab.****.local/hyt/prezto.git
$ git remote -v
origin  https://github.com/sorin-ionescu/prezto.git (fetch)
origin  https://gitlab.****.local/hyt/prezto.git (push)
  • ローカルに hyt ブランチを切り,チェックアウトする.
  • remote のエイリアスとして hytorigin を定義し,push, pull 共に GitLab に向ける.
  • zprofile zshrc 等のリンクをホームディレクトリに張る.
  • 一旦,hyt ブランチの内容を GitLab に push する.なお,-u オプションにより hyt ブランチの上流ブランチを hytorigin/hyt に設定する.
  • master ブランチを GitLab に push する.
$ git branch hyt
$ git checkout hyt
$ git remote add hytorigin https://gitlab.****.local/hyt/prezto.git
$ git remote -v
hytorigin       https://gitlab.****.local/hyt/prezto.git (fetch)
hytorigin       https://gitlab.****.local/hyt/prezto.git (push)
origin  https://github.com/sorin-ionescu/prezto.git (fetch)
origin  https://gitlab.****.local/hyt/prezto.git (push)
$ cd ~/.
$ setopt EXTENDED_GLOB
$ for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
   ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
  done
$ cd .zprezto
$ git push -u hytorigin hyt
$ git checkout master
$ git push
  • それぞれのブランチの上流ブランチを確認
$ git branch -vv
* hyt    4f19700 [hytorigin/hyt] Add missing syntax highlighter
  master 4f19700 [origin/master] Add missing syntax highlighter
  • hyt ブランチに個人的な prezto の設定を反映させ,commit し,GitLab に pull する.
# 設定追加後
$ git checkout hyt
....
$ git add -A
$ git commit
$ git push

そして,2台目以降の PC は最初の PC と同じ状態になるよう以下の通り設定します.

$ git clone --recursive https://gitlab.****.local/hyt/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"
$ cd .zprezto
$ git remote rename origin hytorigin
$ git checkout -b master hytorigin/master
$ git remote add origin https://github.com/sorin-ionescu/prezto.git
$ git remote set-url --push origin https://gitlab.****.local/hyt/prezto.git
$ git checkout hyt

何でこんな面倒なことをしてるのか?

要するに本家とローカルの Git リポジトリを共存させたいからです.上の設定だと,

  • 本家: master ブランチ
  • ローカル: hyt ブランチ

の区分けとなり,通常は hyt ブランチを使う.個人的な alias の変更なんかは hyt ブランチで行いますので,hyt ブランチを個人的な Git サーバに push し,それを他の PC から pull すれば設定を同期できる.

じゃあ,本家がアップデートされたらどうするのかと言うと,

  1. master ブランチに切り替え pull & push
  2. hyt ブランチに戻り master を merge & push
  3. 他の PC で hyt ブランチを pull

すれば良い.本家を同期させる PC をどれか1台にしてしまえばこんな面倒なことする必要無いのですが,こういう設定のアップデートって,気が付いた時に手元で今使っている PC ですぐにやってしまいたい.だからこんな面倒なことをしている訳です.まぁ,何となく master ブランチの push は蛇足な気もしますが,面倒なのでこれで良いことにしておきます.

なお,これは以下のページを大いに参考にさせて頂きました.

Git で「追跡ブランチ」って言うのやめましょう - Qiita
TL;DR突然ですがクイズです。「追跡ブランチ (tracking branch)」という言葉の使い方で正しいのはどれだと思いますか?origin/master はリモートリポジトリの mast…

私も「追跡ブランチ」って言うのをやめたいと思います.

Environment
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました