Lab wraps Git or Hub, making it simple to clone, fork, and interact with repositories on GitLab, including seamless workflows for creating merge requests, issues and snippets.
$ lab clone gitlab-com/infrastructure
# expands to:
$ git clone [email protected]:gitlab-com/infrastructure
lab will look for hub and uses that as your git binary when available so you don't have to give up hub to use lab
$ lab version
git version 2.11.0
hub version 2.3.0-pre9
lab version 0.17.2
The hub tool made my life significantly easier and still does! lab is heavily inspired by hub and attempts to provide a similar feel.
Dependencies
git
orhub
brew install lab
nix-env -f '<nixpkgs>' -iA gitAndTools.lab
scoop bucket add zaquestion https://github.com/zaquestion/scoop-bucket.git
scoop install lab
apk add lab
Installs lab into /usr/local/bin/
curl -s https://raw.githubusercontent.com/zaquestion/lab/master/install.sh | sudo bash
NOTE: Please take care when executing scripts in this fashion. Make sure you trust the developer providing the script and consider peaking at the install script itself (ours is pretty simply ;)
Head to the releases page and download your preferred release
Required
git clone [email protected]:zaquestion/lab
cd lab
go install -ldflags "-X \"main.version=$(git rev-parse --short=10 HEAD)\"" .
or
make install
See the contribution guide.
lab
needs your GitLab information in order to interact with to your GitLab
instance. There are several ways to provide this information to lab
:
- environment variables:
LAB_CORE_HOST
,LAB_CORE_TOKEN
;- If these variables are set, the config files will not be updated.
- environment variables:
CI_PROJECT_URL
,CI_JOB_TOKEN
;- Note: these are meant for when
lab
is running within a GitLab CI pipeline - If these variables are set, the config files will not be updated.
- Note: these are meant for when
- local configuration file in Tom's Obvious, Minimal Language (TOML):
./lab.toml
;- No other config files will be used as overrides if a local configuration file is specified
- user-specific configuration file in TOML:
~/.config/lab/lab.toml
. - work-tree configuration file in TOML:
.git/lab/lab.toml
. The values in this file will override any values set in the user-specific configuration file.
If no suitable config values are found, lab
will prompt for your GitLab
information and save it into ~/.config/lab/lab.toml
.
For example:
$ lab
Enter default GitLab host (default: https://gitlab.com):
Enter default GitLab token:
Command-specific flags can be set in the config files.
[mr_show]
comments = true # sets --comments on 'mr show' commands
lab
provides completions for Bash, Elvish, Fish, Powershell, Xonsh and Zsh.
Scripts can be directly sourced (though using pre-generated versions is recommended to avoid shell startup delay):
# bash (~/.bashrc)
source <(lab completion)
# elvish (~/.elvish/rc.elv)
eval (lab completion|slurp)
# fish (~/.config/fish/config.fish)
lab completion | source
# powershell (~/.config/powershell/Microsoft.PowerShell_profile.ps1)
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
lab completion | Out-String | Invoke-Expression
# xonsh (~/.config/xonsh/rc.xsh)
COMPLETIONS_CONFIRM=True
exec($(lab completion xonsh))
# zsh (~/.zshrc)
source <(lab completion zsh)
Like hub, lab feels best when aliased as git
. In your .bashrc
or .bash_profile
:
alias git=lab
NOTE: before aliasing, if you use git in your shell prompt command, be sure lab works by it's own first:
$ lab
Enter GitLab host (default: https://gitlab.com):
To the extent possible under law,
Zaq? Wiedmann
has waived all copyright and related or neighboring rights to
Lab.
This work is published from:
United States.