cafegale(LeafCage備忘録)

LeafCage備忘録(はてなダイアリー)と統一しました。

Subversion覚書

今現在のチームは誰もGitを使えず、バージョン管理はSubversionなのだ。ナンテコッタ!
(「コンパイルエラーが出ているコードはコミットしないでくださいね(ニッコリ)」)

とりあえず従うけど、密かにGitも使ってやるもんねー!GitからSVN使えるらしいし。
(ちなみにここ最近の記事で分かってもらえるが、EclipseJavaSeasar2を、強いられているんだ。
GUI環境を、強いられているんだ!)

SVNを操作するエクスプローラ拡張を入れる

TortoiseSVNをインストールする(SVNを操作できるようになるエクスプローラ拡張)
→日本語メニューにする

PuTTY ごった煮版をDLし、puttygen.exeから
SVNの鍵を読み込ませて、「秘密鍵の保存」でppkファイルとして保存

tortoiseSVNの設定>ネットワーク からSSHSSHクライアントを設定する

"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe(TortoriseSVNのパス)" -l svnuser -i C:\key\secret.ppk(今作った鍵) -pw XXXX(自分のパスフレーズ)

用語の違い

SVN Git
リポジトリの最新リビジョン HEAD -
今checkoutしているリビジョン BASE HEAD
ファイル/ディレクトリが最後に更新されたリビジョン*1 COMMITTED
COMMITTEDの1つ手前 PREV

コマンド

コマンド 効果 Gitでいうと
svn checkout {url} サーバ側リポジトリから作業コピーを作る/カレントバージョン切替 git clone/git checkout
svn update サーバ側から変更を作業コピーに適用 git fetch→merge(git pull)
svn commit 変更をサーバ側に適用 git push
svn status 現在の状況をみる git status
svn log 履歴を見る git log
svn add {file/dir} {file/dir}を管理に加える(予告) git add
svn revert {file/notice} {file}を拾ってきた時点の状態にまで戻す {notise}予告を取り消す
svn delete {file/dir} {file/dir}を削除する 次回コミットで確定される git rm
svn move {f/d-A} {f/d-B} {f/d-A}を{f/d-B}にムーブ git mv
svn copy {f/d-A} {f/d-B} {f/d-A}を{f/d-B}としてコピー ブランチやタグを作成

conflictの解消

gitでは→UUがコンフリクトの証。コンフリクトマーカーを除いた後にadd {FILENAME}→ commit
svnでは→Cがコンフリクトの証。コンフリクトマーカーを除いた後に*2resolved {FILENAME}→ commit

*1:ファイルやディレクトリを個別に指定したコマンドでは、そのファイル/ディレクトリが更新されたのはBASEよりずっと以前ということもあり得るため

*2:手動で除くなどsvnを解さずに解消した場合にresolvedを使う。svn revertなどを使った場合はresolvedを使う必要はない