Sfizio is a Homebrew version control system. Keeping a formula's version consistent across developer machines and CI isn't a natural process of using brew. Keeping all machines up to date requires refreshing the taps and upgrading the formulas (if there's a new release) on each install. If you've managed to configure this correctly, you'll find at some point it's impossible to downgrade a version if a new release breaks your workflow. Homebrew's suggested solution to versioning your formulas is to setup your own third-party tap. This works for the most part; however, downgrading a formula due to an issue still isn't an easy process due to Homebrew's affinity for keeping formulas at the latest available version.
Sfizio solves this by providing a familiar Brewfile for versioning your formulas and controlling the versions installed across all machines.
Create a Brewfile in the root of your repo, and add formulas with the syntax: formula [name], [version], tap: [source].
formula 'cloc', '1.90'
formula 'sqlite', '3.36.0'
formula 'python', '3.9'To install, run sfizio install instead of brew install or your previous installation script.
You can also specify which taps Homebrew should fetch formula from by including a tap param.
formula 'xcparse', '2.2.1', tap: 'chargepoint/xcparse'Sfizio will also call brew tap for any taps specified in your Brewfile
tap 'internal/tap', url: 'git-source'
formula 'cloc', '1.90', tap: 'internal/tap'This project is still in its infancy. Next steps for this project include:
- Creating a
Brewfile.lock. Currently Sfizio only supports specific verions and cleans up state before each installation. This means that we mayunlinkand thenlinkthe same version again in each release if nothing has changed. Although this is fast, it's not optimal. - Configure proper CLI commands.