Skip to content

sebastianv1/sfizio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sfizio - Homebrew Version Control

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.

Using Sfizio

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'

Next Steps & Contributing

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 may unlink and then link the same version again in each release if nothing has changed. Although this is fast, it's not optimal.
  • Configure proper CLI commands.

Releases

No releases published

Packages

No packages published

Languages