環境構築

【Keyboard Maestro】マクロ同期ファイルを同一Mac内の複数アカウントでGit管理してみた

Keyboard Maestro、複数端末でマクロを同期させる機能があったんですね。
クラウド経由で同期用のファイル(例えばmacros.kmsync)を同期させる想定のようです。

これを利用して、同一PC内の複数アカウント間でGit管理してみることにしました。
概念図がこちらです。

クラウド自動同期は便利だけど、履歴の管理がしにくいのが難点。
なので、Git管理したい。
自分用の設定ファイルをGitHubとか外部リポジトリで管理するのは抵抗がある。
なので、PC内にリモートリポジトリを作成する。
といった事情です。

以下、手順です。

1. 最初に。

まずはバックアップを。
同期設定をした場合、すべてのマクロデータが一瞬で置き換わります。
泣かない前のバックアップを。

2. 親となる、アカウントA側の設定をする

2-1. 同期用ファイルを作成する

「Keyboard Maestro」→「Preferences」で「Sync Macros」のチェックを入れます。

ダイアログが表示されるので、「Create New」で適宜名前をつけてkmsyncファイルを生成します。今回はmacros.kmsyncとします。

この時、専用のフォルダを作成してその中に格納してください。このフォルダがAのローカルリポジトリになります。
今後、マクロを編集する度に随時macros.kmsyncに反映されるようになりました。
git init してコミットしておきましょう。

2-2. A内にリモートリポジトリを作る

任意の場所にリモートリポジトリ用のディレクトリを作り、ターミナルでこのコマンドを叩きます。

git init –bare –share

–bareでリモートリポジトリ作成、–shareでグループアクセスのためのパーミッション付与になります。

2-3. Aのローカルリポジトリから、AのリモートリポジトリにPUSH

リポジトリの準備ができたのでPUSHしてみます。
今回、リモートリポジトリは同一アカウント内なのでLocalプロトコルで指定できます。

/Users/(ユーザー名)/(リモートリポジトリまでのパス)/(リモートリポジトリのディレクトリ)

アカウントが「account_a」、リモートリポジトリのディレクトリが「sync_km_config.git」、そこまでのパスが「書類」→「dir_repository」だったなら、下記のコマンドになります。

git push /Users/account_a/Documents/dir_repository/sync_km_config.git

うまくいったでしょうか?

2-4. リモートログインを設定する

BからAにSSH接続させるため、リモートログインを設定します。
「システム環境設定」→「共有」と移動し、「リモートログイン」のチェックを入れます。

ログイン先の情報(ssh アカウント名@xxx.xxx.xx.xx の形式。xは数字が入ります。)をメモしておきます。これは、Bから接続するときに使います。

Aの作業はここまで。Aからログアウトし、Bでログインします。

3. 子となる、アカウントB側の設定をする

3-1. SSH接続の鍵認証

初回の接続時、鍵認証をキャッシュします。
ターミナルを開き、2-4でメモしてあった情報を打ち込みます。
これで、BからAのアカウントにSSHで接続を試みたことになります。

ssh アカウント名@xxx.xxx.xx.xx

すると下記のようなメッセージが表示されると思います。

公開鍵が表示され、接続を続けるか聞かれるので、yesで。

これで公開鍵がキャッシュされました。パスワードを聞かれるのでAのログインパスワードを入力します。

ログイン時間とプロンプトが表示されたなら接続完了です。
このターミナル窓はexitして閉じてしまって構いません。

3-2. リポジトリをCloneする

リポジトリをCloneし、Bのローカルリポジトリを作成します。ローカルリポジトリ用のディレクトリを作成し、下記コマンドを打ちます。

git clone ssh://アカウント名@xxx.xxx.xx.xx/(リモートリポジトリまでのパス)/(リモートリポジトリのディレクトリ)

2-3の情報を踏襲するならこうなりますね。

git clone ssh://account_a@xxx.xxx.xx.xx/Documents/dir_repository/sync_km_config.git

ところが、私の環境では上記書式だと接続できませんでした。(sierraだからでしょうか。)
下記書式でならできましたのでご参考まで。

git clone account_a@xxx.xxx.xx.xx:Documents/dir_repository/sync_km_config.git

3-3. 同期用ファイルを読み込み、同期させる

もう一度言います。必ずバックアップをとってください。
この設定をすると、B環境のマクロがまるっとAからCloneしてきたものに置き換わります。バックアップが無い場合、戻すこともできなくなってしまいます。

「Keyboard Maestro」→「Preferences」で「Sync Macros」のチェックを入れます。
表示されるダイアログで「Open Existing」を選択、Cloneしてきたローカルリポジトリのmacros.kmsyncを指定します。
Bの環境でのKeyboard Maestroのマクロが、Aの環境からPushしてあった時点のものに置き換わるはずです。

あとはお好きにコミットしたりPullしたりPushしたりしてください!

4. 運用でカバーしたい部分

懸念点がありまして。これは運用でカバーせざるを得ないのかな、と。

4-1. ログイン時にkmsyncファイルが更新されてしまうので、変更を破棄する。

バイト数が変わらないので、自動生成の乱数かログイン日時か、桁数の変わらない何かを書き変えているのではないかと思います。
通常のクラウド同期で運用していれば上書きしあっていたわけですし、諦めて破棄してしまってよいでしょう。

4-2. コンフリクトしたら破棄して履歴から復活する

これが結構、致命的なのですが。
kmsyncファイル、文書形式が謎でしてテキストファイルとしての編集が難しいかもしれません。
エディタでテキストファイルとして開くと激しく文字化けしますし、SourceTreeでも差分どころかプレビューすらできません。

よって、コンフリクトした場合、通常は行う手作業での編集が困難です。
画像ファイルの類だと思って諦めて、破棄して履歴から復活した方が良いでしょう。

個人の複数アカウント間で運用してコンフリクトするとしたら、ログアウト前にPushし忘れたコミットがあったなどでしょうか。
KMで解決できそうな気もしますね。
まぁ、追い追いで。

参考

4.1 Git サーバー – プロトコル
https://git-scm.com/book/ja/v1/Git-%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC-%E3%83%97%E3%83%AD%E3%83%88%E3%82%B3%E3%83%AB

【Git】ローカル環境にリモートリポジトリを置く方法 (Mac)
http://qiita.com/konweb/items/1c8417584b5937a21fd4

gitで共有リポジトリを作るときに気をつけたいこと
http://yashigani.hatenablog.com/entry/2013/03/21/224251

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です