@@ -0,0 +1,794 @@
+import os, sys%0Aimport subprocess%0A%0APROJECT = %22winshell%22%0AVERSION_FILE = %22__%25s_version__.py%22 %25 PROJECT)%0A%0Adef git (command):%0A  if isinstance (basestring, command):%0A    command = %5Bcommand%5D%0A  return subprocess.check_output (%5B%22git%22%5D + command)%0A%0AVERSION_BLOCK = %22%22%22%0A# -*- coding: UTF8 -*-%0A__VERSION__ = %22%25(tag)s%22%0A__RELEASE__ = %22%22%0A%22%22%22%0A%0Adef main (tag):%0A  git (%22checkout master%22)%0A  git (%22pull%22)%0A  with open (VERSION_FILE, %22w%22) as f:%0A    f.write (VERSION_BLOCK %25 tag)%0A  git (%5B%22add%22, VERSION_FILE%5D)%0A  git (%5B%22commit%22, %22-m%22, %22Tagged master for v%25s%22 %25 tag%5D)%0A%0A  git (%22checkout stable%22)%0A  git (%22pull%22)%0A  git (%22merge master%22)%0A  git (%5B%22tag%22, tag%5D)%0A%0A  git (%22checkout master%22)%0A  git (%22push --all%22)%0A  git (%22push --tags%22)%0A%0A  subprocess.call (%22python setup.py sdist%22)%0A%0Aif __name__ == '__main__':%0A  main (*sys.argv%5B1:%5D)%0A

Add utility file encapsulating all the steps to tag a release: