- 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
123 lines
3.9 KiB
PowerShell
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
|
|
}
|