windows PCでバージョン管理にSourceTreeを用いてAndroid開発をするにあたって、javaファイルやkotlinファイルは「現在のバージョンを開く」「選択のバージョンを開く」で開かれるデフォルトのエディタがAndroid Studioであり問題がないが、xmlファイルはブラウザが開いてしまいずっと不便に思っていた。
そこでxmlをAndroid Studioで開けるようにしたが、検索してもmacでのやり方しか出てこず色々ハマっててこずったので共有。
※題名・目的は「xmlファイルを開く」だけに焦点を絞っているが、これで作ったカスタム操作は全ての拡張子のファイルに対して実行可能で、実行された全ての拡張子のファイルをASで開こうとします。
環境
OS : Microsoft Windows 10 Pro
SourceTree ver : 3.1.2.3027
Android Studio ver : 3.5.2
共通の大まかな流れ
- batファイルの作成
- そのbatファイルを「カスタム操作」として登録
詳細
xmlファイルもASで開ける版「現在のバージョンを開く」を作成
batファイル作成
echo %1
set FILE_NAME=%1
call "C:\Program Files\Android\Android Studio\bin\studio64.exe" %FILE_NAME%
カスタム操作として登録
ツール > オプション > カスタム操作 > 追加
メニュー表示名 : 現在のバージョンをASで開く(自分がわかれば何でも良い)
実行するスクリプト : 先ほど作ったopenNowVerAS.batのpath
パラメータ : $FILE
xmlファイルもASで開ける版「選択のバージョンを開く」を作成
batファイル作成
echo %1
echo %2
set FILE_NAME=%1
set COMMIT_ID=%2
set FILE_EXPAND=%~x1
git show %COMMIT_ID%:%FILE_NAME% > "C:\Users\(ユーザーネーム)\AppData\Local\Temp\%COMMIT_ID%.temp.%FILE_EXPAND%"
call "C:\Program Files\Android\Android Studio\bin\studio64.exe" "C:\Users\(ユーザーネーム)\AppData\Local\Temp\%COMMIT_ID%.temp.%FILE_EXPAND%"
カスタム操作として登録
ツール > オプション > カスタム操作 > 追加
メニュー表示名 : 選択のバージョンをASで開く(自分がわかれば何でも良い)
実行するスクリプト : 先ほど作ったopenThisVerAS.batのpath
パラメータ : $FILE $SHA (順番が大事。逆にしちゃダメ。batファイルに実行時にこの順番で引数として渡されるため。)
注意点・ハマった事
「選択のバージョンをASで開く」の方はHistoryの特定のコミットの中のファイルを右クリックした時に出てくる「カスタム操作」からは選べない。(選択肢として出てこない。)
画面上部のツールバーの操作>カスタム操作からしか選べない。これに気づくまでとても時間がかかって時間を無駄にしてしまった。
※「現在のバージョンをASで開く」の方はファイルの右クリック>カスタム操作からも選べる。この挙動の差はパラメータに$SHAがあるのが関係しているっぽい。
「選択のバージョンをASで開く」はたくさんのテンポラリファイルを生む。
この方法でやると、「選択のバージョンをASで開く」を一回実行するたびにC:\Users(ユーザーネーム)\AppData\Local\Temp\以下に1個テンポラリファイルが生まれる。(正確には、過去に同じコミットの同じファイルに対して実行した事がある場合は上書きされるので増えない。)誰も消してくれないので定期的にチェックして手動で自分で消す必要あり。
参考にしたもの
https://jj-blues.com/cms/wantto-exeinbatfile/
http://www.kuma-de.com/blog/2017-04-18/7296
http://orangeclover.hatenablog.com/entry/20101004/1286120668
http://capm-network.com/?tag=Windows%E3%83%90%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%A4%89%E6%95%B0
https://www.bulblub.com/2015/12/11/sourcetree-pick-yours/