Git/Create-GitRepoDeltaFromBase.ps1
function Create-GitRepoDeltaFromBase { Param( [Parameter(Mandatory=$true)] [string]$RepoPath, [Parameter(Mandatory=$false)] [switch]$Reverse, [Parameter(Mandatory=$false)] [switch]$NoContent, [Parameter(Mandatory=$false)] [string]$BasePath = '' ) if ($BasePath -eq '') { $BasePath = Get-GitRepoBasePath -RepoPath $RepoPath } $TempFolder = Create-TempDirectory $DeltasFolder = Join-Path $TempFolder 'Deltas' $ReplacementFolder = Join-Path $TempFolder 'Replacements' $BaseFolder = Join-Path $TempFolder 'Base' $AdditionFolder = Join-Path $TempFolder 'Addition' Create-EmptyDirectory $DeltasFolder Create-EmptyDirectory $ReplacementFolder Create-EmptyDirectory $BaseFolder Create-EmptyDirectory $AdditionFolder Write-Host -ForegroundColor Green "Retrieving differences between $BasePath and $RepoPath" $Objects = Invoke-TFFolderDiff -SourceFolder $BasePath -TargetFolder $RepoPath -TargetVersion $ChangesetNo [int]$ObjectNo = 0 foreach ($Object in $Objects) { $ObjectNo++ Write-Progress -Activity ('Creating deltas for {0}' -f $RepoPath) -PercentComplete (($ObjectNo / $Objects.Count) * 100) if ($NoContent) { New-Item -Path (Join-Path $ReplacementFolder $Object) -ItemType File } else { if (Test-Path (Join-Path $RepoPath $Object)) { Copy-Item (Join-Path $RepoPath $Object) (Join-Path $AdditionFolder $Object) } if ([IO.File]::Exists((Join-Path $AdditionFolder $Object))) { $VersionList = Get-NAVObjectVersion (Join-Path $AdditionFolder $Object) $CustomVerionList = '' if ($VersionList -ne '') { $CustomVerionList = Get-CustomVersionList $VersionList } if ($CustomVerionList -eq '') { Remove-Item (Join-Path $AdditionFolder $Object) -Force } else { Get-ObjectsFromTFSBranch -BranchPath (Join-Path $BasePath $Object) -DestinationPath (Join-Path $BaseFolder $Object) -Type File if (!(Get-IsStandardNAVObject -ObjectFileName $Object)) { [IO.File]::Move((Join-Path $AdditionFolder $Object),(Join-Path $ReplacementFolder $Object)) } } } } } if (!$NoContent.IsPresent) { if ($Reverse) { Compare-NAVApplicationObject -OriginalPath $AdditionFolder -ModifiedPath $BaseFolder -DeltaPath $DeltasFolder } else { Compare-NAVApplicationObject -OriginalPath $BaseFolder -ModifiedPath $AdditionFolder -DeltaPath $DeltasFolder } } Write-Progress -Activity ('Creating deltas for {0}' -f $RepoPath) -Completed $ResultObject = New-Object System.Object $ResultObject | Add-Member -Type NoteProperty -Name 'DeltasPath' -Value $DeltasFolder $ResultObject | Add-Member -Type NoteProperty -Name 'ReplacementsPath' -Value $ReplacementFolder $ResultObject } Export-ModuleMember -Function Create-GitRepoDeltaFromBase |