スポンサードリンク

2012年02月12日

TortoiseSVN1.7での仕様変更についての調査結果

TortoiseSVN1.7からSVNマージ(Merge)後のコミット結果に仕様変更があった模様。

その事実を確認すべく、
・TortoiseSVN1.7.4
・TortoiseSVN1.6.16
・Subversion1.7.2
・Subversion1.6.6
を準備して調査を行いました。

まず、

1:「Subversion1.6.6」×「TortoiseSVN1.6.16」

の組み合わせ。

Low2_1.jpg

上記の画像の通り、
svn://localhost:166/projects/iwan/branches/subwork/low2

・test2.txt
・test3.txt
・test.sql
が存在する。

これを、
svn://localhost:166/projects/iwan/trunk/subwork
に対してマージを行う。

Low2_2.jpg

マージのテスト(test merge)を行うとこの通り。

Low2_3.jpg

実際にマージをしてみる。

【ディレクトリ(D)】
svn://localhost:166/projects/iwan/trunk/subwork

【ファイル(F)】
svn://localhost:166/projects/iwan/trunk/subwork/test2.txt
svn://localhost:166/projects/iwan/trunk/subwork/test3.txt
svn://localhost:166/projects/iwan/trunk/subwork/test.sql

がそれぞれ追加されるという結果になった。

さて、コミットしてみよう

コミットを行うと、

Low2_4.jpg

こうなる。やはり追加される。
「OK」を押すと・・・

Low2_5.jpg

追加された。
ログを確認。

Low2_6.jpg

うーん?(´・ω・`)??

「フォルダが追加された」という情報しか持っていない。
まあ、これで良いとしよう。

次に、

2:「Subversion1.6.6」×「TortoiseSVN1.7.4」

とする。
TortoiseSVNはアップデートしたが、サーバ側はしていない状態。
特に問題は起きない、はず。

Low_16_1.jpg

svn://localhost:166/projects/iwan/branches/subwork/low

・test2.txt
・test3.txt
・test.sql
が存在する。

これを、
svn://localhost:166/projects/iwan/trunk/subwork
に対してマージを行う。

フォルダ名以外は「1」とやっていることは同じです。

上記画像はテストマージのときの画像。
実際にマージしてみる。

Low_16_2.jpg

それぞれ追加される。
ここまでは問題ない。実際にコミットしてみよう。

Low_16_3.jpg

(´・ω・`)ぬ?

通常(+)って、何?
「プロパティの変更のみ」というのも気になる。

コミットすると・・・

Low_16_4.jpg

なんと、
svn://localhost:166/projects/iwan/trunk/subwork/low
しか影響を受けていない。

Low_16_5.jpg

ただもちろん、確認すると、実際にファイルは存在する。

最期に、
3:「Subversion1.7.2」×「TortoiseSVN1.7.4」

SVNサーバ側もアップデートしてみるとどうか?

Low_7_0.jpg

やってることは「2」と全く同じです。
テストマージして、

Low_7_1.jpg

マージを実際にやってみて。そして、

Low_7_2.jpg

コミットを実施しようとすると、やはり通常(+)
「プロパティの変更のみ」も出る。

Low_7_3.jpg

そしてコミット。

Low_7_4.jpg

ログも変わらず。


4:Tracとの連携において

結論としては、結局のところTortoiseSVNのバージョンに引っ張られるってことです。
TortoiseSVNが1.6であればディレクトリだけでなく、ファイルも「追加」されることになります。
TortoiseSVNが1.7であれば、ディレクトリだけの変更と捕らえられます。

ここで問題になるのが、
TortoiseSVN1.7はテストマージと結果違うよね?
というものと、
「追加」情報が存在しないから、TracのDBに影響がある
ということです。

後者が何かというと、TracとSVNを連携していると、ファイルの変更結果は
node_changeテーブルに連携されるわけです。
ここには

1:リビジョン番号何番で
2:どのリポジトリが
3:ディレクトリかファイルか
4:そのリポジトリが何をされて
5:その元リポジトリは何で
6:リビジョンは何番か

が連携されます。
で、

1:「Subversion1.6.6」×「TortoiseSVN1.6.16」

Low2_4.jpg

だと、

1:リビジョン9で、
2:svn://localhost:166/projects/iwan/trunk/subwork/low2が
3:これはD(ディレクトリ)で
4:ここは追加「A(Added)」され
5:元はsvn://localhost:166/projects/iwan/branches/subwork/low2で
6:元リビジョンは8です

という情報と

1:リビジョン9で、
2:svn://localhost:166/projects/iwan/trunk/subwork/low2/test2.txtが
3:これはF(ファイル)で
4:ここは追加「A(Added)」され
5:元はsvn://localhost:166/projects/iwan/branches/subwork/low2/test2.txtで
6:元リビジョンは8です

というのも、以下

svn://localhost:166/projects/iwan/trunk/subwork/test3.txt
svn://localhost:166/projects/iwan/trunk/subwork/test.sql

これらのファイルもあわせて計4つ「A(追加)」されたと情報がInsertされます。

しかし。

2:「Subversion1.6.6」×「TortoiseSVN1.7.4」

Low_16_3.jpg

の場合は、

1:リビジョン6で、
2:svn://localhost:166/projects/iwan/trunk/subwork/lowが
3:これはD(ディレクトリ)で
4:ここはコピー「C(Copy)」され
5:元はsvn://localhost:166/projects/iwan/branches/subwork/lowで
6:元リビジョンは5です

の情報しかInsertされません。


5:まとめ

まとめると、
TortoiseSVN1.7とTortoiseSVN1.6ではマージ時のコミットに仕様変更がある。
そして、Tracへ連携されるデータも異なる。
ということです。


6:追伸

TortoiseSVN1.7はテストマージと結果違うよね?
ってのは知らん。バグじゃないとするなら、テストマージは「実際に追加されるファイルらの情報」
であって、コミットの時に表示されるのはサーバ側に渡す情報ってことかな。

この後、wc.dbっていう.svnフォルダの中にあるdbの中身を
sqlite managerで覗きながらテストしたけどもわからんかった。
何故、こいつは急に「C」でコミットされるようになったんだ・・・。
リリースノートにも書いて欲しいんだけどなあ、こういう細かい変更も。

http://tortoisesvn.net/tsvn_1.7_releasenotes.html
に、ね。
posted by hinata_hisa at 19:57 | 東京 ☀ | Comment(0) | IT関係 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。