概要
CS 版と VB 版の設定ファイルが、どこまで同じで、どこから違うのかが決まっていない。
Samples/WebApp_sample の Web.config は CS / VB でほぼ同じ内容だが、完全には同じでない。
「同じはずだから」とコピーすると、VB 固有の記述が消える。 実際に消した(後述)。
同期の方針を決め、差分が意図的なものだけになる状態にしたい。
現状
実際に起きたこと
#549 の作業で、CS 側 Web.config のコメントを整理した。同じコメントを VB 側にも入れるため
CS のファイルをコピーしたところ、VB 固有の内容が失われた。
| ファイル |
失われたもの |
VB/Samples/WebApp_sample/MVC_Sample/MVC_Sample/Web.config |
system.web/compilation/assemblies とその add(System.Runtime ほか)2 要素 |
VB/Samples/WebApp_sample/WebForms_Sample/WebForms_Sample/web.config |
接続文字列 ConnectionString_MCN の末尾の ; の有無が CS 側の値に変わった |
0_RunAll.ps1 -Lang Both は通った。 ビルドも疎通も問題なかったため、
気付かずにコミットされ得る状態だった(要素の突き合わせで検出した)。
VB 側は HEAD に戻してある。
ファイル名すら揃っていない
|
CS |
VB |
| MVC |
Web.config |
Web.config |
| Web Forms |
Web.config |
web.config(小文字) |
Windows では区別されないため今まで問題になっていないが、#550 と同じ種類の落とし穴である。
「同一性の実測」は Samples4NetCore にしかない
Samples4NetCore/ANALYSIS.md 4-1 節には、
Samples(net48)との同一ファイル数・差異ファイル数が実測で載っている。
CS / VB 間には、これに相当する記録が無い。
#542(VB の疎通確認)で「疎通の手順はそのまま通る」ことは確かめたが、
設定ファイルの中身までは突き合わせていない。
対応(案)
① まず突き合わせる
CS / VB の対応する設定ファイル(Web.config / app.config / appsettings.json)を
機械的に比較し、差分を「意図的」と「事故」に仕分ける。
比較は XML の要素・属性で行う(コメントや空白の差は無視する)。
#549 の作業では、この方法で 2 要素の欠落と 1 属性の変化を検出できた。
要素・属性が HEAD と一致 : False
- 失われた : /configuration/system.web/compilation/assemblies
+ 増えた : ... connectionString='...Password=seigi@123;' ...
② 意図的な差分を記録する
「CS / VB で違ってよい箇所」を文書に残す。 置き場所は
CONFIGURATION.md(設定の仕組みは既にここに集約した)か、
各 ANALYSIS.md の対応表。
③ 事故を直す
意図しない差分を揃える。
④ 再発を防ぐ
丸ごとコピーしない、という運用にする。今回は
「アンカー 1 行の直後にコメント ブロックだけを挿入する」形に直した。
さらに、差分の行数を必ず見る。今回は
「16 行足したはずが +23/−53 になっている」ことで気付いた。
自動チェックまで作るかは要検討。
2_RunAllTests.ps1 のような「期待値との突き合わせ」に載せる手はあるが、
意図的な差分を許容リストで持つ必要があるので、①②を済ませてからが良い。
影響
- 利用者への影響: 無し(設定値を揃える場合を除く。揃えるなら、その時点で改めて判断する)
- net48 / net10.0: 主に net48(
Samples の Web.config / app.config)。
Samples4NetCore には VB 版が無いため対象外
- 検証:
0_RunAll.ps1 -Lang Both
補足
この Issue は「揃える」ことが目的ではない。
違ってよい所は違ってよく、それが記録されていないことが問題である。
記録が無いと、今回のように「同じはずだ」と考えてコピーしてしまう。
関連: #542(VB の疎通確認)、#549(この問題が表面化した作業)、
#550(大文字小文字。ファイル名の web.config / Web.config は同種)
概要
CS 版と VB 版の設定ファイルが、どこまで同じで、どこから違うのかが決まっていない。
Samples/WebApp_sampleのWeb.configは CS / VB でほぼ同じ内容だが、完全には同じでない。「同じはずだから」とコピーすると、VB 固有の記述が消える。 実際に消した(後述)。
同期の方針を決め、差分が意図的なものだけになる状態にしたい。
現状
実際に起きたこと
#549の作業で、CS 側Web.configのコメントを整理した。同じコメントを VB 側にも入れるためCS のファイルをコピーしたところ、VB 固有の内容が失われた。
VB/Samples/WebApp_sample/MVC_Sample/MVC_Sample/Web.configsystem.web/compilation/assembliesとそのadd(System.Runtimeほか)2 要素VB/Samples/WebApp_sample/WebForms_Sample/WebForms_Sample/web.configConnectionString_MCNの末尾の;の有無が CS 側の値に変わった0_RunAll.ps1 -Lang Bothは通った。 ビルドも疎通も問題なかったため、気付かずにコミットされ得る状態だった(要素の突き合わせで検出した)。
VB 側は HEAD に戻してある。
ファイル名すら揃っていない
Web.configWeb.configWeb.configweb.config(小文字)Windows では区別されないため今まで問題になっていないが、
#550と同じ種類の落とし穴である。「同一性の実測」は Samples4NetCore にしかない
Samples4NetCore/ANALYSIS.md4-1 節には、Samples(net48)との同一ファイル数・差異ファイル数が実測で載っている。CS / VB 間には、これに相当する記録が無い。
#542(VB の疎通確認)で「疎通の手順はそのまま通る」ことは確かめたが、設定ファイルの中身までは突き合わせていない。
対応(案)
① まず突き合わせる
CS/VBの対応する設定ファイル(Web.config/app.config/appsettings.json)を機械的に比較し、差分を「意図的」と「事故」に仕分ける。
比較は XML の要素・属性で行う(コメントや空白の差は無視する)。
#549の作業では、この方法で 2 要素の欠落と 1 属性の変化を検出できた。② 意図的な差分を記録する
「CS / VB で違ってよい箇所」を文書に残す。 置き場所は
CONFIGURATION.md(設定の仕組みは既にここに集約した)か、各
ANALYSIS.mdの対応表。③ 事故を直す
意図しない差分を揃える。
④ 再発を防ぐ
丸ごとコピーしない、という運用にする。今回は
「アンカー 1 行の直後にコメント ブロックだけを挿入する」形に直した。
さらに、差分の行数を必ず見る。今回は
「16 行足したはずが +23/−53 になっている」ことで気付いた。
影響
SamplesのWeb.config/app.config)。Samples4NetCoreには VB 版が無いため対象外0_RunAll.ps1 -Lang Both補足
この Issue は「揃える」ことが目的ではない。
違ってよい所は違ってよく、それが記録されていないことが問題である。
記録が無いと、今回のように「同じはずだ」と考えてコピーしてしまう。
関連:
#542(VB の疎通確認)、#549(この問題が表面化した作業)、#550(大文字小文字。ファイル名のweb.config/Web.configは同種)