4.4 KiB
Git Repo Registration
- all commands support
-debug - at its simpliest level these commands allow you to register a git repo against a simple name, and provide the ability to quickly pushd to a location
New-GitRepoRegistration
New-GitRepoRegistration [-Name string]
Creates a new registration for the current directory, optionally registering against the given name. If -Name is not given the folder for the root level of the git repo will be used.
Name registrations are not case-sensitive, so registrations can be made using different cases for the same location, and multiple registrations can exist for the git repository.
# Default registration
PS D:/Repos/Project-a> New-GitRepoRegistration -debug
DEBUG: Checking if current directory is a git repository...
DEBUG: ...location is a git repo!
DEBUG: No name given for registration, defaulting to git folder root.
DEBUG: Registered 'D:/Repos/Project-a' to name 'Project-a'
# Named registration
PS D:/Repos/Project-a> New-GitRepoRegistration "test repo" -debug
DEBUG: Checking if current directory is a git repository...
DEBUG: ...location is a git repo!
DEBUG: Registered 'D:/Repos/Project-a' to name 'test repo'
PS D:/Repos/Project-a> Get-GitRepoRegistration
Name Location CurrentBranch
---- -------- -------------
test-repo D:/Repos/Project-a main
Project-a D:/Repos/Project-a main
If the current directory is not in a git repo, a registration already exists by name or default folder, or if any other issue occurs such as git not being available an error will be thrown.
Get-GitRepoRegistration
Get-GitRepoRegistration
Returns all currently registered git repositories, as well as their current branch.
PS D:/Repos/Project-a> Get-GitRepoRegistration
Name Location CurrentBranch
---- -------- -------------
test-repo D:/Repos/Project-a main
Project-a D:/Repos/Project-a main
The current branch is cached for 15 minutes for performance reasons so it may not be up to date if a git repo has recently had its branch changed.
Show-GitRepoRegistration
Show-GitRepoRegistration -Name string [-NoStack|-NoPushLocation]
Changes your location to the location of the git repo registered by the given -Name and your original location will be preserved and can be returned to at any time via Pop-Location/Popd. By default, this command is identical to calling
pushd [repository directory].
Using -NoStack/-NoPushLocation will not push your current location onto the stack, and will behave the same as cd [repository directory]/Set-Location [repository directory].
PS C:/> Show-GitRepoRegistration Project-a
PS D:/Repos/Project-a> Get-Location -stack
Path
----
C:\
PS D:/Repos/Project-a> cd ./build
PS D:/Repos/Project-a/Build> Get-Location -stack
Path
----
C:\
PS D:/Repos/Project-a/Build> popd
PS C:/>
Remove-GitRepoRegistration
Remove-GitRepoRegistration [-Name string]
Removes a repo registration by the given name, or if no name is specified, attempts to remove the git repo registered by resolving the git repo.
If Name is not provided then the command must be run in a location that is a git repo and the registration to remove will use the parent git repo folder name. If Name is provided this command can be executed from any location.
# Default registration without a name within a folder in a git repo
PS D:/Repos/Project-a> New-GitRepoRegistration
# List registrations
PS D:/Repos/Project-a> Get-GitRepoRegistration
Name Location CurrentBranch
---- -------- -------------
Project-a D:/Repos/Project-a main
Test-Repo D:/Repos/Project-a main
# Remove a registration from within a git repo
PS D:/Repos/Project-a> Remove-GitRepoRegistration
# No output indicates successful removal
PS D:/Repos/Project-a> Get-GitRepoRegistration
Name Location CurrentBranch
---- -------- -------------
Test-Repo D:/Repos/Project-a main
# Duplicate calls error if there is no registration
PS D:/Repos/Project-a> Remove-GitRepoRegistration
Remove-GitRepoRegistration: No registration exists for 'Project-a'.
# Debug output via named argument
PS D:/Repos/Project-a> Remove-GitRepoRegistration -name Test-Repo -debug
DEBUG: Checking if current directory is a git repository...
DEBUG: ...location is a git repo!
DEBUG: Removed Test-Repo.