git greenbase
is an alternative to git pull
that pulls the latest green build from your continuous integration (CI) provider.
See the writeup on tygertec.com: git greenbase means never pulling a broken build
🙁 Scenario (without greenbase
): You pull the latest from origin/master
and begin adding a new feature. It doesn't build. Huh? What did I do? And the tests don't pass. What..? You spend an hour trying to figure out where you went wrong, only to discover that your code is fine -- you pulled a broken build.
😍 Scenario (with greenbase
): You pull the latest from origin/master
using git greenbase
. git greenbase
queries your CI provider for the latest passing build, then resets your local master
to match. You add the new feature, build, run the tests, and submit a pull request. That was quick! :) Think I'll grab some coffee...
If you can relate to the first scenario, git greenbase
is for you. The idea is that you always begin development on top of a known "green" build. That way you and your team spend far less time scratching your head wondering what you broke.
What if I'm working locally on a branch other than master?
If you are using a rebase-based workflow, and your local branch is tracking master
, running git greenbase
will perform exactly as described above, but it will also rebase your local branch on top of your local copy of master
.
Some teams never push directly to master. They instead push to a feature branch which is built, tested, and only merged with master
if the build succeeds. git greenbase
would be unnecessary in such a workflow. (Though it's worth mentioning that git greenbase
makes such a workflow unncessary...)
Glad you like it! If git greenbase
helps you out, support development by buying me and my wife a coffee. :)
git clone https://github.com/tygerbytes/git-greenbase.git
cd git-greenbase
./install
The ./install
script will create a symlink to git-greenbase
and add it to your PATH. Git
will find it in your path and allow you to run git greenbase
, just like any Git
command.
I haven't tried it yet, but following the Linux instructions should work.
I haven't tried git greenbase
with Windows yet.
usage: git greenbase [<options>]
-p <provider> Use specific CI <provider>
-b <branch> Specify <branch> other than master
-d (Dry Run) Don't do anything destructive
View list of supported CI providers with git greenbase -p list
A provider is set and configured via git config greenbase.
git config greenbase.provider latest
Latest
is a psuedo CI provider. It just returns the latest commit from origin/master
, passing build or not. Typically used with the -p
switch: git greenbase -p latest
.
git config greenbase.provider gitlab
git config greenbase.gitlab.token <TOKEN>
git config greenbase.gitlab.serverUri <SERVER URI>
git config greenbase.gitlab.projectId <PROJECT ID>
git config greenbase.provider travisci
git config greenbase.travisci.token <TOKEN>
git config greenbase.travisci.serverUri <SERVER_URI>
git config greenbase.travisci.repoId <GITHUB_REPO_ID>
TFS support is currently experimental.
git config greenbase.provider tfs
git config greenbase.tfs.tokenBase64 <BASE64_ENCODED_TOKEN>
git config greenbase.tfs.projectId <PROJECT_ID>
git config greenbase.tfs.serverUri <SERVER_URI>
Tip: To get your base64 encoded token, run the following command:
base64 <(echo my_token)
See DEVELOPMENT.md.
MIT. See LICENSE.md.