MercurialをUSBで持ち運ぶ(Windows)

バージョン管理にMercurialをちまちまと使っているのだけど、
USBメモリで作業中のファイルを持ち運んで作業することが結構あるので、USBメモリにぶち込んで持ち運べるようにするメモ。

使い方とか特徴は別のページに譲って、

を持ち運べるようにします。

インストーラの展開

※すでにTortoiseHgあるいはMercurial本体がインストールされている場合はそちらのフォルダを利用することもできます。

先ず、TortoiseHgのページから"binary installer"をダウンロードします。*1
現在の最新バージョンは、TortoiseHg 0.5(with Mercurial 1.0.2)で、インストーラのファイル名は"TortoiseHg-0.5.exe"です。

ファイルの抽出

普通にインストールしてもいいのですが、レジストリがどーのとか、そもそもインストール権限が無い場合も考えられるので、今回はUniversal Extractorを利用します。

Universal Extractor | LegRoom.net
インストーラ版、Binary Archive版どちらでもかまいません。

インストールしたら、Universal ExtratorにTortoiseHgのインストーラをドラッグアンドドロップして*2展開します。
すると、インストーラのファイルと同名のフォルダ(今回の場合は"TortoiseHg-0.5")に展開されます。
このフォルダの{app}フォルダにインストール用のファイルが格納されています。

hg.exeのコピー

(持ち運びたいUSBメモリなどに)適当なフォルダを用意して、{app}フォルダからhg.exeをコピーします。
hg.exeの動作に必要なファイルは次のとおりです。

msvcr71.dllはシステムにすでに登録されている可能性もありますが、一応コピーしておきます。
Mercurial.iniはなくてもなんか動きますが怖いのでコピーしておきます。

パスを通すバッチファイルの作成

コピーしただけではパスも通っていないためめんどくさいので、パスを通すバッチファイルを作成します。

hg.exeと同じフォルダ内に次のようなバッチファイルを作成します。*3

@echo off
set PATH=%PATH%;%CD%; > nul
title Mercurial Portable (%CD%)
cd ..\..\working > nul
cmd

1行目の"@echo off"は余計なメッセージを出さないためのおまじない
2行目で環境変数を追加*4
3行目でコンソール(?)のタイトルを変えてます。お好みで。
4行目では自分の好きなところに移動するようにしています
5行目でコマンドラインに移行

調整が必要なのは4行目で、そのままhg.exeのフォルダから始まってもいい場合は削除してかまいません。
自分はhg.exeを

(USBメモリ)\apps\hg

に置いているので、作業用フォルダである

(USBメモリ)\working

に移動するようにしています。

バッチファイルを起動し、hgコマンドが通れば正常です。*5

hgtk.exeのコピー

ログなどをGUIで表示できるツール、hgtkも持ち運んでみます。
GTK関連で結構な容量を使うので、余裕の無い場合はお勧めできません。

{app]フォルダから以下のファイルをコピーします*6*7

  • hgtk.exe
  • library.zip
  • .pyd全て
  • tortoisehg.dll以外のdll全て
  • etc,icons,libフォルダ*8

hg.exeと同じフォルダにコピーしたのであれば、バッチファイルがそのまま使いまわせます。

hgtkコマンドが通れば正常です。*9
f:id:nanmo:20081114181537p:image

なお、自分が使う範囲でしか動作確認していないので、これがうまく動かないとかあればご連絡ください。

疑問とかメモ

  • ini覗いたところTortoisePlinkとかputtyとかkdiff3もやることによっては必要かも-しれない。
  • kdiff3でmerge?
  • sshを通さないならTortoisePlinkとかいらんのかな。

*1:hg.exeのみの抽出を考えるのであれば、[http://www.selenic.com/mercurial/wiki/index.cgi/BinaryPackages#head-adac70dc1664bb9eac334d5c8b57483d300254f3:title=Mercurialのインストーラ版]で十分です。手順もほとんど変わりません

*2:普通に起動してダイアログでファイルを選んでも同じ

*3:そもそもバッチファイルもどこに置くかというのもあるかと思いますが、先頭にcdが増えるだけです

*4:環境変数なんていじって大丈夫なのか? と思うかもしれませんが、変更はこのバッチファイル中のみ有効なので問題ありません

*5:すでにMercurial(TortoiseHg)がインストールされている場合はどっちが動いてるのかよくわからなくなるので、いったんMercurialをアンインストールしてみてください

*6:とりあえずこれだけコピーすれば動きましたが、詳しく調べたわけではないので、不要なファイルが含まれているかもしれません。特にdll辺り

*7:すでにhg.exeの導入がされていることを前提に書いています、hg.exeの導入がされていない場合(別フォルダなど)はmsvcr71.dllが改めて必要になる場合があります

*8:shareフォルダも関係ありそうですがあっても無くても変わらないようなので放置

*9:すでにTortoiseHgがインストールされている場合は以下略