[tor-bugs] #9425 [BridgeDB]: Create and document a better BridgeDB (re)deployment strategy

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue Aug 20 17:41:39 UTC 2013


#9425: Create and document a better BridgeDB (re)deployment strategy
------------------------+---------------------------------------------------
 Reporter:  isis        |          Owner:  isis          
     Type:  task        |         Status:  needs_revision
 Priority:  normal      |      Milestone:                
Component:  BridgeDB    |        Version:                
 Keywords:  deploy,doc  |         Parent:                
   Points:              |   Actualpoints:                
------------------------+---------------------------------------------------
Changes (by isis):

  * status:  new => needs_revision


Comment:

 Yesterday I implemented item no. 1, listed above.

 Now, for example, we have the following:
 {{{
 (bridgedb)∃!isisⒶwintermute:(testing/sysrqb/bug9157_r2_rebase-cherrypick-
 a31c592e>)~/code/torproject/bridgedb ∴ make test
 python setup.py test
 running test
 running build
 got version from git {'version': '0.0.1-4-gb540f43', 'full':
 'b540f436592fe9cb150ad56eb820045b4a97ced8'}
 running build_py
 }}}

 Meaning that the most recent tag was `0.0.1`, this is the fourth unique
 build since that tag, and the short ID of the git commit the build was
 made from is `gb540f43`. So next time a deployment is made, no matter who
 it's made by, they should be able to determine where which branch was
 checked out and how many changes were made before it went live.

 The commit message which implemented this explains how to bump version
 numbers, but I'll stick it here to, just for the record:
 {{{
 * | commit 7227e6e47c7161d7639a27fd206be64aafae8549
 | | gpg: Signature made Mon 19 Aug 2013 23:52:35 UTC
 gpg:                using RSA key A3ADB67A2CDB8B35
 gpg: Good signature from "Isis! <isis at patternsinthevoid.net>" [ultimate]
 gpg:                 aka "Isis <isis at leap.se>" [ultimate]
 gpg:                 aka "Isis! <isis at riseup.net>" [ultimate]
 gpg:                 aka "Isis <isis at torproject.org>" [ultimate]
 gpg: Signature notation:
 isis at patternsinthevoid.net=0A6A58A14B5946ABDE18E207A3ADB67A2CDB8B35
 gpg: Signature expires Tue 19 Aug 2014 23:52:35 UTC
 Author:     Isis Lovecruft <isis at torproject.org>
 | | AuthorDate: 19 hours ago
 | | Commit:     Isis Lovecruft <isis at torproject.org>
 | | CommitDate: 18 hours ago
 | |
 | |     Start using automatic versioning system.
 | |
 | |      * FIXES part of #9425 (Create and document a better BridgeDB
 deployment
 | |        strategy).
 | |      * ADD versioneer.py to the top level of the project.
 | |      * USE setuptools explicitly in setup.py, which will also make the
 project a
 | |        bit more py3k compatible.
 | |      * ADD maintainer and maintainer_email fields to setup.py setup()
 call (with
 | |        my contact info).
 | |      * ADD versioneer setup variables and calls to setup.py.
 | |
 | |     Versioneer, as currently configured, will automatically create a
 package level
 | |     attribute:
 | |
 | |      >>> import bridgedb
 | |      >>> print bridgedb.__version__
 | |      0.0.1
 | |
 | |     Bumping the version number at release time (which, for BridgeDB
 really means
 | |     deploy time, as of right now) means doing the following:
 | |
 | |      $ git checkout develop
 | |      [merge some fix/bug/feature/etc branches]
 | |      $ git checkout -b release-0.0.2 develop
 | |      $ git tag -a -s bridgedb-0.0.2
 | |      [pip maintainance commands *would* go here, if we ever have any]
 | |      $ git checkout master
 | |      $ git merge -S --no-ff release-0.0.2
 | |      $ git checkout develop
 | |      $ git merge -S --no-ff master
 | |      $ git push <remote> master develop
 | |
 | |     And be sure not to forget to do:
 | |
 | |      $ git push --tags
 | |
 | |     If the currently installed version is *not* from one of the signed
 tags, the
 | |     version number attribute created by versioneer will be the short
 ID of the git
 | |     commit from which the installation took place, prefixed with the
 most recent
 | |     tagged release at that point, i.e.:
 | |
 | |      >>> import bridgedb
 | |      >>> bridgedb.__version__
 | |      0.0.1-git528ff30c
 | |
 | |  .gitattributes           |   1 +
 | |  lib/bridgedb/__init__.py |   4 +
 | |  lib/bridgedb/_version.py | 197 +++++++++++++++++++
 | |  setup.py                 |  73 ++++---
 | |  versioneer.py            | 656
 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 | |  5 files changed, 906 insertions(+), 25 deletions(-)
 }}}

 I made a tag, `'bridgedb-0.0.1'` just to initialize the automatic
 versioning system.

 '''I propose the following bumping strategy''': Because aagbsn (or maybe
 someone else beforehand) was calling the current version `'0.1.0'` I'm
 going to tag `'bridgedb-0.1.1'` as the first release thus far with the
 versioning system, and each deployment afterwards will get the micro
 version number bumped, so the next one will be `'bridgedb-0.1.2'`. The
 minor version number should get bumped whenever "significant" changes are
 made (for some as-yet-to-be-defined and arbitrary def__n__s of
 "significant"), and the major version number should get bumped when
 behaviour is so altered that it is incompatible with the previous version.
 I also propose keeping a `CHANGELOG` file.

 I'm '''not actually set on this version-number-bumping strategy''', so
 ideas are welcome.

-- 
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/9425#comment:1>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list