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's own in-house code
PNG versions of the artwork (a subset of a much larger art collection handled in Perforce)
An open source project, let's call it libfoo.
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.