S-JIS[2008-12-27/2009-10-21] 変更履歴
All In One Eclipse3.4にはSubversion(SVN)サーバーとやりとりするプラグイン(Subversive)が含まれている。
基本的な操作はCVSを扱うのと同じ。
|
|
SVNサーバーのモジュール一覧を表示するのが「SVNリポジトリー」というパースペクティブ。
これを開くには、以下のようにする。
項目 | 内容 | 例 |
---|---|---|
URL | SVNサーバーの接続プロトコルとホスト |
svn://localhost/ |
ラベル | ラベルとしてリポジトリーURLを使用 | |
ユーザー(U) | SVNサーバーへ接続する為のユーザー | hishidama |
パスワード(P) | SVNサーバーへ接続する為のパスワード | abc |
これで、SVNリポジトリー・エクスプローラーにSVNリポジトリーが表示されるはず。
CVSリポジトリー・エクスプローラーは初回のロケーション登録とチェックアウト(あとはリポジトリー内のファイル確認)くらいしか使わないが、
SVNリポジトリー・エクスプローラーではそこからディレクトリーを作成したり移動したりすることが出来る。[2008-12-29]
svnコマンドではリポジトリーに対して直接操作する命令があるので、それを行うのだろう。
ただ、コマンドを実行する度にコミットする必要があるので、ある程度変更をまとめてコミットしたいのであれば、一度チェックアウトしてから操作する方が良さそう。
メニュー | 概要 | SVNコマンド相当 | |
---|---|---|---|
新規(N) | ファイル(F) | 別の場所にあるファイルをインポートする。 | svn import |
フォルダー(O) | ディレクトリーを作成する。 | svn mkdir | |
ブランチ(B) | ブランチを作成する。(branchesディレクトリーへコピーする) | svn copy | |
タグ(T) | タグを作成する。(tagsディレクトリーへコピーする) | svn copy | |
プロジェクト構造(P) | trunk・branches・tagsディレクトリーを作成する。 | svn mkdir | |
リポジトリー・ロケーション(L) | Eclipseの新しいロケーションを作成(URLを登録)する。 | ||
チェックアウト(C) | Eclipseのプロジェクトとしてチェックアウトする。 | svn checkout | |
検索/チェックアウト(F) | 既存プロジェクトの一部として等。 | svn checkout | |
コピー(O) | コピーあるいは移動。 「貼り付け」時に実行する。 |
svn copy svn move |
|
切り取り(T) | |||
貼り付け(P) | |||
削除(D) | ディレクトリーを削除する。 | svn remove | |
URLのコピー | ディレクトリーのURL(svn://〜)をクリップボードにコピーする。 | ||
リファクタリング(R) | 名前変更(R) | ディレクトリー名を変更する。 | svn move |
次へコピー(C) | ディレクトリーをコピーする。 | svn copy | |
移動(M) | ディレクトリーを移動する。 | svn move | |
ヒストリーの表示(H) | そのディレクトリーの変更履歴を「ヒストリー」ビューに表示する。 | svnlook history svn log |
|
プロパティーの表示 | プロパティー(属性)一覧を「SVNプロパティー」ビューに表示する。 | svn proplist -v | |
パッチの作成 | 比較したファイルを作成する。 ファイルだけでなく、クリップボードへ直接作成できる。 |
svn diff | |
改訂リンクの追加(A) | 改訂リンクを作成する。 | ||
エクスポート | エクスポートする。 | svn export | |
インポート(I) | インポートする。 | svn import |
メニュー | 概要 | SVNコマンド相当 | |
---|---|---|---|
新規(N) | ブランチ(B) | ブランチを作成する。(branchesディレクトリーへコピーする) | svn copy |
タグ(T) | タグを作成する。(tagsディレクトリーへコピーする) | svn copy | |
リポジトリー・ロケーション(L) | Eclipseの新しいロケーションを作成(URLを登録)する。 | ||
開く(O) | ファイルを開く。 | svn cat | |
アプリケーションから開く(H) | |||
コピー(O) | コピーあるいは移動。 「貼り付け」時に実行する。 |
svn copy svn move |
|
切り取り(T) | |||
貼り付け(P) | |||
削除(D) | ファイルを削除する。 | svn remove | |
URLのコピー | ファイルのURL(svn://〜)をクリップボードにコピーする。 | ||
リファクタリング(R) | 名前変更(R) | ファイル名を変更する。 | svn move |
次へコピー(C) | ファイルをコピーする。 | svn copy | |
移動(M) | ファイルを移動する。 | svn move | |
ヒストリーの表示(H) | そのファイルの変更履歴を「ヒストリー」ビューに表示する。 | svnlook history svn log |
|
注釈の表示(A) | 変更履歴付きでファイルの内容を表示する。 | svn annotate | |
プロパティーの表示 | プロパティー(属性)一覧を「SVNプロパティー」ビューに表示する。 | svn proplist -v | |
パッチの作成 | 比較したファイルを作成する。 ファイルだけでなく、クリップボードへ直接作成できる。 |
svn diff | |
改訂リンクの追加(A) | 改訂リンクを作成する。 | ||
エクスポート | エクスポートする。 | svn export | |
インポート(I) | インポートする。 | svn import | |
ロックを中断(B) | ロックを強制的に解除する。 | svn unlock --force | |
比較 | URL | 比較対象をURLで指定する。(同一リポジトリー内のみ) | svn diff |
ブランチ | 別途branches内のファイルを指定し、それと比較する。 | ||
タグ | 別途tags内のファイルを指定し、それと比較する。 | ||
相互 | 選択されている2つのファイルを比較する。(同一リポジトリー内のみ) |
要するに、trunk・branches・tagsディレクトリーのこと。それらを作成する機能。[2008-12-29]
「プロジェクト構造(P)」メニューを選択すると、「プロジェクト構造の作成」ダイアログが開く。
作ろうとした場所に既にtrunk・branches・tagsのいずれかのディレクトリーが存在していると、作成に失敗する。
(無いディレクトリーだけ追加されたりはしない)
Eclipse(Subversive)の機能。[2008-12-29]
普通はSVNリポジトリー・エクスプローラー内には最新時点のツリー(trunk・branches・tagsを含む)しか無いが、過去のある時点のリビジョンのツリーを簡単に見ることが出来る。
いわば、そのリビジョンの「スナップショットをとる」「ショートカットを作る」「タグを付ける」イメージ。
(CVSリポジトリー・エクスプローラーで日付を指定してブランチやタグを準備するのと似ている)
「改訂リンクの追加(A)」メニューによって改訂リンクを作成する。
すると、SVNリポジトリー・エクスプローラー内のロケーション直下の「REVISIONS」という要素の下に指定したリビジョン番号(あるいは日時)の要素が作られ、その下にその時点のツリーが表示される。
このツリーは参照専用であって、その中のファイルは編集できない。こっちの方がよっぽど『タグ』っぽい気がする(苦笑)
SVNでEclipseのプロジェクトを管理するには、「共用」する。
SVNサーバーへの接続中に以下のような「操作が失敗しました」ダイアログが出てエラーとなる場合、SVNサーバー側の設定(権限)がおかしいかも。[2008-12-28]
プロジェクトの共用に失敗しました。 svn: ファイル 'C:\svn\sample\db\txn-current-lock' を開けません: アクセスが拒否されました。
SVNで共用したプロジェクト内のファイル・ディレクトリーに対しての操作。[2008-12-29]
メニュー | 概要 | SVNコマンド相当 | ||
---|---|---|---|---|
チーム(E) | リポジトリーと同期化(S) | DF | リポジトリーと比較する。 | svn status |
コミット(C) | DF | コミットする。 | svn commit | |
更新(U) | DF | 最新状態を取り込む。 | svn update | |
パッチの作成(A) | DF | 差分ファイルを作成する。 | svn diff | |
パッチの適用(Y) | DF | 差分ファイルを適用する。 | patch | |
戻す(R) | DF | ローカルの修正を無しにする。 | svn revert | |
バージョン管理に追加(A) | DF | 新規に追加する。 | svn add | |
svn:ignoreに追加(I) | DF | 無視する(SVN管理外とする)。 | svn propset svn:ignore | |
競合の編集 | DF | 差分を表示して編集できる状態にする。 | svn update→p(延期) | |
マージ済みとマーク | F | 競合が解決されたことをEclipseに教える。 | svn resolve | |
ブランチ(B) | DF | ブランチを作成する。 | svn copy | |
タグ(T) | DF | タグを作成する。 | svn copy | |
マージ(M) | DF | マージする。 | svn merge | |
切り替え(W) | DF | svn switch? | ||
ヒストリーの表示(H) | DF | 改訂履歴を表示する。 | svnlook history svn log |
|
ローカル・ヒストリーの表示(H) | F | Eclipse内での改訂履歴を表示する。 | ||
注釈の表示(A) | F | 変更履歴付きで内容を表示する。 | svn annotate | |
ロック(L) | DF | ロックする。 | svn lock(--force) | |
アンロック(N) | DF | ロックを解除する。 | svn unlock(--force) | |
プロパティーの表示(P) | DF | プロパティー(属性)一覧を表示する。 | svn proplist | |
プロパティーの設定 | DF | プロパティー(属性)を追加する。 | svn propset | |
キーワードの設定 | DF | キーワード置換の可否を設定する。 | svn propset svn:keywords | |
次へコピー | DF | 別の場所へコピーする。 | svn copy | |
エクスポート | DF | エクスポートする。 | svn export | |
クリーンアップ(L) | D | クリーンアップする。 | svn cleanup | |
比較(A) | 作業コピーからBase(B) | DF | 自分の変更前状態と比較する。 | svn diff |
リポジトリーから最新(L) | DF | リポジトリーの最新版と比較する。 | ||
改訂またはURL(U) | DF | 別リビジョンと比較する。 | ||
ブランチ | DF | ブランチ内のものと比較する。 | ||
タグ | DF | タグ内のものと比較する。 | ||
相互(E) | DF | 選択されている2つものを比較する。 | diff | |
ローカル・ヒストリー(L) | F | Eclipse内のバックアップと比較する。 | ||
クリップボード | F | クリップボード内の文字列と比較する。 | ||
ワークスペース・ファイル | F | Eclipse内の別ファイルと比較する。 | ||
外部ファイル | F | 別ファイルと比較する。 | ||
開いたエディター | F | 開いている(タブに並んでいる)ファイルと比較 | ||
置換(L) | リポジトリーから最新(L) | DF | リポジトリーの最新版で置き換える。 | |
改訂またはURL(U) | DF | 別リビジョン版で置き換える。 | ||
ブランチ(B) | DF | ブランチから置き換える。 | ||
タグ(T) | DF | タグから置き換える。 | ||
ローカル・ヒストリー(L) | F | Eclipse内のバックアップから置き換える。 | ||
ローカル・ヒストリーの前回のものと置換(P) | F | 直前のバックアップから置き換える。 | ||
クリップボード | F | クリップボード内の文字列を貼り付ける。 | Ctrl+V(貼り付け) | |
ワークスペース・ファイル | F | Eclipse内の別ファイルから置き換える。 | (Ctrl+Shift+R(リソース)) | |
外部ファイル | F | 別ファイルから置き換える。 | copy | |
開いたエディター | F | 開いている(タブに並んでいる)ファイルの内容 | copy |
コミットする為のダイアログ。[2009-10-21]
「チーム」→「コミット」メニューや同期化ビューの「コミット」で「コミット」ダイアログが開く。
コミット対象一覧の行をダブルクリックすると、そのファイルのリポジトリーとの差分が比較用ダイアログで表示される。
(Eclipse3.4のCVSと同様)
ただし、変更内容がプロパティーの場合は、比較しても何も差が出ない。
(そういう時は、コミット対象一覧の右側の「プロパティー」欄にModifiedとか出ているはず。
プロパティーがどう変わったのかも分かると便利なんだけど…)
差分をパッチ(テキストファイル)の形で保持し、別ファイルに適用することで同じ変更を施すことが出来る。 [2009-10-21]
「チーム」→「パッチの作成」メニューで「パッチの作成」ダイアログが開く。
また、(CVSのパッチの作成と異なり、)ヒストリービュー上から作成することも出来る。
2つのバージョンを選択した場合、その間の全ての変更を取り込んだパッチとなる。
「チーム」→「パッチの適用」メニューで「パッチの適用」ダイアログが開く。
パッチを適用する際は、念の為、どういう変更になるか差分を確認した方がいいだろう。
(コミットダイアログと似た感じで変更対象一覧が表示され、変化を見ることが出来る)
ファイルやディレクトリーの改訂履歴を表示するビュー。[2008-12-29]
改訂(リビジョン番号)、日付、作成者、コメント(コミット時のログメッセージ)の一覧表。
「チーム」→「ヒストリーの表示」メニューやSVNリポジトリーエクスプローラーの「ヒストリーの表示」メニューでヒストリービューを開く。
「エディターおよび選択にリンク」ボタンを押してオンにしていると、SVN配下のファイルを開く度に自動的にヒストリーが表示される。[2009-02-14]
色んなファイルの履歴を確認していきたい場合に便利。
ファイルやディレクトリーのプロパティー(属性)の名前と値を表示するビュー。[2008-12-29]
(リビジョンに対するプロパティー(属性)はRevision Propertiesビューで照会する)
「チーム」→「プロパティーの表示」メニューやSVNリポジトリーエクスプローラーの「プロパティーの表示」メニューでSVNプロパティービューを開く。
右クリックメニューで属性の追加・編集・削除が行える。
ディレクトリーへ属性を追加/変更する時に「プロパティーを再帰的に適用」することも出来る。(svn
propset --recursive)
また、「Apply Recursively」メニューで、既存の属性をサブディレクトリーに適用できるのも便利。
フィルターオプションで、ファイルのみ・ディレクトリーのみ・全てという具合に、適用する対象を絞り込むことも出来る。
リビジョンに対するプロパティー(属性)の名前と値を表示するビュー。[2008-12-29]
つまり、svn info(やsvnlook
info)で表示されるような情報(更新者(svn:author)、更新日時(svn:date)、コミットログメッセージ(svn:log))が確認できる。
ヒストリービューから履歴の行を右クリックして「改訂プロパティーの表示」を選ぶことで、その履歴(リビジョン)のプロパティーが表示される。
また、ここから属性値を変更することも出来る。
(SVNサーバー側のpre-revprop-changeフックで“リビジョンの属性値の変更を許可する”よう設定されている必要有り)
Eclipseのリファクタリング機能に連動してSVNの操作も行われる。[2009-01-18]
リファクタリング操作 | SVNとの関係 | svnコマンド |
---|---|---|
クラス名変更 | ソースファイル名(拡張子.java)も改名される。 | svn rename |
クラス移動 | クラスを別パッケージへ移動すると ソースファイルの置かれているディレクトリーが変わる。 |
svn move |
パッケージ名変更 | パッケージ名を変更すると、そのディレクトリー名変更と共に 内部のクラスファイルのパッケージ名が変更される。 →コミット時にエラーが出た場合の対処方法 |
ディレクトリーのsvn move |
ソースファイルの移動(クラス名の変更)は、実質的に削除+新規追加の操作となる。(svn moveコマンドの動作と同じ)
新しいファイルを追加した直後(コミット前)に履歴を見ると、リポジトリー(SVNサーバー)側にそのファイルは存在しないので、何も出てこない。
しかし、移動前(改名前)の履歴もちゃんと残っており、コミットすれば参照することが出来る。
コミット前でも、リポジトリーと同期化すると、ちゃんと変更前のファイルと比較できる。[2009-01-20]
同期化でなく比較を用いると、新規扱いなので古いソースとは比較できない。
パッケージ名変更を行った後にそのままコミットしようとすると、エラーになる。
ダイアログ名: 未解決の競合
メッセージ: ディレクトリ'〜'はリポジトリ側と比べて古くなっています
削除された側(古い方)のディレクトリーの管理情報が何かおかしくなっているらしい。
この場合、(全体を)更新してからコミットすればよい。
(パッケージ内部のファイルの履歴もちゃんと保持・変更される)
SVNリポジトリー・エクスプローラーを使って、過去に削除したファイルを復活させることが出来る。[2009-01-27]
もしくは、
リポジトリーからリポジトリーへ直接コピーするので、毎回コミットが必要。
かつ、1ファイルずつ実行になるので、まとめてコミットすることは出来ない…。
(svn copyコマンドによる、URL→URLの方法と同様)
(svn copyコマンドでは、リポジトリーからワークへ復活させる方法も出来るのだが、Subversiveでは出来なさそう…)