カルボナーラ街道

計測と観察

MacBook Pro M2でCコンパイラ作成入門をやるための開発環境構築: fswatchでファイル変更検知してrsyncで同期する

前回

tokizuoh.hatenablog.com

開発環境

モチベーション

今まではメイン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と相性が悪いらしく断念した。

Warpの操作を手に覚えさせた

WarpXcodeWarpの中でのメインPCとSSH接続しているサブPCのPaneの行き来が頻発するのでシュッとできるようにショートカットを設定して打ちまくっている。

scrapbox.io

  • Warp: RaycastのHotkey CMD-SHIFT-1
    • Paneの前後移動 CMD-[, CMD-]
  • Xcode: RaycastのHotkey CMD-SHIFT-3

ちなみに、CMD-SHIFT-2 はGitのGUIクライアントのFork*1を割り当てている。

参考