Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sebastianv1/sfizio

Homebrew Version Control
https://github.com/sebastianv1/sfizio

homebrew package-manager version-control versioning

Last synced: 2 months ago
JSON representation

Homebrew Version Control

Awesome Lists containing this project

README

        

# 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]`.

```ruby
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.
```ruby
formula 'xcparse', '2.2.1', tap: 'chargepoint/xcparse'
```

Sfizio will also call `brew tap` for any taps specified in your Brewfile
```ruby
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.