Created
May 23, 2024 11:53
-
-
Save tetri/e01abf8fbb49c79fbf55dc0f12396d86 to your computer and use it in GitHub Desktop.
Este script em PowerShell automatiza o processo de verificar e descartar alterações em arquivos dentro de uma pasta e suas subpastas em um repositório SVN, quando as diferenças são apenas espaços em branco e quebras de linha extras.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Parâmetros do script | |
param ( | |
[string]$folderPath | |
) | |
# Função para normalizar o conteúdo do arquivo | |
function Normalize-Content { | |
param ( | |
[string]$content | |
) | |
# Remove todos os espaços em branco e normaliza as quebras de linha | |
return ($content -replace '\s+', '') -replace '[\r\n]+', '' | |
} | |
# Função para verificar se há diferenças ignorando espaços em branco e quebras de linha extras | |
function Check-DiffIgnoringWhitespaceAndLineBreaks { | |
param ( | |
[string]$file | |
) | |
# Obtém o conteúdo do arquivo original do repositório | |
$originalContent = svn cat $file | |
# Obtém o conteúdo do arquivo modificado | |
$modifiedContent = Get-Content $file -Raw | |
# Normaliza os conteúdos | |
$originalNormalized = Normalize-Content -content $originalContent | |
$modifiedNormalized = Normalize-Content -content $modifiedContent | |
return $originalNormalized -eq $modifiedNormalized | |
} | |
# Função para reverter as alterações | |
function Revert-File { | |
param ( | |
[string]$file | |
) | |
svn revert $file | |
#Write-Host "Alterações revertidas para o arquivo: $file" | |
} | |
# Função para processar cada arquivo | |
function Process-File { | |
param ( | |
[string]$filePath | |
) | |
#Write-Host "Verificando diferenças no arquivo: $filePath" | |
if (Check-DiffIgnoringWhitespaceAndLineBreaks -file $filePath) { | |
#Write-Host "As únicas alterações são espaços em branco e/ou quebras de linha extras. Revertendo as alterações..." | |
Write-Host $filePath | |
Revert-File -file $filePath | |
} else { | |
#Write-Host "Há outras alterações além de espaços em branco e quebras de linha extras. Nenhuma ação foi tomada." | |
} | |
} | |
# Encontrar todos os arquivos modificados na pasta e subpastas | |
$svnStatusOutput = svn status $folderPath | |
$modifiedFiles = $svnStatusOutput | Where-Object { $_ -match '^[M]' } | ForEach-Object { $_.Trim().Substring(8) } | |
# Processar cada arquivo modificado | |
foreach ($file in $modifiedFiles) { | |
Process-File -filePath $file | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment