Trout

So your common files can swim upstream.

Synopsis

Trout allows you to maintain a base version of special files (like Gemfile) in one repository, and then syncronize just that file with several other repositories. This means that you can update your Gemfile in the master repository, and then get the latest of all the common gems that you use in each project just by running “trout update Gemfile”.

Installation


gem install trout

Usage

Once you have a master repository set up containing the file you want to syncronize, you can check out that file anywhere using trout:


trout checkout Gemfile git://github.com/someurl

If you update the file in your master repository and want to get the changes, you can use the update command:


trout update Gemfile

If there are any conflicts, trout will help you resolve them by merging the two trees using diff3.

Why

I wrote this primarily to manage Gemfiles between projects, hoping to avoid using an “ancestor” git repository that gets dumped into the git history of every new project. This also solves the “multiple inheritance” problem of git repositories if you want to manage different files from different sources.

Author

Copyright 2010 Joe Ferris