Snuggle up with a warm cup of eggnog (if you're into that sort of thing) because here comes the 3rd installment of our 12 Tips of (CommandBox) Christmas aimed at lifting holiday spirits and empowering developers. Today we look at the sweet GitHub integrations we offer.
We support installing packages directly from any Git repository via our Git endpoint. We even let you target branches, tags, and specific commits which can make it easy to grab the bleeding edge version of packages as soon as changes are committed:
CommandBox> install git://site.com/user/repo.git#development CommandBox> install git://site.com/user/repo.git#v1.2.3 CommandBox> install git://site.com/user/repo.git#09d302b4fffa0b988d1edd8ea747dc0c0f2883ea
GitHub specifically is a very popular service for devs who want Git-hosted repos. When installing a package from GitHub you can simplify the URL above to be just the user name followed by the repo name like so:
CommandBox> install user/repo CommandBox> install user/repo#development CommandBox> install user/repo#v1.2.3 CommandBox> install user/repo#09d302b4fffa0b988d1edd8ea747dc0c0f2883ea
When we see this pattern, we'll convert it to the full Git URL behind the scenes.
Don't forget we also support SSH-based authentication which works for private Git repos, Bitbucket, or your own personal Gitlab server. See the instructions at the bottom of this page. The short version is that it should "just work" the same as the Git CLI by picking up the SSH keys in your user's .ssh folder.
Release Life Cycle
You're certainly not required to use Git for your projects, but if you do you'll have some nice perks such as auto-tagging your Git repos when you bump your package's version. You can create a new version of any package by using the "bump" command. This will increment the major, minor, or patch version number in your box.json file using semantic version rules. If the folder also happens to be a Git repo, the command will create a new Git tag and commit it for you.
CommandBox> bump --patch Set version = 1.0.1 Package is a Git repo. Tagging... Tag [v1.0.1] created.
Read more about this behavior here.