Don Marti

Tue 02 Oct 2012 06:57:27 AM PDT

Git Fusion and upstreaming in-house work

New release from Perforce, where I work: Perforce Git Fusion (press release, product page). Now you can set up remixed Git repositories for projects, and work in a custom repo without worrying about extra tooling such as submodules, subtrees, or "repo" scripts. A developer at example.com might work in a single Git repository that contains...

That developer might do some work that touches both in-house code and libfoo. (It all goes in with one commit and push.) Without remixing, it would be a pain to extract the libfoo stuff and upstream it, so you end up with a forked libfoo hanging around, making life miserable.

But we're remixing here. So we can also keep a regular libfoo Git repository around, using Git Fusion as a remote. When I pull from Git Fusion here, I get a new commit with just the libfoo work. And since this is just a regular git repo, we can also run a tracking branch of upstream's master. So we can rebase that commit onto whatever branch upstream wants it, rewrite the commit message to be relevant and not specific to in-house code, and contribute normally via patch or pull request. This is where we can clean up this commit to match libfoo's "guidelines for contributors" without affecting the original.

Easy for everyone to do in-house work that touches the open-source dependencies, and easy to extract and contribute what is upstreamable.