# Work in progress...

A note on mock versions: 

  There are now two main branches to be aware of:
  	- mock-1.0 (pre-F13 and EPEL5)
	- mock-1.1+ (F-13+ and EPEL6+)
  In the upstream git tree, mock-1.0 is tracked on the branch origin/mock-1.0,
  while mock-1.1+ is in the master branch. Please be careful when
  updating the various distro to use the correct branch and version
  number when generating tarfiles for RPM generation.

Note that we've now switched over to using git for the package
repositories (as opposed to the old CVS repositories). To make use of
the new format, you must install the fedora-packager package and clone
the mock package repository:

    $ sudo yum install fedora-packager
    $ fedpkg clone mock
    $ mv mock mock-fedora.git

The last step is not strictly required, but I do it to keep from
confusing the package repository with the upstream (source) repository

=====================================================================

Release checklist overview:

   1) upstream git tree: pull, merge, checkin, tag and push
   2) koji git tree: for each release: checkin tarball and spec, kick off builds
   3) bodhi: schedule releases

=====================================================================
For a mock 1.1+ release

In the upstream git tree:

   0) fetch updates from origin and fast forward your local master
      $ git fetch origin
      $ git checkout master
      $ git merge origin/master
   1) create a branch from master (e.g. 'prerelease') and switch to it
      $ git branch prelease master
      $ git checkout prerelease
   2) fetch remotes and merge remote updates
      $ git fetch jkeating
      $ git merge jkeating/updates-for-clark
   3) merge any local branch work and reolve any conflicts
      $ git merge work
   4) update configure.ac with new version info (don't commit yet)
   5) update the %changelog section of mock.spec.in
   6) run 'autogen.sh' to update autoconf files
   7) run 'configure' to generate Makefile and mock.spec
   8) run 'make rpm' to generate binary RPM and propagate version
      changes (Note this also generates a tar file for use later).
   9) verify that tests/runtests.sh uses a supported config file
      (i.e. released fedora minus one). If not, edit and commit
  10) run 'make check' and fix any reported failures until it passes
  11) check in any changes required to fix test failures
  12) remove ChangeLog and AUTHORS
  13) run 'make dist' to generate ChangeLog and AUTHORS files and
      regenerate tar file
  14) commit configure.ac and any other changes with a
      version bump message:
     $ git commit -m 'version bump' configure.ac
  15) tag the git tree:
     $ git tag -u <your key> mock-<version>
  16) checkout master and merge your work directory:
      $ git checkout master
      $ git merge prerelease
  16) push to main git repo (only from master branch):
     $ git push --tags origin master  

In the fedora git (koji) tree

   1) cd to the previously cloned mock package repository
       $ cd ../mock-fedora.git
   2) upload the new source tarball from the upstream git tree
       $ fedpkg new-sources ../mock.git/mock-1.1.3.tar.gz
   3) copy in the new specfile that matches the tarball
       $ cp ../mock.git/mock.spec .
   4) create a clog from the new specfile
       $ fedpkg clog
   5) commit and push the new sources
       $ fedpkg commit -F clog -p
   6) initiate a koji build
       $ fedpkg build --notwait
   7) switch branches to the latest released fedora
       $ fedpkg switch-branch f14
              or
       $ git checkout f14
   8) merge master into the current release
       $ git merge master
      if there are conflicts, resolve and commit
   9) initiate a build for the branch
       $ fedpkg build --nowait
   10) repeat steps 8 and 9 for all supported fedora releases and EPEL releases
      (e.g. f14, f13, el6)

Once the builds finish (successfully) you should push the just built
packages to their respective testing repositories. This can be done
either with the Bodhi WebUI at
https://admin.fedoraproject.org/updates/ or if there are no other
package dependencies, using the 'fedpkg update' command. 
Note that you do not need to do this for the master (rawhide) branch
since it automatically gets pushed to testing.  

=====================================================================
For a mock 1.0 release (now only for EL5)

In the git tree:

   0) fetch updates from origin and fast forward your local mock-1.0
      $ git fetch origin
      $ git checkout mock-1.0
      $ git merge origin/mock-1.0
   1) create a branch from mock-1.0 (e.g. 'prerelease') and switch to it
      $ git branch prelease mock-1.0
      $ git checkout prerelease
   2) fetch remotes and merge remote updates
      $ git fetch jkeating
      $ git merge jkeating/mock-1.0-updates
   3) merge any local branch work and reolve any conflicts
      $ git merge work
   4) update configure.ac with new version info (don't commit yet)
   5) update the %changelog section of mock.spec.in
   6) run 'autogen.sh' to update autoconf files
   7) run 'configure' to generate Makefile and mock.spec
   8) run 'make rpm' to generate binary RPM and propagate version
      changes (Note this also generates a tar file for use later).
   9) verify that docs/runtests.sh uses a supported config file
      (i.e. epel5 or latest released Fedora). If not, edit and commit
  10) run 'make check' and fix any reported failures until it passes
  11) check in any changes from above
  12) remove ChangeLog and AUTHORS
  13) run 'make dist' to generate ChangeLog and AUTHORS files
  14) commit configure.ac and any other changes with a
      version bump message:
     $ git commit -m 'version bump' configure.ac
  15) tag the git tree:
     $ git tag -u <your key> mock-<version>
  16) checkout mock-1.0 and merge your work directory:
      $ git checkout mock-1.0
      $ git merge prerelease
  16) push to main git repo:
     $ git push --tags origin mock-1.0

In the fedora git (koji) tree

    1) cd to the previously cloned mock package repository
       $ cd mock-fedora.git
    2) switch to the EPEL5 branch
       $ fedpkg switch-branch el5
    3) install a new tarball from the upstream git tree
       $ fedpkg new-source ../mock.git/mock-1.0.9.tar.gz
    4) copy the matching specfile
       $ cp ../mock.git/mock.spec .
    5) create a changelong entry file (clog)
       $ fedpkg clog
    6) commit and push the new tarball and specfile
       $ fedpkg commit -F clog -p
    7) initiate a koji build
       $ fedpkg build --nowait





