Workflow

For our draft (development) code, see the readable code git repository. The easy way to start contributing code is to select the "develop" branch (not the "master" branch) and fork it; when you're done, submit a push request.

We use Vincent Driessen's "successful git branching model" workflow; git workflow shows sample commands, and Development Workflow gives another view. This means that "origin/develop" is the latest "integration branch" of development, while "origin/master" is the latest production release.

You can get the "develop" branch with "git checkout -b develop origin/develop". Features are created in feature branches, merged back to origin/develop, and eventually to origin/master for release.

To contribute, please post where to pull the information, or post a bundle.

If you rename files, please just rename the file using git mv, without editing anything, and then save that as a separate commit. Git does not track file renames (per a decision by Linus Torvalds that David A. Wheeler thinks is completely wrong-headed), and as a result, "git diff" results are sometimes scrambled if you rename and edit in the same commit. If you ensure that a commit does only renames, or only edits and file additions, you're fine.

On release, the release manager merges multi-commits for a feature with:
"git checkout master; git merge --no-ff develop" so it's clear that the commits are a set (and their origins aren't obscured). After "make distcheck" works, then "git tag -a TAG_NUMBER -am MESSAGE".

vi configure.ac # Change version number, if it will be different
vi ChangeLog
git commit -a
git checkout master
git merge --no-ff develop
autoreconf -i && ./configure
make distcheck  # Make sure it works first!
git commit -a
# Version numbers must be of form MAJOR.MINOR.PATCH; version tags have "v" in front.
git tag -a VERSION_NUMBER -am "Version VERSION_NUMBER - REASON"
make dist # For posting of a .tar.gz
git checkout develop
git merge --no-ff master
vi configure.ac # Change version number to "to be".  Edit other files per configure.ac.
git commit -a
git push origin master
git push origin develop
git push --tags
# Post the new .tar.gz

Make sure that the newest file in the "Files" directory (other than README) is the default download. If it isn't, fix this using this process: http://sourceforge.net/p/forge/site-support/5166/

We need to implement readers, of course, but also pretty-printers, editor macros, packages, and so on so they can be widely deployed. For code that implements these the MIT license is preferred, so that they can be spread widely. We'd love help!


Related

Wiki: Home
Wiki: Join