コマンドライン・インストーラの Scoop を使用し、バージョン管理システムの Git for Windows と、Git クライアントの SourceTree をインストールした際のメモ。
Scoop 導入時にインストール済だった Git for Windows と SourceTree がバージョン・アップしていたので、アンインストール後、Scoop で再インストールしてみました。
scoop search git
Main/bucket at master · ScoopInstaller/Main · GitHub で git と git-with-openssh の違いを確認したところ、ダウンロードされるのは同じ PortableGit で、同梱の OpenSSH を使用するように shim を作成するかどうかの違いのようでした。
SourceTree は同梱の PuTTY を使用する方が便利なので、今回は git の方をインストールすることにします。
scoop install git
Git for Windows がアンインストール済なので、インストールの前に行う bucket の更新が出来ずにエラーを表示しますが、インストールは出来ました。
scoop search sourcetree
extras bucket に sourcetree があると確認出来たのでインストールします。
scoop install sourcetree
スタートメニューの Scoop Apps フォルダ内にショートカットが作成され、起動出来るようになります。
環境変数の Path に登録されている shims フォルダに shim が作成され、コマンドラインからも起動出来るようになります。
起動してみると、「System.ComponentModel.Win32Exception: 指定されたファイルが見つかりません。」というエラー・ダイアログが出てしまいました。
たくさん出るエラー・ダイアログの OK
を押しまくり、メニューの ツール
> オプション
の Git
タブを確認すると、git.exe はパスが通っているため認識しているものの、他に Git 関連で必要としているファイルを見つけられないようです。
Embedded
ボタンを押すと PortableGit のダウンロードが始まり、ユーザー・フォルダのパス\AppData\Local\Atlassian\SourceTree\git_local にインストールされ、エラー・ダイアログが出なくなりました。
しかし、インストールされた PortableGit のバージョンは古いし、そもそも複数の PortableGit を管理したくないので、ジャンクションで対応することにします。
SourceTree を終了し、ユーザー・フォルダのパス\AppData\Local\Atlassian\SourceTree\git_local を削除後、Scoop のインストール先のパス\apps\git\current のジャンクションを作成します。
rd /s ユーザー・フォルダのパス\AppData\Local\Atlassian\SourceTree\git_local
mklink /j ユーザー・フォルダのパス\AppData\Local\Atlassian\SourceTree\git_local Scoop のインストール先のパス\apps\git\current
SourceTree を起動し、メニューの ツール
> オプション
の Git
タブを確認すると、無事に git.exe を認識していることが確認出来ました。
Git for Windows を git から git-with-openssh に変更するとジャンクションを作成し直す必要があるので、スマートな解決策とは言えませんが、とりあえず SourceTree が使えるようになりました。
何故か、起動時にアップデートのお知らせが毎回表示されるのは、解決策が思い付かないので放置していますが…。
SourceTree のようなインストール先が決め打ちのアプリケーションは、Scoop での管理は向いていないのかも知れません。