fix conflict

This commit is contained in:
David Refoua 2024-10-17 20:00:21 +03:30
parent e220d114b2
commit 1cfba25beb

View File

@ -1,179 +1,179 @@
function readVersion($gitPath) { function readVersion($gitPath) {
$gitExecutable = "${gitPath}\git.exe" $gitExecutable = "${gitPath}\git.exe"
if (-not (Test-Path "$gitExecutable")) { if (-not (Test-Path "$gitExecutable")) {
return $null return $null
} }
$gitVersion = (cmd /c "${gitExecutable}" --version) $gitVersion = (cmd /c "${gitExecutable}" --version)
if ($gitVersion -match 'git version') { if ($gitVersion -match 'git version') {
($trash1, $trash2, $gitVersion) = $gitVersion.split(' ', 3) ($trash1, $trash2, $gitVersion) = $gitVersion.split(' ', 3)
} else { } else {
pause pause
return $null return $null
} }
return $gitVersion.toString() return $gitVersion.toString()
} }
function isGitShim($gitPath) { function isGitShim($gitPath) {
# check if there is a shim file - if yes, read the actual executable path # check if there is a shim file - if yes, read the actual executable path
# See: github.com/ScoopInstaller/Shim # See: github.com/ScoopInstaller/Shim
if (Test-Path "${gitPath}\git.shim") { if (Test-Path "${gitPath}\git.shim") {
$shim = (get-content "${gitPath}\git.shim") $shim = (get-content "${gitPath}\git.shim")
($trash, $gitPath) = $shim.replace(' ', '').split('=') ($trash, $gitPath) = $shim.replace(' ', '').split('=')
$gitPath = $gitPath.replace('\git.exe', '') $gitPath = $gitPath.replace('\git.exe', '')
} }
return $gitPath.toString() return $gitPath.toString()
} }
function compareVersions($userVersion, $vendorVersion) { function compareVersions($userVersion, $vendorVersion) {
if ($null -ne $userVersion) { if ($null -ne $userVersion) {
($userMajor, $userMinor, $userPatch, $userBuild) = $userVersion.split('.', 4) ($userMajor, $userMinor, $userPatch, $userBuild) = $userVersion.split('.', 4)
} else { } else {
return -1 return -1
} }
if ($null -ne $vendorVersion) { if ($null -ne $vendorVersion) {
($vendorMajor, $vendorMinor, $vendorPatch, $vendorBuild) = $vendorVersion.split('.', 4) ($vendorMajor, $vendorMinor, $vendorPatch, $vendorBuild) = $vendorVersion.split('.', 4)
} else { } else {
return 1 return 1
} }
if (($userMajor -eq $vendorMajor) -and ($userMinor -eq $vendorMinor) -and ($userPatch -eq $vendorPatch) -and ($userBuild -eq $vendorBuild)) { if (($userMajor -eq $vendorMajor) -and ($userMinor -eq $vendorMinor) -and ($userPatch -eq $vendorPatch) -and ($userBuild -eq $vendorBuild)) {
return 1 return 1
} }
if ($userMajor -gt $vendorMajor) { return 1 } if ($userMajor -gt $vendorMajor) { return 1 }
if ($userMajor -lt $vendorMajor) { return -1 } if ($userMajor -lt $vendorMajor) { return -1 }
if ($userMinor -gt $vendorMinor) { return 1 } if ($userMinor -gt $vendorMinor) { return 1 }
if ($userMinor -lt $vendorMinor) { return -1 } if ($userMinor -lt $vendorMinor) { return -1 }
if ($userPatch -gt $vendorPatch) { return 1 } if ($userPatch -gt $vendorPatch) { return 1 }
if ($userPatch -lt $vendorPatch) { return -1 } if ($userPatch -lt $vendorPatch) { return -1 }
if ($userBuild -gt $vendorBuild) { return 1 } if ($userBuild -gt $vendorBuild) { return 1 }
if ($userBuild -lt $vendorBuild) { return -1 } if ($userBuild -lt $vendorBuild) { return -1 }
return 0 return 0
} }
function compare_git_versions($userVersion, $vendorVersion) { function compare_git_versions($userVersion, $vendorVersion) {
$result = compareVersions -userVersion $userVersion -vendorVersion $vendorVersion $result = compareVersions -userVersion $userVersion -vendorVersion $vendorVersion
Write-Debug "Compare Versions Result: ${result}" Write-Debug "Compare Versions Result: ${result}"
if ($result -ge 0) { if ($result -ge 0) {
return $userVersion return $userVersion
} }
else { else {
return $vendorVersion return $vendorVersion
} }
} }
function Configure-Git($gitRoot, $gitType, $gitPathUser) { function Configure-Git($gitRoot, $gitType, $gitPathUser) {
# Proposed Behavior # Proposed Behavior
# Modify the path if we are using VENDORED Git, do nothing if using USER Git. # Modify the path if we are using VENDORED Git, do nothing if using USER Git.
# If User Git is installed but is older, match its path config adding paths # If User Git is installed but is older, match its path config adding paths
# in the same path positions allowing a user to configure Cmder Git path # in the same path positions allowing a user to configure Cmder Git path
# using locally installed Git Path Config. # using locally installed Git Path Config.
if ($gitType -eq 'VENDOR') { if ($gitType -eq 'VENDOR') {
# If User Git is installed replace its path config with Newer Vendored Git Path # If User Git is installed replace its path config with Newer Vendored Git Path
if (($null -ne $gitPathUser) -and ($gitPathUser -ne '')) { if (($null -ne $gitPathUser) -and ($gitPathUser -ne '')) {
Write-Verbose "Cmder 'profile.ps1': Replacing older user Git path '$gitPathUser' with newer vendored Git path '$gitRoot' in the system path..." Write-Verbose "Cmder 'profile.ps1': Replacing older user Git path '$gitPathUser' with newer vendored Git path '$gitRoot' in the system path..."
$newPath = ($env:path -ireplace [regex]::Escape($gitPathUser), $gitRoot) $newPath = ($env:path -ireplace [regex]::Escape($gitPathUser), $gitRoot)
} }
else { else {
if (-not ($env:Path -match [regex]::Escape("$gitRoot\cmd"))) { if (-not ($env:Path -match [regex]::Escape("$gitRoot\cmd"))) {
Write-Debug "Adding $gitRoot\cmd to the path" Write-Debug "Adding $gitRoot\cmd to the path"
$newPath = $($gitRoot + "\cmd" + ";" + $env:Path) $newPath = $($gitRoot + "\cmd" + ";" + $env:Path)
} }
# Add "$gitRoot\mingw[32|64]\bin" to the path if exists and not done already # Add "$gitRoot\mingw[32|64]\bin" to the path if exists and not done already
if ((Test-Path "$gitRoot\mingw32\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw32\bin"))) { if ((Test-Path "$gitRoot\mingw32\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw32\bin"))) {
Write-Debug "Adding $gitRoot\mingw32\bin to the path" Write-Debug "Adding $gitRoot\mingw32\bin to the path"
$newPath = "$newPath;$gitRoot\mingw32\bin" $newPath = "$newPath;$gitRoot\mingw32\bin"
} }
elseif ((Test-Path "$gitRoot\mingw64\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw64\bin"))) { elseif ((Test-Path "$gitRoot\mingw64\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw64\bin"))) {
Write-Debug "Adding $gitRoot\mingw64\bin to the path" Write-Debug "Adding $gitRoot\mingw64\bin to the path"
$newPath = "$newPath;$gitRoot\mingw64\bin" $newPath = "$newPath;$gitRoot\mingw64\bin"
} }
# Add "$gitRoot\usr\bin" to the path if exists and not done already # Add "$gitRoot\usr\bin" to the path if exists and not done already
if ((Test-Path "$gitRoot\usr\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\usr\bin"))) { if ((Test-Path "$gitRoot\usr\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\usr\bin"))) {
Write-Debug "Adding $gitRoot\usr\bin to the path" Write-Debug "Adding $gitRoot\usr\bin to the path"
$newPath = "$newPath;$gitRoot\usr\bin" $newPath = "$newPath;$gitRoot\usr\bin"
} }
} }
return $newPath return $newPath
} }
return $env:path return $env:path
} }
function Import-Git() { function Import-Git() {
$GitModule = Get-Module -Name Posh-Git -ListAvailable $GitModule = Get-Module -Name Posh-Git -ListAvailable
if ($GitModule | Select-Object version | Where-Object version -le ([version]"0.6.1.20160330")) { if ($GitModule | Select-Object version | Where-Object version -le ([version]"0.6.1.20160330")) {
Import-Module Posh-Git > $null Import-Module Posh-Git > $null
} }
if ($GitModule | Select-Object version | Where-Object version -ge ([version]"1.0.0")) { if ($GitModule | Select-Object version | Where-Object version -ge ([version]"1.0.0")) {
Import-Module Posh-Git > $null Import-Module Posh-Git > $null
$GitPromptSettings.AnsiConsole = $false $GitPromptSettings.AnsiConsole = $false
} }
if (-not $GitModule) { if (-not $GitModule) {
Write-Host -NoNewline "`r`n" Write-Host -NoNewline "`r`n"
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart Cmder." Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart Cmder."
Write-Host -NoNewline "`r$([char]0x1B)[A" Write-Host -NoNewline "`r$([char]0x1B)[A"
return $false return $false
} }
# Make sure we only run once by always returning true # Make sure we only run once by always returning true
return $true return $true
} }
function checkGit($Path) { function checkGit($Path) {
if (-not (Get-Command git -ErrorAction SilentlyContinue)) { if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
return return
} }
if (-not (Test-Path -Path (Join-Path $Path '.git'))) { if (-not (Test-Path -Path (Join-Path $Path '.git'))) {
$SplitPath = Split-Path $path $SplitPath = Split-Path $path
if ($SplitPath) { checkGit($SplitPath) } if ($SplitPath) { checkGit($SplitPath) }
return return
} }
if (getGitStatusSetting -eq $true) { if (getGitStatusSetting -eq $true) {
if ($null -eq $env:gitLoaded) { if ($null -eq $env:gitLoaded) {
$env:gitLoaded = Import-Git $env:gitLoaded = Import-Git
} }
if ($env:gitLoaded -eq $true) { if ($env:gitLoaded -eq $true) {
Write-VcsStatus Write-VcsStatus
} }
} }
else { else {
$headContent = Get-Content (Join-Path $Path '.git/HEAD') $headContent = Get-Content (Join-Path $Path '.git/HEAD')
if ($headContent -like "ref: refs/heads/*") { if ($headContent -like "ref: refs/heads/*") {
$branchName = $headContent.Substring(16) $branchName = $headContent.Substring(16)
} }
else { else {
$branchName = "HEAD detached at $($headContent.Substring(0, 7))" $branchName = "HEAD detached at $($headContent.Substring(0, 7))"
} }
Write-Host " [$branchName]" -NoNewline -ForegroundColor White Write-Host " [$branchName]" -NoNewline -ForegroundColor White
} }
} }
function getGitStatusSetting() { function getGitStatusSetting() {
$gitStatus = (git --no-pager config -l) | Out-String $gitStatus = (git --no-pager config -l) | Out-String
foreach ($line in $($gitStatus -split "`r`n")) { foreach ($line in $($gitStatus -split "`r`n")) {
if (($line -match 'cmder.status=false') -or ($line -match 'cmder.psstatus=false')) { if (($line -match 'cmder.status=false') -or ($line -match 'cmder.psstatus=false')) {
return $false return $false
} }
} }
return $true return $true
} }