Git/Create-GitRepoDeltaBetweenCommits.ps1

function Create-GitRepoDeltaBetweenCommits
{
    Param(
        [Parameter(Mandatory=$false)]
        [string]$FromCommit,
        [Parameter(Mandatory=$false)]
        [string]$ToCommit,
        [Parameter(Mandatory=$false)]
        [string]$DeltaPath
    )

    if ($DeltaPath -eq '')
    {
        $DeltaPath = Create-TempDirectory
    }
    
    if ($FromCommit -eq '')
    {
        $FromCommit = Select-Commit
    }

    if ($ToCommit -eq '')
    {
        $ToCommit = Select-Commit
    }

    if ($FromCommit -eq '' -Or $ToCommit -eq '')
    {
        Write-Error "Parameter not set"
    }

    Write-Host -ForegroundColor Green "Retrieving differences between $FromCommit and $ToCommit"
    $FromDiffObjects = git diff $FromCommit $ToCommit --name-only --no-renames --diff-filter=DM -name '*.TXT'
    $ToDiffObjects = git diff $FromCommit $ToCommit --name-only --no-renames --diff-filter=AM -name '*.TXT'

    $FromObjectsFolder = Create-TempDirectory
    $ToObjectsFolder = Create-TempDirectory

    foreach($FromDiffObject in $FromDiffObjects)
    {
        git checkout $FromCommit $FromDiffObject
        Copy-Item $FromDiffObject $FromObjectsFolder
    }
    
    foreach($ToDiffObject in $ToDiffObjects)
    {
        git checkout $ToCommit $ToDiffObject
        Copy-Item $ToDiffObject $ToObjectsFolder        
    }
    
    Compare-NAVApplicationObject -OriginalPath $FromObjectsFolder -ModifiedPath $ToObjectsFolder -DeltaPath $DeltaPath

    Write-Host "Result: $DeltaPath"
    git reset --hard HEAD -q
}

Export-ModuleMember -Function Create-GitRepoDeltaBetweenCommits