113 lines
3.4 KiB
PowerShell
113 lines
3.4 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"
|
|
#>
|
|
|
|
param (
|
|
[Parameter(Mandatory=$true)]
|
|
[string]$Username,
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
[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 -Username $Username -Email $Email
|
|
$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
|
|
}
|