84 lines
2.6 KiB
PowerShell
84 lines
2.6 KiB
PowerShell
# PowerShell script to set up Git LFS for Content directory
|
|
clear-host
|
|
|
|
$path_scripts = $PSScriptRoot
|
|
$path_helpers = join-path $path_scripts 'helpers'
|
|
$path_root = split-path -Parent -Path $path_scripts
|
|
$path_ue = join-path '../../Surgo' 'UE'
|
|
$path_project = join-path $path_root 'Project'
|
|
|
|
|
|
# Set your repository paths here
|
|
$path_content = join-path $path_project 'Content'
|
|
|
|
|
|
# Function to remove Content directory from Git history
|
|
function Remove-ContentFromGitHistory {
|
|
push-location $path_repo
|
|
|
|
$cgit_filter_branch = 'filter-branch'
|
|
$cgit_for_each_ref = 'for-each-ref'
|
|
$cgit_update_ref = 'update-ref'
|
|
$cgit_reflog_expire = 'reflog expire'
|
|
$cgit_garbage_collect = 'gc'
|
|
|
|
$fgit_agressive = '--aggressive'
|
|
$fgit_all = '--all'
|
|
$fgit_cached = '--cached'
|
|
$fgit_format = '--format'
|
|
$fgit_expire_now = '--expire=now'
|
|
$fgit_ignore_unmatch = '--ignore-unmatch'
|
|
$fgit_index_filter = '--index-filter'
|
|
$fgit_force = '--force'
|
|
$fgit_prune_empty = '--prune-empty'
|
|
$fgit_prune_now = '--prune=now'
|
|
$fgit_tag_name_filter = '--tag-name-filter'
|
|
$fgit_stdin = '--stdin'
|
|
|
|
$fgit_filter_concat = 'cat'
|
|
$fgit_filter_separate = '--'
|
|
|
|
$fmt_delete_refs = 'delete $(refname)'
|
|
$original_refs = 'refs/original'
|
|
|
|
$filter_cmd = 'git rm -r --cached'
|
|
|
|
# Construct filter-branch command
|
|
$filter_branch_args = @()
|
|
$filter_branch_args += $fgit_force
|
|
$filter_branch_args += $fgit_index_filter
|
|
$filter_branch_args += "git rm -r $fgit_cached $fgit_ignore_unmatch $path_content"
|
|
$filter_branch_args += $fgit_prune_empty
|
|
$filter_branch_args += $fgit_tag_name_filter
|
|
$filter_branch_args += $fgit_filter_concat
|
|
$filter_branch_args += $fgit_filter_separate
|
|
$filter_branch_args += $fgit_all
|
|
|
|
# Execute filter-branch command
|
|
& git $cgit_filter_branch $filter_branch_args
|
|
|
|
# Construct for-each-ref command
|
|
$for_each_ref_args = @()
|
|
$for_each_ref_args += "$fgit_format='$fmt_delete_refs'"
|
|
$for_each_ref_args += $original_refs
|
|
|
|
# Execute for-each-ref and pipe to update-ref
|
|
$refs_to_delete = & git $cgit_for_each_ref $for_each_ref_args
|
|
$refs_to_delete | & git $cgit_update_ref $fgit_stdin
|
|
|
|
# Construct and execute reflog expire command
|
|
$reflog_expire_args = @()
|
|
$reflog_expire_args += $fgit_expire_now
|
|
$reflog_expire_args += $fgit_all
|
|
& git $cgit_reflog_expire $reflog_expire_args
|
|
|
|
# Construct and execute garbage collect command
|
|
$gc_args = @()
|
|
$gc_args += $fgit_prune_now
|
|
$gc_args += $fgit_aggressive
|
|
& git $cgit_garbage_collect $gc_args
|
|
|
|
pop-location
|
|
}
|
|
Remove-ContentFromGitHistory
|