pdca0-dev-hub/cmd/pdca0-set-git-user.ps1
Alessandro Seravalli f93e9eaf69 Modificato script set user e nuovo switch branch:
- Aggiunti input username ed email nella UI di setup-conf.ps1 e salvataggio automatico nel file di configurazione JSON
- Modificato script di settaggio Git user per leggere username/email dal file di configurazione centralizzato (pdca0-config.json)
- Aggiornato switch-branch.bat: ora effettua stash delle modifiche locali prima dello switch, esegue il checkout, fa pull e riapplica lo stash se necessario
- Rinominato set-git-config.ps1 in pdca0-set-git-user.ps1 per maggiore chiarezza
2025-07-29 19:16:53 +02:00

123 lines
3.9 KiB
PowerShell

<#
.SYNOPSIS
Script per impostare username e email Git su tutti i repository nella cartella di progetto
.DESCRIPTION
Questo script cerca tutti i repository Git nella directory radice del progetto
e imposta il nome utente e l'email specificati per ciascuno di essi.
.PARAMETER Username
Il nome utente Git da impostare
.PARAMETER Email
L'indirizzo email Git da impostare
.PARAMETER RootDir
La directory radice in cui cercare i repository Git
.EXAMPLE
.\set-git-config-new.ps1 -Username "Mario Rossi" -Email "mario.rossi@intesasanpaolo.com" -RootDir "C:\Users\MarioRossi\progetti"
#>
# Carica username/email dal file di configurazione se non specificati
$ConfigPath = Resolve-Path (Join-Path $PSScriptRoot '../resources/pdca0-config.json')
if (Test-Path $ConfigPath) {
$configJson = Get-Content $ConfigPath -Raw | ConvertFrom-Json
if (-not $PSBoundParameters.ContainsKey('Username') -and $configJson.PSObject.Properties['username']) {
$Username = $configJson.username
}
if (-not $PSBoundParameters.ContainsKey('Email') -and $configJson.PSObject.Properties['email']) {
$Email = $configJson.email
}
}
param (
[Parameter(Mandatory=$false)]
[string]$Username,
[Parameter(Mandatory=$false)]
[string]$Email,
[Parameter(Mandatory=$true)]
[string]$RootDir
)
# Funzione per verificare se una directory è un repository Git
function Is-GitRepository {
param ([string]$Directory)
return (Test-Path -Path "$Directory\.git" -PathType Container)
}
# Funzione per impostare la configurazione Git in un repository
function Set-GitConfig {
param (
[string]$RepoPath,
[string]$Username,
[string]$Email
)
try {
Push-Location $RepoPath
Write-Host "Configurazione di $RepoPath" -ForegroundColor Cyan
# Imposta nome utente e email
git config user.name "$Username"
git config user.email "$Email"
# Verifica che le impostazioni siano state applicate correttamente
$configName = git config user.name
$configEmail = git config user.email
if ($configName -eq $Username -and $configEmail -eq $Email) {
Write-Host "Configurazione completata con successo" -ForegroundColor Green
} else {
Write-Host "Errore nella configurazione" -ForegroundColor Red
}
}
catch {
Write-Host "Errore durante la configurazione: $_" -ForegroundColor Red
}
finally {
Pop-Location
}
}
# Verifica se la directory radice esiste
if (-not (Test-Path -Path $RootDir)) {
Write-Host "La directory $RootDir non esiste!" -ForegroundColor Red
exit 1
}
# Trova tutte le directory di primo livello nella directory radice
$directories = Get-ChildItem -Path $RootDir -Directory
# Contatori per statistiche
$totalRepos = 0
$successfulRepos = 0
Write-Host "Ricerca dei repository Git in $RootDir..." -ForegroundColor Yellow
# Itera su tutte le directory di primo livello
foreach ($dir in $directories) {
$dirPath = $dir.FullName
# Verifica se la directory è un repository Git
if (Is-GitRepository -Directory $dirPath) {
$totalRepos++
Write-Host "Repository trovato: $dirPath" -ForegroundColor Blue
# Imposta la configurazione Git
Set-GitConfig -RepoPath $dirPath
$successfulRepos++
}
}
Write-Host ""
Write-Host "====== Riepilogo ======" -ForegroundColor Magenta
Write-Host "Repository trovati: $totalRepos" -ForegroundColor White
Write-Host "Repository configurati: $successfulRepos" -ForegroundColor White
if ($totalRepos -eq 0) {
Write-Host "Nessun repository Git trovato nella directory $RootDir" -ForegroundColor Yellow
}
elseif ($totalRepos -eq $successfulRepos) {
Write-Host "Tutti i repository sono stati configurati correttamente!" -ForegroundColor Green
}
else {
Write-Host "Alcuni repository non sono stati configurati correttamente." -ForegroundColor Red
}