Brussels / 2 & 3 February 2013



Vendor everything; stay sane.

Vendor everything; stay sane.

Vendorificator is a tool that manages third-party (upstream) dependencies kept in project's Git repository. Using pristine orphan branches for each dependency, Git notes to store metadata, and tags for versions, it keeps track of origin, version, license, and other details of each of the dependencies.

Vendorificator allows you to specify all of your project's upstream dependencies in one file, and keep them in your repository along with your code. Each of dependencies is kept in its own pristine branch, and annotated with metadata, so you can easily review all the upstream dependencies with version, origin, and other needed data.

Keeping each dependency in its own pristine branch lets you introduce your own patches to the upstream dependencies, keep track of them, and update any dependency to a newer version as easily as you do a normal Git merge.

Vendorificator is language-independent. It can handle Ruby gems, Python modules, JavaScript files, CSS frameworks, Chef cookbooks - all the external dependencies are specified in one place and stored together with the project.

Vendor everything. Stay safe from third-party downtimes - keep your project running and deployable when Github/Rubygems/Pypi goes down, author pulls the old version you still need to use from the "downloads" page or moves the download URL around, or you just want the project runnable out-of-the-box right after git pull, without waiting for all the dependencies to download.


Maciej Pasternacki