初心者向け(になっているかは微妙。。)
gitが使用可能な環境であれば git使った方が多分よい。
やむを得ず(?)SVNを使う環境にいる方々向けになります。
※まずはフォルダ構成をちゃんと決めてから運用しましょう。【超重要】
local workspace・・・SVN Checkout先のローカルフォルダ1。Checkout済みの作業スペース。
Repository・・・通常Server内に置かれる2。バージョン管理されているフォルダ&ファイルの保管庫3。
バージョン管理システムの目的と過去ファイルの取り出しとかのイメージの説明を入れたい。
SVN右クリックメニュー基本操作
Repository Browserではなく、WindowsのExplorerの右クリック操作を想定
SVN Checkout
端的にいうとdownload操作です。
Repositoryにあるフォルダのデータを空のlocal workspaceにコピーします。
local workspaceのある disk drive の空き容量が十分にある状態で行ってください。4
この操作を行うと、SVNツールが管理用の隠しフォルダ.svnフォルダを生成します。
(Repositoryを共有していない他者にCheckoutしたファイルを展開する際は .svnフォルダは除外して展開したほうが無難です。相手がTortoiseSVNを使用している場合、管理フォルダが不整合を起す可能性あり。)
SVN Checkout - 特定の revision のファイルを取り出したい場合
SVN Checkoutの操作画面でRevisionを指定してCheckoutする。
Update
local workspace内の選択したフォルダorファイルを最新の状態に更新します。
local workspace内のファイルが更新されている場合、コンフリクト(編集の競合)する場合があります。
基本的にはファイルの編集作業を行う前にUpdate操作を実施しておき、local workspaceを最新に保ちましょう。
Commit
端的にいうとupload操作です。
local workspaceのファイルをRepositoryに上書きします。
(履歴から更新前のファイルを取得可能であるため、「上書き」というよりは更新版を置くようなイメージ)
RepositoryへのWrite accessのため、慎重に実施してください。
一度Commitした場合、操作を取り消すことはできないため注意。(Repositoryに履歴が残る。)5
Add
Repositoryにまだ存在していないファイルをCommitするときに使用します。
local workspace上で、追加したいフォルダやファイルに対してAdd操作をします。
追加したいファイルの上位フォルダがまだAddされていない場合はAdd操作できないので、上位フォルダを選んでAdd操作してください。
Add操作そのものはlocal workspaceへの操作であり、CommitするまではRepositoryに影響は与えません。
Undo Add
Commit前のlocal workspaceでのAdd操作の取り消し。
Commit後は取り消し不可。
(Commit後に登録ファイルを削除したい場合はDelete操作を使用する。ただしCommit履歴は残る。)
Revert
編集作業をロールバックします。
(local workspaceで更新しているフォルダorファイルを、Repositoryのデータで上書きします。)
この操作は元に戻せないため、必要に応じて事前にファイルをバックアップすることを推奨します。
Clean up
コミットに失敗した場合のおまじない。
コンフリクト(編集の競合)やサーバーエラーでなければ大抵これで解消する・・・はず。。
(SVNの管理システムの知識が不足しておりメカニズムが理解できていない)
少し高度な操作
以下の操作は、練習用のRepositoryで実施して理解し、慣れてから操作することを推奨します。
Delete
Repository上のファイルやフォルダを削除するときに使います。
この操作を実施すると、まず local workspace のファイル(またはフォルダ)が削除されます。6
次いで、(操作を行ったファイル(またはフォルダ)の上位フォルダに対して)Commit操作を行うとRepositoryからもファイルが削除されます。
なお、local workspace上でExplorer等でただ単にファイルを削除した場合、SVNシステムとしては意図しないmissing(行方不明)ファイルとして扱われます。
(こうなってしまった場合、上位フォルダに対してRevert操作を行うことで削除ファイルを復元(RepositoryからDownload)可能です。)
もし、Repositoryから削除したファイルをRepository上で開きたい場合、その上位フォルダのCommit logから削除操作した履歴を探す必要があります。7
Rename
ファイルやフォルダの名称変更や移動を行います。
SVNシステムの内部的にはAddとDeleteの組み合わせとして扱われます。
そのため、操作を行ったファイルそのものに対してのCommit操作は失敗します。(AddとDeleteが対にならず不整合となるため。)
上位フォルダに対してCommit操作を行ってください。
高度な操作
Relocate
Repositoryのサーバが移動したときなどに使う。
local workspace のSVN管理上の最上位フォルダ(.svn隠しフォルダを子フォルダにもつフォルダ)に対して操作する。
-
ファイルサーバ内のフォルダでも可。運用的によいかどうかは不明。 ↩
-
file:///~を指定することでローカルフォルダやネットワークドライブ内のフォルダも指定可能。ただし、アクセス過多になってディスク破損のリスクが高まる。1ファイルでも壊れると全滅するリスクがあるため、RAID組んでないと極めて危険。(そもそも分散管理されているgitのほうが災害リスクに対しては安全か) ↩
-
実体は複雑に管理されたファイル群。 ↩
-
pathを細かく指定して小さなファイルを取り出す場合は気にしなくてよいですが、一式Checkoutする場合、数GB以上となる場合がある。(格納されているデータによる。) ↩
-
Repository側を操作することで復旧可能な場合もあるが、深い知識を要し、作業ミスでデータを破損させるリスクがある。 ↩
-
Windowsファイルシステム上でどういう扱いになっているのかは調べてないので分かりません。。 ↩
-
削除前の時点でtagを付与している場合はtagsから探せるかもしれません。Repositoryの運用次第です。 ↩