yet another update

This commit is contained in:
Edward R. Gonzalez 2024-10-18 16:26:08 -04:00
parent c6f1f50705
commit 1cf2d0d765

View File

@ -1,5 +1,5 @@
# PowerShell script to remove Content directory from Git history # PowerShell script to remove Content directory from Git history
Clear-Host clear-host
# Script setup # Script setup
$ErrorActionPreference = "Stop" $ErrorActionPreference = "Stop"
@ -42,13 +42,21 @@ function Remove-ContentFromGitHistory {
$fmt_delete_refs = 'delete %(refname)' $fmt_delete_refs = 'delete %(refname)'
$original_refs = 'refs/original' $original_refs = 'refs/original'
Write-Verbose "Received path_repo: $path_repo"
if ([string]::IsNullOrWhiteSpace($path_repo)) {
throw "Repository path is null or empty"
}
if (-not (Test-Path $path_repo)) {
throw "Repository path does not exist: $path_repo"
}
# Navigate to repository root # Navigate to repository root
Push-Location $path_repo Push-Location $path_repo
try { try {
Write-Verbose "Current directory: $(Get-Location)" Write-Verbose "Current directory: $(Get-Location)"
Write-Verbose "Repository path: $path_repo"
Write-Verbose "Content path: $path_content"
# Check if we're in a git repository # Check if we're in a git repository
if (-not (Test-Path (Join-Path $path_repo '.git'))) { if (-not (Test-Path (Join-Path $path_repo '.git'))) {
@ -61,8 +69,8 @@ function Remove-ContentFromGitHistory {
} }
# Get the relative path of the content directory # Get the relative path of the content directory
$path_relative = Resolve-Path -Relative -Path $path_content $path_content_relative = Resolve-Path -Relative -Path $path_content
Write-Verbose "Relative content path: $path_relative" Write-Verbose "Relative content path: $path_content_relative"
Write-Verbose "Removing Content directory from Git history..." Write-Verbose "Removing Content directory from Git history..."
@ -70,48 +78,40 @@ function Remove-ContentFromGitHistory {
$filter_branch_args = @( $filter_branch_args = @(
$fgit_force, $fgit_force,
$fgit_index_filter, $fgit_index_filter,
"git rm -r $fgit_cached $fgit_ignore_unmatch `"$path_relative`"", "git rm -r $fgit_cached $fgit_ignore_unmatch `"$path_content_relative`"",
$fgit_prune_empty, $fgit_prune_empty,
$fgit_tag_name_filter, $fgit_tag_name_filter,
$fgit_filter_concat, $fgit_filter_concat,
$fgit_filter_separate, $fgit_filter_separate,
$fgit_all $fgit_all
) )
& git $cgit_filter_branch $filter_branch_args $filter_branch_cmd = "git $cgit_filter_branch $($filter_branch_args -join ' ')"
if ($LASTEXITCODE -ne 0) { throw "Error during filter-branch operation" } Write-Verbose "Executing command: $filter_branch_cmd"
Invoke-Expression $filter_branch_cmd
Write-Verbose "Cleaning up refs..." Write-Verbose "Cleaning up refs..."
# Clean up refs using git directly # Clean up refs using git directly
$refs = & git show-ref --heads | ForEach-Object { $_.Split()[1] } $refs = git show-ref --heads | ForEach-Object { $_.Split()[1] }
foreach ($ref in $refs) { foreach ($ref in $refs) {
$originalRef = "refs/original/$ref" $originalRef = "$original_refs/$ref"
if (& git show-ref --verify --quiet $originalRef) { if (git show-ref --verify --quiet $originalRef) {
Write-Verbose "Deleting ref: $originalRef" Write-Verbose "Deleting ref: $originalRef"
& git update-ref -d $originalRef git $cgit_update_ref -d $originalRef
if ($LASTEXITCODE -ne 0) {
Write-Warning "Error deleting ref: $originalRef"
}
} }
} }
# Remove any remaining refs/original directory # Remove any remaining refs/original directory
$originalRefsPath = Join-Path $repoPath ".git\refs\original" $originalRefsPath = Join-Path $path_repo ".git\$original_refs"
if (Test-Path $originalRefsPath) { if (Test-Path $originalRefsPath) {
Write-Verbose "Removing refs/original directory" Write-Verbose "Removing refs/original directory"
Remove-Item -Recurse -Force $originalRefsPath Remove-Item -Recurse -Force $originalRefsPath
} }
Write-Verbose "Expiring reflog..." Write-Verbose "Expiring reflog..."
# Expire reflog git $cgit_reflog_expire $fgit_expire_now $fgit_all
$reflog_expire_args = @($fgit_expire_now, $fgit_all)
& git $cgit_reflog_expire $reflog_expire_args
if ($LASTEXITCODE -ne 0) { throw "Error during reflog expiration" }
Write-Verbose "Running garbage collection..." Write-Verbose "Running garbage collection..."
# Garbage collection git $cgit_garbage_collect $fgit_prune_now $fgit_aggressive
$gc_args = @($fgit_prune_now, $fgit_aggressive)
& git $cgit_garbage_collect $gc_args
if ($LASTEXITCODE -ne 0) { throw "Error during garbage collection" }
Write-Verbose "Content removal from Git history completed successfully." Write-Verbose "Content removal from Git history completed successfully."
} }
@ -133,6 +133,7 @@ if ($confirmation -ne 'y') {
} }
# Execute the function # Execute the function
Write-Verbose "Calling Remove-ContentFromGitHistory with path_root: $path_root"
Remove-ContentFromGitHistory $path_root Remove-ContentFromGitHistory $path_root
Write-Host "Script execution completed. Please review your repository to ensure the desired outcome." Write-Host "Script execution completed. Please review your repository to ensure the desired outcome."