このドキュメントは TortoiseSVN クライアントの普段の利用方法について 説明したものです。バージョン管理システムの手引きではありませんし、 Subversion(SVN)の手引きでもありません。自分が何をしたいか だいたい見当がついている人が戻ってくる場所なのであって、何かあることをどのよう にやるかについて完全に説明するものではありません このドキュメントは TortoiseSVN やSubversionと同様、進行中のものです。 間違いを発見した場合には、メーリングリストに報告してください。そうしていただければ このユーザガイドの内容を更新することができます。このユーザガイド(以下、Daily Use Guide の頭文字をとって(DUG)と言うこともあります)中のスクリーンショットの いくつかはソフトウェアの最新の状態を反映していないかも知れません。その点については ご容赦を。私たち TSVN 開発メンバーは、自分たちの自由になる時間を利用して開発しています。
|
SVN ドキュメントで利用される用語、それは TortoiseSVN でも使われますが、 他のリポジトリシステムで使われている用語とは異なる場合があります。混乱を 避けるため、最も重要な単語についての一覧を用意しました。このドキュメント の残りの部分を読む前に、これらの言葉についてよく理解しておいてください。
|
もしローカルリポジトリを作らず、サーバ上のリポジトリを利用する だけなら、この章は飛ばすことができます。Apache ベースのリポジトリ の設定の仕方についてはここを読んでください。 TortoiseSVNを使ってローカルリポジトリを簡単に作ることができます:
ローカルリポジトリにアクセスするには、そのフォルダへのパスを知る必要があります。 Subversion はすべてのリポジトリへのパスが、file:///SVNRepository/ のような形になっていると考えることを思い出してください。ウィンドウズユーザの場合: file:///C:/SVNRepository/となります。 ネットワークドライブ上のローカルリポジトリに対するアクセスがエラーとなる 場合はSubversion FAQを確認してください。 |
TSVN のいろいろなダイアログでリポジトリのURLが求められる場面
では常に、[...]ボタンをクリックすることでTSVN のリポジトリブラウザ
を開くことができ、それによってリポジトリやファイルを簡単に検索することが
できます。
![]() |
プロジェクトをリポジトリにインポートする前に、しなくてはならないことは:
このようにしておけば、あとから簡単にブランチやタグを作ることができます。 これはたんなる推奨にすぎないことに注意してください。もちろん他のディレクトリ 構造にすることもできますが、おそらくブランチとタグを編成するのが難しく なるでしょう。ディレクトリの編成を上で示した形にした場合には、TortoiseSVN は間違って /tags/フォルダにあるパスにコミットしようとした場合に警告を 出してくれます。 さて、ウィンドウエクスプローラ中のディレクトリ構造の親のインポート フォルダを選択し、コンテキストメニューを開くために右ボタンをクリックして ください。インポート...コマンドを選択すると、以下のダイアログボックス が出ます: このダイアログでインポートしようとするプロジェクトをリポジトリ中の どこに入れるかを示すURLを入力してください。 インポートメッセージはログメッセージとして利用されます。普通は単に プロジェクトを開始するだけなので、デフォルトの "初期インポート" が 表示されています。 OKボタンを押すとすぐに TortoiseSVN はすべてのファイル を含む完全なディレクトリツリーをリポジトリにインポートします。 この操作だけではまだプロジェクトのコピーをバージョン管理下に置いたわけ ではないことに注意してください。バージョン化された作業コピーを 手にいれるには、いまインポートしたバージョンをチェックアウト しなくてはなりません! いま作ったばかりのリポジトリの構造は以下のような感じになっています: C:/SVNRepository/ProjectName/trunk/All C:/SVNRepository/ProjectName/trunk/your C:/SVNRepository/ProjectName/trunk/files C:/SVNRepository/ProjectName/trunk/are C:/SVNRepository/ProjectName/trunk/here C:/SVNRepository/ProjectName/trunk/... C:/SVNRepository/ProjectName/branches/ C:/SVNRepository/ProjectName/tags/ もしあとでC:/myFiles/AnotherProject をインポートしたくなった場合には 今と同じ方法でディレクトリを編成し ( プロジェクト階層の下に trunk, branches, tags をおくことを推奨します )、リポジトリ URL としてC:/SVNRepository/ を選び、プロジェクトをインポートしてください。 するとこのプロジェクトは以下のような構造でインポートされます: C:/SVNRepository/ProjectName/trunk/... C:/SVNRepository/ProjectName/branches/ C:/SVNRepository/ProjectName/tags/ C:/SVNRepository/AnotherProject/trunk/... C:/SVNRepository/AnotherProject/branches/ C:/SVNRepository/AnotherProject/tags/ |
作業コピーを手にいれるには、リポジトリからチェックアウトしなくては なりません。 作業コピーをおこうと思っているディレクトリをウィンドウズエクスプローラで 選択してください。右クリックでコンテキストメニューを表示し、チェックアウト... を選択します。以下のようなダイアログボックスが表示されます: 存在しないフォルダ名を入力した場合はその名前のディレクトリが作成されます。 チェックアウトはディレクトリツリーの"trunk"の部分にたいしてだけ 行うことをおすすめします。URL にあるディレクトリツリーの親のパスを指定すると ハードディスクを食いつぶしてしまうかも知れません。プロジェクトのすべての ブランチとタグまでコピーしてしまうことになるからです! |
Subversionのリポジトリから作業コピーをチェックアウトすると、ウィンドウズ エクスプローラ中のファイルのアイコンが変化するのがわかります。 TortoiseSVNはオーバーレイアイコンと呼ばれる、もとのアイコンに 重なって表示するようなアイコンをそれぞれのファイルに付け加えます。 それぞれのファイルの、Subversion管理下での状態によって、オーバーレイアイコンは 異なります。 チェックアウトしたばかりの新鮮な作業コピーは、緑のチェックのついたオーバーレイが 表示されます。それはSubversion状態が通常であることを意味します。 編集を始めるとすぐに、ファイルの状態は修正にかわり、オーバーレイ アイコンは赤いびっくりマークに変化します。 これで最後に作業コピーを更新してから、どのファイルを修正したか、 またコミットが必要であるか、が簡単にわかります。 更新処理中に衝突がおきた場合は、アイコンは黄色のびっくりマークに変化します。 フォルダアイコンもアイコンオーバーレイを持っています。デフォルトでは フォルダ自身の状態を表示します。しかし 設定(コンテキストメニュー、 設定...) でこの振る舞いを変えることができます。これでフォルダの状態は再帰的に 表示されるようになります。 この処理はフォルダのオーバーレイ表示に時間がかかるようになるので、遅いマシン上では おすすめできません。私は (PIII, 700MHz, 512MB RAM) のスペックのマシン上でこの設定を 有効にしていますが、とくに問題はないようです。 この設定では、それぞれのフォルダは、その配下にあるすべてのファイルの状態を表現する ようになります。衝突 は 修正 よりも強く、 修正 は、正常 よりも強いという約束で状態表示されます。そのため、そのフォルダ中に、衝突、あるいは 修正されたファイルがあるかどうかを簡単に知ることができます。 TortoiseCVS(CVSのシェル拡張です) とは違い、バージョン化されていないファイルには オーバーレイアイコンはつきません。 |
ときどきほかのユーザがした変更を自分の作業コピーに取り込みたいことがあります。 このようなサーバからの変更を自分の作業コピーに取り込むことを更新といいます。 更新はひとつのファイルに対しても、選択した複数のファイルに対しても、また、 再帰的なディレクトリ構造全体に対しても実行することができます。 更新するには、更新したいと思うファイルまたはディレクトリを選択し、 右クリックしてTortoiseSVN サブメニューからUpdateを選んでください。 ウィンドウがポップアップして、更新処理中の様子を表示します。 ほかの人の変更は自分のファイルにマージされますが、自分自身がした変更部分については 同じファイル中に保存されます。リポジトリは更新処理によっては何も影響を受けません。 |
ときどき、リポジトリからのファイルで更新処理が衝突の結果になることがあります。 衝突はふたり以上の開発者があるファイルの同じような行を変更したときにおこります。 Subversionはあなたのプロジェクトの内容や意味についてはなにも知らないので、 衝突を解消するのは開発者自身にまかせます。衝突が報告された場合はいつでも、 注意してそのファイルを開き、 <<<<<<<で始まっている行を 検索してください。衝突の領域はこんな感じでマークされています:
Also, for every conflicted file Subversion places three additional files in your directory:
ここで 衝突の編集メニューで外部マージツール/衝突エディタを起動するか、他のエディタを 使って手で衝突を解消することができます。これにはコードを見てどれが必要な変更であるかを 見極める必要があります。 コンテキストメニューから解消を実行した後、リポジトリに対して変更点をコミット してください。解消コマンドは本当は衝突を解消するのではないことに注意してください。 それは単に filename*.mine と filename*.r* ファイルを削除し、あなたの変更をコミットできる ようにするだけです。 |
自分の作業コピーにした変更を送ることを、変更のコミットといいます。 しかしコミットする前に、作業コピーが最新であるかどうかを確認する必要があります。 これには直接更新処理をしても良いですし、まず更新チェックを して、どのファイルがローカルに、あるいはサーバ上で変更されたのかを見ることも できます。 作業コピーが最新ですべての衝突が解消しているなら変更点をコミットする準備が できています。コミットしたいと思う任意のファイルやフォルダを選んでコンテキストメニュー からコミットを選んでください。 コミットダイアログは追加、削除されたファイル、バージョン化されていないファイル を含んだすべての変更のあるファイルを表示します。変更されたファイルでコミットしたく ないものについては、そのファイルのチェックをはずしてください。バージョン化されて いないファイルをコミットに含めたい場合は、そのファイルを追加してからコミットして ください。 TSVN があまりにもたくさんのバージョン化されていないファイルを表示してしまうと 感じるなら(たとえば、コンパイラが生成したファイルやエディタのバックアップファイル) やりすごす方法がいくつかあります:
コミットダイアログ中の任意の変更されたファイル上でダブルクリックすると外部 diff ツールが起動されて変更点が表示されます。 OK を押すと、ダイアログはコミットの進行状況を表示します。 |
開発中に新しいファイルやディレクトリを追加した場合、ソース管理に対してもそれを追加 しなくてはなりません。ファイルやディレクトリを選択し、コンテキストメニューから追加 コマンドを選択してください。 ソース管理にたいしてファイルやディレクトリを追加した後では、ファイルは"追加"の オーバーレイアイコンになり、他の開発者に利用できるようにするにはまず作業コピーを コミットする必要があることを示します。ファイルやディレクトリの追加はリポジトリには 影響を与えません! ディレクトリを追加するとTortoiseSVN は自動的にそのディレクトリにあるすべてのファイルを 再帰的に追加します。それで、そのディレクトリに一時ファイルやコンパイラが生成した中間 ファイルがないことを注意深く確認してください。 作業コピーの外にあるファイルを追加する場合には、ドラッグ&ドロップハンドラを 使うことができます:
|
SubversionはCVSとは違い、ファイルの名称変更や移動を認めています。そのため TortoiseSVNサブメニューにもそのようなメニュー項目があります。 TSVN を使ってファイル/ディレクトリを削除する場合、そのファイルは作業コピーから削除され 削除されるものとしてマークされます。そのファイルの親フォルダは"削除"アイコンオーバーレイ が表示されます。親フォルダで取り消しを実行すればいつでもファイルを復元できます。 作業コピー中でファイルを移動したい場合は、やはりドラッグ&ドロップハンドラを 使うことができます:
|
最後の更新以降にファイルに加えたすべての変更を取り消したい場合 は右クリックでコンテキストメニューをポップアップしてTortoiseSVN サブメニューで取り消しを選択します。しかし、まず本当にそう したいのかどうかをよく確認してください。最後のコミット以降に あなたがしたすべての変更が取り消されてしまいます! 自分のした変更について確信がない場合には、まず作業コピーを どこか安全な場所にコピーし、その後、取り消しをしてから、 BeyondCompare や ExamDiff のようにディレクトリの差分をとる ことのできるツールを使って、どこが変更されたかを調べてください。 まちがってファイルを削除してしまったが、すべてを取り消さずに 戻したい場合は、ディレクトリ中の変更を加えたすべてのファイルを いったんリポジトリにコミットし、それから作業ディレクトリに 取り消しを実行することができます。これで最後のコミット以降に 削除したすべてのファイルを復元できます。 |
ときどき、単なるアイコンオーバーレイ情報以上のより詳しい情報をファイルや ディレクトリについてほしいことがあります。Subversionが提供するすべての 情報を、エクスプローラの属性ダイアログで取得することができます。ファイルや ディレクトリを選択し、コンテキストメニューで"properties"を選択してください(注意: これはエクスプローラが提供する普通のプロパティーメニューであって、TortoiseSVN のサブメニューではありません)。属性ダイアログボックスで、Subversionの 制御下にあるファイルについては、TortoiseSVNは新しい属性ページを追加して表示します。 Subversionのページでは、選択したファイルやディレクトリについての関連情報を見ることが できます。さらに、Subversionプロパティーの読み書きをすることもできます。 選択したアイテムのログエントリーを見たい場合は単に、"Show Log..." を押せば ログダイアログが表示されます。 |
You can also invoke the Log Dialog from the standard TSVN context menu. 特定のログメッセージを見たい場合は、一覧中で対応するエントリーを選択してください。 Show Log... には以下のような機能をもつコンテキストメニューがあります:
ログエントリごとの変更ファイルの一覧は選択することができ、それぞれの コンテキストメニューを持ちます。これによって、特定のファイルに加えられた変更点 を見ることができます - これには外部 diff を使う(この場合ファイルの二つのリビジョン がダウンロードされるのでいくらか時間がかかりますが、)ことも、unified diff として 見ることもできます。 |
バージョン管理システムのひとつの機能に、変更を別の開発ラインに分離する能力が あります。このラインはブランチとして知られています。ブランチは普通、 コンパイラエラーやバグなどによって開発の主系を乱すことなしに新しい機能を試してみる のに利用されます。ブランチ上の新しい機能が十分におちついたら、ブランチは主系に マージされ、書き戻されます。 バージョン管理システムの別の機能としては、特定のリビジョン (たとえば、リリースリビジョン)に印をつけることがあります。これで 常に特定のビルド、あるいは環境を再生成することができます。この仕組み はタグとして知られています。 Subversion ではブランチやタグのための特別ななコマンドはありません。 そのかわりに、チープコピー(コストのかからないコピー)、と 呼ばれる機能があります。チープコピーはリンクによく似ています。リンクとは 実際のコピーのかわりに特定のファイル/リビジョンに対するリンクを 生成するものです。 もし推奨するディレクトリ構造にしたがってプロジェクトをインポートした のであれば、バージョンのブランチやタグを作るのはとても簡単です: 作業コピーの親フォルダを選択し、ブランチ/タグ...コマンドをコンテキスト メニューから選択してください。ダイアログ中に、ブランチまたはタグのリポジトリパス を示す URL を入力してください。これで/trunk/のかわりに、/tag/tagname の形を利用 できるようになります。ここで tagname は、たとえば "ProjectName_v1.10" のような 形のものです。 C:/SVNRepository/trunk/ProjectName/... C:/SVNRepository/trunk/AnotherProject/... C:/SVNRepository/branches/ProjectName_SpecialDebugBuildBasedOn_v1.09/ C:/SVNRepository/tags/ProjectName_v1.10 ここで OK を押すと、Subversionは リポジトリ中に選択したディレクトリ のチープコピーを作ります。ローカルディスク上には(まだ)何もおきません。 |
これは本当の問題ではありません。チェックアウトは作業コピーに必要なブランチの すべてをチェックアウトするのにたいして、スイッチは作業コピーに対して変更のあった データのみを転送します。ネットワーク負荷も軽くなりますし、あなたの我慢も減らせます。:-) 新しい作業コピーで作業するためには、いくつかの方法があります:
これで作ったばかりのブランチ/タグの URLを入力します。チェックボックスの "最新リビジョン" を有効のままにしておいてください。OKを押せば作業コピーは 新しいブランチ/タグにスイッチします。 データを変更した場合にのみこれらの修正がリポジトリにコミットされます。 残りは元データのチープコピーのままです。 ここから先はブランチとタグで少し動作が異なります:
|
自分の変更点をメインブランチに書き戻したいときには、単にマージを コンテキストメニューから選択するだけです。
|
リポジトリの位置(IP/URL)が何かの理由で変更された場合、多分あなたは もとのままの状態にとどまっていて、コミットすることができず、かと言って 作業コピーを新しい場所からもう一度チェックアウトして、それまでの変更を その新しい作業コピーに移したくもないでしょう。こんなときは再配置 コマンドの出番です。このコマンドは実際にはたいしたことをしません: .svn フォルダ のすべての "エントリ" ファイルをスキャンして、各エントリ中のURLを新しい ものに変更するだけです。 |
自分の好きな言語を設定することを除けば、このダイアログは以下の項目の設定 ができます
|
もしTortoiseSVNが気に入って、よく利用されているのであれば、開発者チーム をサポートしてください。 パッチを送っていただいても、開発者としての役割を演じていただくことも、 開発者にエールを送っていただくこともできます。 TortoiseSVN の作業にとりかかっている最中、私たちは音楽を聞くのが好きです。 そして長い時間このプロジェクトで作業するので、たくさんの音楽が必要になります。で、 私たちの好きな音楽 CD のリストを作りました。 また、ときどき作業を中断して、集まってみんなの考えをまとめる必要もあります。 DVD もそのリストに入っているのはそれが理由です。 Stefan が作ったリストは ここ (英語) か ここ (ドイツ語)にあります。 Lübbe も リスト を持っています。 貢献者の一覧リストも見てください。 |