Keep Android build provenance clean after unchanged Unity settings rewrite
This commit is contained in:
@@ -47,6 +47,18 @@ try {
|
||||
$record.apkSha256 = (Get-FileHash -LiteralPath $apkPath -Algorithm SHA256).Hash
|
||||
& (Join-Path $PSScriptRoot 'android/inspect-apk.ps1') -ApkPath $apkPath -EvidenceDir $evidenceDir -SourceCommit $record.sourceCommit -SourceDirty $record.sourceDirty -MetadataName 'apk-metadata.json'
|
||||
$record.apkMetadata = Join-Path $evidenceDir 'apk-metadata.json'
|
||||
# Unity rewrites these files with LF; restore only when Git proves their content is unchanged.
|
||||
$record.normalizedUnchangedSettings = @()
|
||||
if (!$record.sourceDirty) {
|
||||
foreach ($settingsPath in @('ProjectSettings/GraphicsSettings.asset','ProjectSettings/ProjectAuditorSettings.asset','ProjectSettings/ProjectSettings.asset')) {
|
||||
& git diff --quiet HEAD -- $settingsPath
|
||||
if ($LASTEXITCODE -eq 0 -and [bool](& git status --porcelain -- $settingsPath)) {
|
||||
& git restore --worktree -- $settingsPath
|
||||
if ($LASTEXITCODE -ne 0) { throw "Cannot restore unchanged generated setting: $settingsPath" }
|
||||
$record.normalizedUnchangedSettings += $settingsPath
|
||||
}
|
||||
}
|
||||
}
|
||||
$record.sourceCommitEnd = (& git rev-parse HEAD)
|
||||
& git update-index --refresh | Out-Null
|
||||
$record.sourceDirtyEnd = [bool](& git status --porcelain)
|
||||
|
||||
Reference in New Issue
Block a user