A small system-tray application that helps you work with a lot of git repositories.
Currently supported features are:
- Quick actions for each repository in your repository folder, such as:
- Open repository folder in explorer
- Open repository folder in Visual Studio Code
- Open Git Bash
- Open .sln solution file
- Clone remote repositories, currently supports:
- Azure DevOps (using a personal access token)
- GitHub ( using a personal access token)
Planned features:
- Configuration GUI
- More actions on repositories
Configuration is currently done by editing the config.json
file, which is
created when the application run.
An example config file for someone named "John Smith" with the Windows username "SmithJ":
{
"RepositoryFolder": "C:/Users/SmithJ/Source/Repos",
"AzureProviders": [
{
"Organization": "contoso",
"Project": "webshop",
"PersonalAccessToken": "abcdefghijkl1234567890",
"DefaultConfig": {
"user.email": "john.smith@contoso.com",
"user.name": "John Smith"
}
}
],
"GitHubProviders": [
{
"Username": "john-smith",
"PersonalAccessToken": "abcdefghijkl1234567890",
"DefaultConfig": {
"user.email": "john@my-email.com",
"user.name": "John"
}
}
],
"Actions": [
{
"Name": "Open folder",
"Program": "{directory}",
"SearchFilter": ".git",
"Shell": true
},
{
"Name": "Git Bash",
"Program": "C:\\Program Files\\Git\\git-bash.exe",
"Args": [
"--cd={directory}"
],
"SearchFilter": ".git"
}
]
}
Path to the folder that contains all your git repositories. Defaults to
%USERPROFILE%/Source/Repos
, which is the default clone location used by Visual
Studio.
Array of Azure DevOps remotes. These will be available to clone from.
Name of the organization that contains the project. Is the {project}
part of
https://dev.azure.com/{project}/{organization}
.
Name of the project that has the repositories you want to access. Is the
{organization}
part of https://dev.azure.com/{project}/{organization}
.
An Azure DevOps personal access token that will be used for authentication. Can
be generated by going to https://dev.azure.com/{project}/_usersSettings/tokens
(replace {project}
with the name of your project) and clicking "New Token".
Keys and values for git config that should be applied to any repositories cloned from this provider. Can be used to e.g. set your company email and proxy server.
Array of GitHub accounts. These will be available to clone from.
GitHub username that you want to authenticate as. All repositories that this user has access to will be available for cloning.
A GitHub personal access token that will be used for authentication. Can be generated by going to https://github.com/settings/tokens.
Keys and values for git config that should be applied to any repositories cloned from this provider. Can be used to e.g. set your personal email.
Array of actions you can take on a repository. By default, it provides actions for opening the directory, opening a solution file, starting git bash (if found) and opening the folder in Visual Studio Code (if found).
It will generate actions for each item found in the repository that matches the
search filter. Then, for each item found, it will apply some substitutions to
the Name
, Program
and Args
properties:
original | replaced with |
---|---|
{name} |
The name of the item, e.g. readme.md |
{path} |
The full path to the item, e.g. , e.g. C:\Repos\MyRepo\readme.md |
{directory} |
The full path of the directory containing the item, e.g. C:\Repos\MyRepo |
The name that will be used as the label for the action.
The program to execute for the action. Can also be a path to a file or directory
which will be opened with the default program if Shell
is set.
Arguments that will be provided to the program. Note that these will be quoted
individually, so to execute the command program.exe --option value
, you need
to specify the option and value seperately:
{
"Args": [ "--option", "value" ]
}
Windows search filter that will be used to find the items the action operates
on. For actions that operate on the main repository folder itself, this should
(probably) be .git
(see example config).
Whether to execute the command as a shell command. Useful to open a file or directory with the default program, or for more complex commands.