概要
TortoiseSVNはファイルパスがURLで管理されていますが、このURLをWindowsのエクスプローラー上から取得する方法を紹介します。
URLの取得はTortoiseSVN標準の右クリックメニューにもあるのですが、こちらはURLエンコードされた形式でコピーされます。
TortoiseSVN の右クリックメニューにある「Copy URL to clipboard」を利用した場合
file:///E:/data/Documents/TortoiseSVN/trunk/%E6%96%B0%E3%81%97%E3%81%84%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%20%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88.txt
これだと使いづらいので、PowerShellスクリプトを利用して新しく「Copy SVN URL to clipboard」を作成してURLデコードされた形式でコピーします。
本記事で紹介する「Copy URL to clipboard」を利用した場合
file:///E:/data/Documents/TortoiseSVN/trunk/新しいテキスト ドキュメント.txt
実施環境
- Windows10 64bit
- TortoiseSVN 1.14.29673
事前準備
TortoiseSVNのCLIが利用できることを確認
コマンドプロンプトでもPowerShellでも良いので、下記のコマンドを実行します。
svn --version
TortoiseSVNのCLIが利用できない場合
上記手順でバージョン情報が取得できない場合は先にCLIをインストールする必要があるため、TortoiseSVNをインストールした際に利用したインストーラを利用します。
- TortoiseSVN-1.14.6.29673-x64-svn-1.14.3.msi
※バージョンは各自のものでOK
①TortoiseSVNのCLIインストール
下記がCLIのパッケージとなるため、他のパッケージはインストールしなくても大丈夫です。
②CLIのパスを通す
[Windows]+[PAUSE BREAK]でシステム画面を開く
環境変数にはユーザー環境変数とシステム環境変数がありますが、どちらに追加しても大丈夫です。
追加するパスは下記とは限らず、各自でTortoiseSVNをインストールしたパスとなるため注意。
参考値
C:\Program Files\TortoiseSVN\bin
コマンドプロンプトやPowerShell等を開き、確認コマンドを実行。
svn --version
CLIをインストールする以前にコマンドラインツールを開いていた場合、一度クローズしてから起動する必要があります。
事前準備は以上で完了です。
実装手順
手順は大まかに次のとおりです。
1. PowerShellスクリプト(copyUrl2Clipboard.ps1)の作成
2. 作成したPowerShellスクリプトのショートカットを作成
3. 作成したショートカットをSendToディレクトリに配置
順に説明していきます。
1. PowerShellスクリプト(copyUrl2Clipboard.ps1)の作成
下記のコードをコピーしてPowerShellスクリプトを作成します。
Add-Type -AssemblyName System.Web
$OutputEncoding = [Console]::OutputEncoding
$url = svn info --show-item url $Args[0]
[System.Web.HttpUtility]::UrlDecode("$url",[Text.Encoding]::GetEncoding("utf-8")) | clip
2. 作成したPowerShellスクリプトのショートカットを作成
作成したショートカットの名称が後の右クリックメニューの名称になります。
本記事では「Copy URL to clipboard」とします。
作成したショートカットのプロパティを開き、リンク先の先頭に下記を追記します。
powershell -ExecutionPolicy RemoteSigned -File {"元のパスをダブルクォーテーションで囲う"}
3. 作成したショートカットをSendToディレクトリに配置
ファイルを指定して実行([Windows]+[R])にて、「shell:sendto」と入力してOKを押下。
SendToディレクトリに作成したショートカットを配置する。
以上で実装は完了です。
使い方
エクスプローラを再起動すると右クリックの送るメニューに「Copy URL to clipboard」が表示されます。
TortoiseSVNのチェックアウトしたファイルに対してこのメニューを押下すると、PowerShellのターミナル画面が開き、クローズされるとURLがコピーされます。
コピーには数秒かかり、ターミナルを非表示で実行するように制御するといつコピーされたかわからなくなるため、あえて表示するようにしています。