# Branches and Tags: There are 3 branches/tags: * **HEAD:** The cutting edge of development. * **tag stable:** Stable enough for use by most people. * **tag production:** Burned in long enough that we are confident it can be widely adopted. If you are packaging Blackbox for distribution, you should track the *tag production*. You might also want to provide a separate package that tracks *tag stable:* for early adopters. # Build Tasks # Stable Releases Marking the software to be "stable": Step 1. Tag it. ``` git pull git tag -d stable git push origin :stable git tag stable git push origin tag stable ``` Step 2. Mark your calendar 1 week from today to check to see if this should be promoted to production. # Production Releases If no bugs have been reported a full week after a stable tag has been pushed, mark the release to be "production". ``` git fetch git checkout stable git tag -d production git push origin :production git tag production git push origin tag production R="v1.$(date +%Y%m%d)" git tag "$R" git push origin tag "$R" ``` # Updating MacPorts (automatic) Step 1: Generate the Portfile ``` tools/macports_report_upgrade.sh 1.20150222 ``` This script will generate a file called `Portfile-vcs_blackbox.diff` and instructions on how to submit it as a update request. Step 2: Submit the update request. Submit the diff file as a bug as instructed. The instructions should look like this: * PLEASE OPEN A TICKET WITH THIS INFORMATION: https://trac.macports.org/newticket * Summary: `vcs_blackbox @1.20150222 Update to latest upstream` * Description: ```New upstream of vcs_blackbox. github.setup and checksums updated.``` * Type: `update` * Component: `ports` * Port: `vcs_blackbox` * Keywords: `maintainer` * Attach this file: `Portfile-vcs_blackbox.diff` Step 3: Watch for the update to happen. # Updating MacPorts (manual) This is the old, manual, procedure. If the automated procedure work, these notes may or may not be helpful. The ultimate result of the script should be a `diff -u Portfile.orig Portfile`. The new `Portfile` should have these changes: 1. The `github.setup` line should have a new version number. 2. The `checksums` line(s) should have updated checksums. How to generate the checksums? The easiest way is to to make a Portfile with incorrect checksums, then run `sudo port -v checksum vcs_blackbox` to see what they should have been. Fix the file, and try again. When the the checksum command works, run `port lint vcs_blackbox` and make sure it has no errors. Some useful commands: Change repos in sources.conf: ``` sudo vi /opt/local/etc/macports/sources.conf Add this line early in the file: file:///var/tmp/ports ``` Add a local repo in an automated manner: ``` fgrep >/dev/null -x 'file:///var/tmp/ports' /opt/local/etc/macports/sources.conf || sudo sed -i -e '1s@^@file:///var/tmp/ports\'$'\n@' /opt/local/etc/macports/sources.conf ``` Remove the local repo in an automated manner: ``` sudo sed -i -e '\@^file:///var/tmp/ports@d' /opt/local/etc/macports/sources.conf ``` Test a Portfile: ``` sudo port uninstall vcs_blackbox sudo port clean --all vcs_blackbox rm -rf ~/.macports/opt/local/var/macports/sources/rsync.macports.org/release/tarballs/ports/security/vcs_blackbox/ rm -rf /var/tmp/ports mkdir -p /var/tmp/ports/security/vcs_blackbox cp Portfile /var/tmp/ports/security/vcs_blackbox cd /var/tmp/ports && portindex sudo port -v checksum vcs_blackbox sudo port install vcs_blackbox ```