前回
開発環境
モチベーション
今まではメインPCでファイル変更→サブPCにSSH接続→サブPCで処理実行という手順をファイル変更毎に手動で行っていた。これは大変煩わしくスピード感に欠ける。そこで、ファイル変更を検知したらディレクトリを同期させるようにした。
コード
#!/bin/bash source ./.env # HOSTとDISTの定義ファイル fswatch ./ \ -v \ -e '.git/' \ -e '.gitignore' \ -e '.env' \ -e '.ssh' \ -e '.build/*' \ -e '.swiftpm/*' \ | \ xargs -I {} rsync \ -avz ./ $HOST:$DIST \ --exclude '.env' \ --exclude '.git' \ --exclude '.ssh' \ --exclude '.build' \ --exclude '.swiftpm' \ --rsh "ssh -F ./.ssh/config"
常にSSH接続した状態で上記のシェルスクリプトを実行しておけば、ファイル変更→サブPCでコマンド実行の2ステップで開発をイテレーションできる。
fswatchとrsyncでそれぞれexcludeさせているファイルやディレクトリは共通化できると良さそう。
lsyncdはmacOSとの相性が悪いらしい
リアルタイムなファイル同期にはlsyncdが候補に上がって試したが、どうやらmacOSと相性が悪いらしく断念した。
- https://github.com/lsyncd/lsyncd/issues/204
- https://github.com/lsyncd/lsyncd/issues/244
- https://github.com/lsyncd/lsyncd/issues/384
Warpの操作を手に覚えさせた
WarpとXcode、Warpの中でのメインPCとSSH接続しているサブPCのPaneの行き来が頻発するのでシュッとできるようにショートカットを設定して打ちまくっている。
ちなみに、CMD-SHIFT-2
はGitのGUIクライアントのFork*1を割り当てている。