Don’t you have many Git repositories laying everywhere on your disk? Isn’t it a mess?
Well I have this problem too. From the forks I made to contribute, my personal projects, my work projects, etc… I have many repositories in my computer, sometimes with special settings (i.e using work email in work related repositories, signing commit with my GPG key in important repository, etc…)
And when I move to a new computer, I need to redo everything, again. This is really error prone.
Let me introduce you, wks (WorKSpace) the tool that will change that bad habit, and increase your productivity.
How to use it?⌗
Create a workspace⌗
The first thing to do is to create a workspace. A workspace is a collection of multiple git repositories, that may be organised into many sub-folders.
To get started you can either create a new workspace, or clone a remote workspace.
Create a new workspace⌗
To create a new workspace in the current directory, you’ll just need to issue the following command:
wks init [<repo>]
where repo is the url of the upstream repository that will be used to save changes. If you don’t want to save your changes remotely, you can omit this parameter.
Clone a remote workspace⌗
If you already have a remote workspace, you can clone it into the current directory by issuing the following command:
wks clone https://github.com/my-username/my-repo
Once you have a workspace, you can add repositories into it by issuing the following command:
wks add <repo> [<dir>]
where repo is the url of the repository to add. You can optionally pass a directory to save the repository into.
The changes won’t be committed to remote unless you run
Add into workspace root⌗
wks add https://github.com/creekorful/goreportcard-action
Will save the repository in the workspace with following path: ./goreportcard-action
Add into specific subdirectory⌗
wks add https://github.com/creekorful/goreportcard-action Work
Will save the repository in the workspace with following path: ./Work/goreportcard-action
By using directories, you can group Git repositories by their context. For example you can create a Work directory for work related stuff, a Contributing directory for your open source contribution, a Personal directory for your personal project, and so on…
Override repository configuration⌗
wks add --branch develop --config user.email email@example.com https://github.com/creekorful/goreportcard-action Github
You can also override repository configuration.
In this example develop will be cloned instead of master. User email will be override by firstname.lastname@example.org. When you will clone the workspace on another computer, these changes will be applied automatically.
wks help add for more details.
Push config to remote⌗
To save the current configuration in the remote, issue the following command:
Pull config from remote⌗
To retrieve change from remote, issue the following command:
Remove a repository⌗
To remove repository from workspace, issue the following command:
wks rm <path>
Where path is the relative path to the repository to remove.
The changes won’t be committed to remote unless you run wks push
Remove repository from manifest⌗
wks rm Team/test-repository
Remove test-repository located under the Team directory from workspace. This will not delete any files.
Remove repository from manifest & disk⌗
wks rm Team/test-repository --delete
Remove test-repository located under the Team directory from workspace. This will also delete the repository from disk.
To update all repositories in workspace to their latest version, issue the following command:
View workspace repositories⌗
To list the repositories in workspace issue the following command:
The source code of wks is available on Github. Please note that wks is currently under heavy development. Do no expect stable features before 1.0.0 is reached.
Pull requests & issues are welcomed!