diff --git a/build.psm1 b/build.psm1 index 0c0365f63..866833dd2 100644 --- a/build.psm1 +++ b/build.psm1 @@ -657,17 +657,70 @@ function Copy-MappedFiles { [Parameter(ValueFromPipeline=$true)] [string[]]$Path = "$PSScriptRoot", [Parameter(Mandatory=$true)] - [string]$PslMonadRoot + [string]$PslMonadRoot, + [switch]$Force ) begin { + function MaybeTerminatingWarning + { + param([string]$Message) + + if ($Force) + { + Write-Warning "$Message : ignoring (-Force)" + } + else + { + throw "$Message : use -Force to ignore" + } + } + if (-not (Test-Path -PathType Container $PslMonadRoot)) { throw "$pslMonadRoot is not a valid folder" } - $map = @() + # Do some intelligens to prevent shouting us in the foot with CL management + + # finding base-line CL + $cl = git tag | % {if ($_ -match 'SD.(\d+)$') {[int]$Matches[1]} } | sort -Descending | select -First 1 + if ($cl) + { + Write-Host -ForegroundColor Green "Current base-line CL is SD:$cl (based on tags)" + } + else + { + MaybeTerminatingWarning "Could not determine base-line CL based on tags" + } + + try + { + Push-Location $PslMonadRoot + if (git status --porcelain) + { + MaybeTerminatingWarning "$pslMonadRoot has changes" + } + + if (git log --grep="SD:$cl" HEAD^..HEAD) + { + Write-Host -ForegroundColor Green "$pslMonadRoot HEAD matches [SD:$cl]" + } + else + { + Write-Host -ForegroundColor Yellow "Try to checkout this commit in $pslMonadRoot :" + git log --grep="SD:$cl" + + MaybeTerminatingWarning "$pslMonadRoot HEAD doesn't match [SD:$cl]" + } + } + finally + { + Pop-Location + } + + $map = @{} } process diff --git a/docs/workflow/mapping.md b/docs/workflow/mapping.md index c07665304..8b302bcd8 100644 --- a/docs/workflow/mapping.md +++ b/docs/workflow/mapping.md @@ -65,7 +65,7 @@ If you are creating new folder for that, create `map.json` with all mapped files ``` > git tag -SD-692351 <--- the last changelist +SD-692351 SD-693793 SD/688741 SD/692351 @@ -74,7 +74,7 @@ SD/695331 SD/700586 SD/704605 SD/706766 -SD/709766 +SD/709766 <--- the last changelist v0.1.0 v0.2.0 v0.3.0