PowerShell/Scripts/configure-git.ps1
2022-08-29 11:34:30 +02:00

69 lines
2.7 KiB
PowerShell
Executable File

<#
.SYNOPSIS
Configures Git
.DESCRIPTION
This PowerShell script configures the user settings for Git.
.PARAMETER FullName
Specifies the user's full name
.PARAMETER EmailAddress
Specifies the user's email address
.PARAMETER FavoriteEditor
Specifies the user's favorite text editor
.EXAMPLE
PS> ./configure-git
.LINK
https://github.com/fleschutz/PowerShell
.NOTES
Author: Markus Fleschutz | License: CC0
#>
param([string]$FullName = "", [string]$EmailAddress = "", [string]$FavoriteEditor = "")
try {
$StopWatch = [system.diagnostics.stopwatch]::startNew()
"⏳ Step 1/4 - Searching for Git executable..."
& git --version
if ($lastExitCode -ne "0") { throw "Can't execute 'git' - make sure Git is installed and available" }
"⏳ Step 2/4 - Input details..."
if ($FullName -eq "") { $FullName = read-host "Enter your full name" }
if ($EmailAddress -eq "") { $EmailAddress = read-host "Enter your e-mail address"}
if ($FavoriteEditor -eq "") { $FavoriteEditor = read-host "Enter your favorite text editor (emacs,nano,vi,vim,...)" }
"⏳ Step 3/4 - Saving basic settings (name,email,editor,symlinks,etc.)..."
& git config --global user.name $FullName
& git config --global user.email $EmailAddress
& git config --global core.editor $FavoriteEditor
& git config --global core.autocrlf false
& git config --global core.symlinks true
& git config --global core.longpaths true
& git config --global http.sslVerify false
& git config --global init.defaultBranch main
& git config --global merge.renamelimit 99999
& git config --global pull.rebase false
if ($lastExitCode -ne "0") { throw "'git config' failed with exit code $lastExitCode" }
"⏳ Step 4/4 - Saving basic shortcuts (co,br,ci,st,pl,ps,mrg,chp,ls,smu)..."
& git config --global alias.co "checkout"
& git config --global alias.br "branch"
& git config --global alias.ci "commit"
& git config --global alias.st "status"
& git config --global alias.pl "pull --recurse-submodules"
& git config --global alias.ps "push"
& git config --global alias.mrg "merge --no-commit --no-ff"
& git config --global alias.chp "cherry-pick --no-commit"
& git config --global alias.ls "log -n20 --pretty=format:'%Cred%h%Creset%C(yellow)%d%Creset %s %C(bold blue)by %an%Creset %C(green)%cr%Creset' --abbrev-commit"
& git config --global alias.smu "submodule update --init"
if ($lastExitCode -ne "0") { throw "'git config' failed" }
[int]$Elapsed = $StopWatch.Elapsed.TotalSeconds
"✔️ saved your Git configuration in $Elapsed sec, it's now:"
& git config --list
if ($lastExitCode -ne "0") { throw "'git config --list' failed with exit code $lastExitCode" }
exit 0 # success
} catch {
"⚠️ Error in line $($_.InvocationInfo.ScriptLineNumber)): $($Error[0])"
exit 1
}