InstalledビルドエンジンをSVN管理フォルダ内に含めるとバージョン管理対象になってしまう

5.7からInstalledビルド(ランチャー版でも同様)をSVN管理されているフォルダ内に配置すると

無視フォルダとして設定されていても

バージョン管理対象扱いされるようです。

5.6まではバージョン管理外として扱われており、無視されておりました。

また、バイナリ化されていないソースエンジンの場合はSVN管理フォルダ内にあっても無視されます

発生している問題としては、チェックインの際にエンジンコンテンツを含んでいる場合、以下のようなリビジョンコントロールからエンジンコンテンツをコミットするようにエラー警告が発生します。(エラーを無視してコミットは可能です)

/Engine/EngineMaterials/Good64x64TilingNoiseHighFreq.Good64x64TilingNoiseHighFreq が参照されており、リビジョン コントロール「C:/Test/Engine/Content/EngineMaterials/Good64x64TilingNoiseHighFreq.uasset」にも追加する必要があります (/Game/NewMaterial.NewMaterial から参照されている)

ソースエンジン同様、エンジンコンテンツについては無視扱いにしたいのですが

どう対応すればよろしいでしょうか?

よろしくお願い致します。

[Attachment Removed]

お世話になっております。

あけましておめでとうございます。今年もよろしくお願いします。

/Engine/Plugins/Editor/DataValidation/Source/DataValidation/Private/EditorValidatorSubsystem.cpp

EDataValidationResult UEditorValidatorSubsystem::ValidateAssetsInternal()の中で

Settings.bCaptureWarningsDuringValidationAsErrors = falseを設定してもう一回試していただけませんか?

そうするとWarningとして表示されると思います。

追加情報として、こちらのスレッドも参考になるかもしれません。

お手数ですが、よろしくお願いします。

[Attachment Removed]

調査結果と対処方法の詳しい共有、ありがとうございます。

問題の原因をここまで特定されていて、とても参考になります。

ご説明いただいた内容を見ると、

  • SVN の 作業コピーではないディレクトリ にあるファイルを
  • Unreal Engine 側が NotControlled(追加可能) と誤って判断してしまい
  • その結果、Engine/Content が誤ってバージョン管理対象になる

という点が問題の本質だと理解しました。

W155007: is not a working copyのエラーメッセージを確認し、EWorkingCopyState::NotAWorkingCopyに再設定する、という現在の修正方法は、妥当で現実的な対応だと思います。

いただいた情報は、Subversion Source Control を担当しているチームに共有し、

  • エンジン側で修正すべき問題か
  • 5.7 からの意図した仕様変更なのか
  • Engine/Content を明確に無視できる仕組みを入れるべきかについて確認します。

チームから何か回答があり次第、こちらで改めてご連絡します。

引き続きありがとうございます。

[Attachment Removed]

情報ありがとうございます。

エラーより、バージョン管理対象処理をされてしまうため、

誤ってエンジンコンテンツのコミットが起きていることが大きなイテレーションミスにつながる懸念があり

以前のような完全無視の状態にすることはできませんでしょうか?

少し補足です。

SVNの設定上はignore設定にはなっているのですが

エンジンのリビジョンコントロールがそのignore を無視して

制御下に置こうとしている為、本来できないはずのAddがコンテンツブラウザ上からは可能になっている状態です

さらに調査補足です

Installedビルドでなくても、ソースコードのエンジンでも発生しました。

[Attachment Removed]

調査の結果原因と対処方法がわかりました

(正直なぜ5.7からこうなったかまでは不明ではありますが・・・)

問題の発生要因

まず、InstalledビルドエンジンはSVN管理フォルダ内にはあるがバージョン管理しないケースがあります

これは、バイナリ化されている為可変が起こらないので、バージョン管理する必要性が無いためです

しかし現状

SVN作業コピーではないディレクトリ配下のファイルが、

「管理対象外(NotControlled)」=「追加可能」扱いになる問題が発生していました。

再現手順

  1. SVN 管理下のプロジェクトディレクトリ内に、SVN作業コピーではない Engine ディレクトリを配置
  2. UE5.7 エディタを起動し SVN に接続
  3. Source Control の状態更新を実行
  4. Engine/Content 配下のアセットを確認 追加可能になっている

実際の挙動では

SVNは svn: warning: W155007: ‘<path>’ is not a working copy を返してくるのに対し

UE内部は NotControlled を設定するためAdd可能状態になってしまいます

直接の原因は

FSubversionUpdateStatusWorker::Execute()内の以下の箇所です

「WorkingCopyRoot 配下に存在する = SVN作業コピーである」としていますが、

実際には作業コピーではないディレクトリが存在し得ます

if (State.GetFilename().StartsWith(InCommand.WorkingCopyRoot))
{
    State.WorkingCopyState = EWorkingCopyState::NotControlled;
}
else
{
    State.WorkingCopyState = EWorkingCopyState::NotAWorkingCopy;
}

暫定の対応方法としては

SubversionSourceControlUtils::ParseStatusResults(ResultsXml, InCommand.ErrorMessages, InCommand.UserName, InCommand.WorkingCopyRoot, OutStates);の直下で、InCommand.ErrorMessages内で W155007: is not a working copy を持つものが来た場合

EWorkingCopyState::NotAWorkingCopy に再設定する対応で解決できました。

そのまま判定するとプロジェクト側の新規ディレクトリを含むファイルもNotAWorkingCopyの扱いをうけるので必要であればエンジンコンテンツのみを対象にした方がスマートです

一先ず以上となります。

[Attachment Removed]