TortoiseSVN 1.10.0とWindowsのセキュリティ保護機構
日曜日, 7月 22nd, 2018stenretniです。最近洗面所で蛇口をひねるとほかほかのお湯が出てきます(湯沸かし器ではなく、天日です)。
2018年4月、一年ぶりにSubversionの新しいバージョン(1.10.0)が出て、それにあわせてTortoiseSVNも更新されました。
本体の新機能としてはフォルダツリーのマージアルゴリズムの改良や、シェルフ(コミット前の変更を退避)がありますが、個人的にはTortoiseSVNのダイアログを開く速度が遅い問題が直ったことが一番嬉しいです。stenretniは差分をなんとなく見ることが多いので、他のツールを使うことでお茶を濁していたのですが、使い慣れているTortoiseMergeにこれで戻れました。
この問題は、Windows10の1709 Fall Creators Updateの際に入ったセキュリティ保護の機構がTortoiseSVNの描画方式とかちあったためのものだそうです。(Microsoft開発者フォーラムの記事参照)
TortoiseSVNは元々、MFCのリボンツールバーのコントロールを使っていました。このコントロールは内部でGDIのGetPixel/SetPixelを多用します。Windowsに入った保護機構のうちにピクセル単位の読み書きを遅延するものがあり、その仕組みが暴発した結果ダイアログが開くのが遅くなったそうです。
TortoiseSVNの側で2017年11月、ツールバーの実装をネイティブに乗り換えるという形で対策が入りました。ただこちらはSubversion本家のバージョンアップまでリリースを待ったため、正式版での修正の発表は冒頭のとおり4月になりました。その前にWindowsの2018年1月のパッチでその暴発は修正されたのですが、このアップデートがベータテストを経て全ユーザに降るまでには間がありました。stenretniの手元では、TortoiseSVNの更新のほうがWindowsのパッチが振ってくるより先でしたが、逆の人もいたと思います。
上の経緯を忘れてユーザから結果だけを見ると、TortoiseSVNで最近ダイアログが開くのが遅いのがなんか待っていたら直った、というだけなのですが、追いかけてみるとTortoiseSVNの開発者の方たちの苦労が感じられました。
リンク
- Apache Subversion 1.10 リリースノート
- TortoiseSVN 1.10.0 リリースノート
- TortoiseSVN – シェルフ
- Very slow (tortoise)SVN compare to base since win 10 Fall Creators Update [Local Repo]? – Stack Overflow
- MFC Ribbon slow on first load/show – Developer Community
- r28025: Merge ‘tortoisemerge-native-ribbon’ branch – TortoiseSVN
- 「Fall Creators Update」でGetPixel/SetPixel関数が遅くなる問題、「KB4058258」で修正 – 窓の杜