diff --git a/docs/GitRepositoryRegistration.md b/docs/GitRepositoryRegistration.md index 83038b7..ac50559 100644 --- a/docs/GitRepositoryRegistration.md +++ b/docs/GitRepositoryRegistration.md @@ -38,9 +38,26 @@ If the current directory is not in a git repo, a registration already exists by `Get-GitRepoRegistration` +Returns all currently registered git repositories, as well as their current branch. + +```pwsh +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|-NoSetLocation]` +`Show-GitRepoRegistration -Name string [-NoStack|-NoPushLocation]` + +Changes your location to the location of the git repo registered by the given `-Name`. If used without `-NoStack` or its alias `-NoPushLocation`, your original location will be preserved and can be returned to at any time via `Pop-Location`/`Popd`. + +Using `-NoStack`/`-NoPushLocation` will not push your current location onto the stack, and will behave the same as `cd`/`Set-Location`. ## Remove-GitRepoRegistration diff --git a/src/ModuleCore/Git/GitManager.cs b/src/ModuleCore/Git/GitManager.cs index f301244..1312b03 100644 --- a/src/ModuleCore/Git/GitManager.cs +++ b/src/ModuleCore/Git/GitManager.cs @@ -167,6 +167,11 @@ public class GitManager }); } + /// + /// Returns all currently registered git repositories, including additional information such as the git repositories + /// current branch. + /// + /// public List ListRepos() { return _registrations.Select(x => @@ -301,6 +306,10 @@ public class GitManager public string Location { get; set; } = null!; + /// + /// The current branch of the repository. This value is cached for 15 minutes after which it becomes stale and + /// will be refreshed on the next call to this property. + /// public string CurrentBranch => GetCurrentBranch(); // TODO: not fully decided on if I want this feature or not, but keeping it in for now diff --git a/src/PowershellModule/Git/Commands/GetGitRepoRegistrationCommand.cs b/src/PowershellModule/Git/Commands/GetGitRepoRegistrationCommand.cs index c343c22..d1885ec 100644 --- a/src/PowershellModule/Git/Commands/GetGitRepoRegistrationCommand.cs +++ b/src/PowershellModule/Git/Commands/GetGitRepoRegistrationCommand.cs @@ -4,6 +4,9 @@ using ModuleCore.Git.Models; namespace PowershellModule.Git.Commands; +/// +/// Lists all currently registered git repositories, with additional information such as their current branch. +/// [Cmdlet(VerbsCommon.Get, GitCommands.GitRepoRegistrationNoun)] [OutputType(typeof(GitRegistration))] public class GetGitRepoRegistrationCommand : PSCmdlet diff --git a/src/PowershellModule/Git/Commands/ShowGitRepoRegistrationCommand.cs b/src/PowershellModule/Git/Commands/ShowGitRepoRegistrationCommand.cs index 56a64ba..61b7561 100644 --- a/src/PowershellModule/Git/Commands/ShowGitRepoRegistrationCommand.cs +++ b/src/PowershellModule/Git/Commands/ShowGitRepoRegistrationCommand.cs @@ -16,7 +16,7 @@ public class ShowGitRepoRegistrationCommand : PSCmdlet [Parameter( Mandatory = false, HelpMessage = "Changes directory directly instead of using Set-Location")] - [Alias("NoSetLocation")] + [Alias("NoPushLocation")] public SwitchParameter NoStack { get; set; } protected override void BeginProcessing()