TFTPの実装に入る前にTortoiseHg(MercurialのWindowsエクスプローラ用シェルエクステンション)をインストールし、バージョン管理が出来るようにします。
TortoiseHgはMercurialのフロントエンドですが、Mercurial本体も含んでいるので、別途、Mercurialをインストールする必要はありません。TortoiseHgをインストールするとエクスプローラの右クリックメニューにTortoiseHgの項目が追加されます。TortoiseHgのコマンドは全てこの項目の配下にあります。
では早速バージョン管理の練習をしてみましょう。ここではtestフォルダ配下のファイルをバージョン管理することにします。
最初にTortoiseHgメニューのCreate Repository Hereを実行し、testフォルダをバージョン管理対象にします。

するとtestフォルダに.hgというフォルダが作られます。これがバージョン管理用のリポジトリです。testフォルダにはaaa.txt、bbb.txt、ccc.txtの3つのテキストファイルがありますが、この時点ではまだ、バージョン管理の対象となっていません。
フォルダ内のファイルのバージョン管理を行うには最初にそのファイルをMercurialのデータベースに登録する必要があります。ファイルの登録はTortoiseHgのAdd Filesメニューコマンドで行います。今回はaaa.txtとccc.txtを管理対象とします。

Add Filesコマンドを実行するとファイル登録用のダイアログが出てきますのでそこで、aaa.txtとccc.txtを選択し、ツールバーのAddを押します。

これでこの2つのファイルが管理対象となりました。

ファイルをデータベースに登録しただけではまだファイルの更新内容がリポジトリ保存されていません。最新のファイルの内容をリポジトリに反映させるにはコミットを行う必要があります。TortoiseHgメニューの上にHg Commitの項目がありますのでそれを実行し、出てきたコミットダイアログでコメントを追加し、コミットします。


コミットされ、リポジトリと手元のファイル間に差分がなくなったファイルには緑色のチェックマークが入ります。

View ChangeLogコマンドを実行すると今までのチェンジログが確認できます。

実際に実行してみると、先ほどのコミット情報が追加されていることが確認できます。

こうして更新したファイルのコミット繰り返して開発を進めていきます。もし、今、手元のファイルに対して行った変更を取り消してその内容を前回コミットした時点まで戻したい場合は、Undo Changesを実行すれば戻すことが出来ます。Undo Changesコマンドを実行すると手元のファイルが前回コミット時のものに差し替えられます。その際、最新のファイルはリネームされます。

さらに遡ってそれ以前にコミットした時点まで戻したい場合はUpdate to Revisionコマンドを使用します。こちらはUndoコマンドとは概念が異なり、リポジトリを指定したバージョンに戻すコマンドになります。そのため、このコマンドだけでは手元のファイルは変わらず、手元のファイルのバージョンを戻す場合は、さらにUndo Changesコマンドを使用して、手元のファイルと変更したリポジトリの内容を合わせてやる必要があります。

Update to Revisionコマンドは変更先のバージョンを指定する必要があります。Mercurialのバージョンは人が理解し辛いハッシュ値になっているのでUpdate dialogのブラウズボタンを押して表示されるダイアログから目的のバージョンを探すのが楽でしょう。
Changelogダイアログのチェンジセットが表示されているリストのコンテキストメニューのCheckoutコマンドからもこのUpdateダイアログは呼び出せます。こちらの方が最初から戻すリビジョンが指定されているので使いやすいと思います。

Update to Revisionでリポジトリのバージョンを変更するとMercuriaにlはバージョンが分岐したように見えます。View Changelogを確認するとどのような分岐をしているかイメージがつかめると思います。

Marcurialはバージョン(チェンジセット)を14桁の数字で表現しますが、これでは人が分かりやすいように特定のチェンジセットにTagをつけることが出来ます。TortoiseHgはこの機能をまだサポートしていないようなのでhg.exe(Marcurial本体)を使って作業をします。コマンドプロンプトを起動し、下記のコマンドを実行すると現在のリポジトリの状態に指定したタグをつけることが出来ます。
# 現在のバージョンにVER_1_0をつけるコマンド
# (-mオプションはコミットログに追加するコメント)
hg tag -m "Add tag VER_1_0." VER_1_0
TortoiseHgからもTagをつけることが出来ました。Changelogのダイアログで任意のChangesetを右クリックすると表示されるコンテキストメニューに「add/remove tag」コマンドがありますのでそれを実行するとtagを追加削除するためのダイアログが表示されます。

現時点ではTortoiseHgは一部の日本語が含まれるファイル名をうまく扱うことができません。なのでTortoiseHgで管理するファイルは全て英語にしておくと良いでしょう。
今回の開発ではこれを使ってプロジェクト管理をしていきます。