Managing Distributables on Github
Typically when (browser based) distributables are include in a Github project they're added to the gh-pages branch. This is done to avoid having duplicate changes in the commit logs for the source and distributable. For example, changing a variable name in source, rebuilding, and then committing, would result in a commit containing a diff to the source AND each built distributable file.
However, there are use cases for having the distributable on your master branch, and I've developed a solution (of sorts) to make it work in a fairly clean manner.
For Blanket.js, I like to provide 4 distributable files, a QUnit and Jasmine build, and a minified version of each. Adding these 4 files to a gh-pages branch is too much overhead. I rebuild the project after each change to run my tests anyway, so I'd rather just have the new distributables live in master and be available after each commit to master.
Enter, .gitattributes. Creating a .gitattributes file allows you to change the git attributes of given files. According to the documentation you can tell git to handle your file as binary, so diffs won't be created:
`dist/*.js -diff`
In practice, this didn't work for me on GitHub (maybe it ignores the git attribute on files that have already been tracked?). I have to change the merge attribute to union (which may not always give the intended result), but it works for me (I also run the distributables through tests on the CI):
`dist/*.js merge=union`
You can see a Pull Request without and with the git attributes in place (I'm aware that I'm probably getting the right result for the wrong reasons, but the approach should work in theory if done correctly).













