[Zope-CMF] A Tale of Two Repositories

Tres Seaver tseaver at palladion.com
Fri May 22 22:30:49 CEST 2015


On 05/14/2015 03:14 PM, Tres Seaver wrote:
> 
> Proposed Github-Launchpad Workflow for CMF
> ==========================================
> 
> A Tale of Two Repositories
> --------------------------
> 
> .. blockquote::
> 
>    It was the best of times, it was the worst of times, it was the age
>    of wisdom, it was the age of foolishness, it was the epoch of belief,
>    it was the epoch of incredulity, it was the season of Light, it was
>    the season of Darkness, it was the spring of hope, it was the winter
>    of despair, we had everything before us, we had nothing before us, we
>    were all going direct to Heaven, we were all going direct the other
>    way – in short, the period was so far like the present period, that
>    some of its noisiest authorities insisted on its being received, for
>    good or for evil, in the superlative degree of comparison only.
> 
> At present, the various CMF projects (``Products.CMFCore``,
> ``Products.CMFDefault``, ``Products.CMFCalendar``,
> ``Products.CMFTopic``, ``Products.CMFUID``, ``Products.GenericSetup``)
> are the only Zope Foundation projects actively maintained on
> ``svn.zope.org``:  all others have migrated to Github.  In the case that
> any other previously-languishing project becomes active, it is first
> moved to Github (e.g., [1]).
> 
> The CMF projects are in this state because one of the main developers is
> unwilling to participate in the project if it moves entirely to
> Github[2], but is willing to continue if a proposal is in place to
> maintain a second public repository, against which his contributions
> would be made[3].  This proposal aims to satisfy that request by hosting
> the second, synchronized repository for each project using the new
> Launchpad Git hosting option[4].
> 
> Repository Details
> ------------------
> 
> For each of the projects listed above:
> 
> 1) Create a Git repository from its Subversion history, and push that
>    repository to Github;  this step will use the same scripts used for
>    other ZF repositories.  E.g., the branches, tags, and trunk for
>    ``Products.CMFCore`` will be hosted on Github at
>    https://github.com/zopefoundation/Products.CMFCore
> 
> 2) Push the new Git repository also to Launchpad.  E.g., the same
>    repository will be pushed to
>    https://code.launchpad.net/~zope-cmf/Products.CMFCore
> 
> 3) Remove all entries from the project's trunk and active release
>    branches on ``svn.zope.org``, leaving behind only a
> 
> 4) Add one-way synchronization ("mirroring") from the Github repository
>    to the Launchpad repository, with the synch happening on a
>    ZF-maintained host.  This explicit syncronization can be retired once
>    the Launchpad Git integration has added its own mirroring (already
>    announced as underway on [4]).
> 
> Contributor Workflow:  Github
> -----------------------------
> 
> Github-based contributors will follow normal Github workflow patterns:
> 
> - Fork the repository of interest via the Github UI.
> 
> - Check out the fork, e.g.:
> 
> .. code-block:: bash
> 
>    $ git clone git at github.com:username/Products.CMFCore
>    $ cd Products.CMFCore
> 
> - Make their changes on a branch, test them, and commit.
> 
> .. code-block:: bash
> 
>    $ git checkout -b bug-12345 master
>    $ vim Products/CMFCore/DynamicType.py
>    ...
>    $ tox
>    ...
>    $ git commit -am "Clean up dyanmic types.
> 
>    Fixes #12345"
> 
> - Push the changed branch back to their fork on Github:
> 
> .. code-block:: bash
> 
>    $ git push origin bug-12345
> 
> - Create a pull request from the branch of their fork to the appropriate
>   master / release branch of ZF's repository via the Github UI.
> 
> Contributor Workflow:  Launchpad
> --------------------------------
> 
> Launchpad-based contributors will follow normal Launchpad workflow
> patterns.  (URLs below assume the contributor has applied the Git
> configuration described in the "Configuring Git" section of [4]).
> 
> - Clone the repository, e.g.:
> 
> .. code-block:: bash
> 
>    $ git clone lp:Products.CMFCore
>    $ cd Products.CMFCore
> 
> - Make their changes on a branch, test them, and commit.
> 
> .. code-block:: bash
> 
>    $ git checkout -b bug-12345 master
>    $ vim Products/CMFCore/DynamicType.py
>    ...
>    $ tox
>    ...
>    $ git commit -am "Clean up dyanmic types.
> 
>    Fixes #12345"
> 
> - Push the changed branch back to their fork on Launchad:
> 
> .. code-block:: bash
> 
>    $ git push lpme:Products.CMFCore
> 
> - Create a merge proposal from the branch of their fork to the
>   appropriate master / release branch of ZF's repository via the LP UI.
> 
> Maintainer Workflow:  Github
> -----------------------------
> 
> Maintainers will work with the Github repository as the "primary"
> repository for a CMF project, using the normal patterns for other ZF
> repositories hosted at Github (checking for contributor status, etc.)
> 
> - The canonical location for bug reports will be on Github.
> 
> - We will enable continuous integration for pull requests and merges via
>   Travis-CI.
> 
> - After review by a maintainer, and assuming the CI passes, the
>   maintainer may merge pull requests via the Github UI of via the
>   command line.
> 
> - Releases will be made from the maintainer's clone of the Github
>   repository, after creating and pushing the appropriate tag for the
>   release.
> 
> Maintainer Workflow:  Launchpad
> -------------------------------
> 
> When reviewing a Launchpad merge proposal, the maintainers fetches the
> proposed branch, e.g.:
> 
> .. code-block:: bash
> 
>    $ cd ~/projects/CMF/Products.CMFCore
>    $ git checkout -b contributor-bug-12345 master
>    $ git pull lp:~contributor/+git/Products.CMFCore bug-12345
> 
> and reviews / tests it locally, e.g.:
> 
> .. code-block:: bash
> 
>    $ git log -p
>    $ tox
> 
> Once review and testing are complete, the maintainer merges the
> branch via the command line, e.g.:
> 
> .. code-block:: bash
> 
>    $ git checkout master
>    $ git merge --no-ff contributor-bug-12345
> 
> The maintainer pushes the target branch *to Github only*, e.g.:
> 
> .. code-block:: bash
> 
>    $ git remote -v | grep origin
>    origin	git at github.com:zopefoundation/gcloud-python.git (fetch)
>    origin	git at github.com:zopefoundation/gcloud-python.git (push)
>    $ git push origin master
> 
> The Launchpad repository will be synched automatically, whether by the
> cron job or by the built-in Launchpad mirroring.
> 
> References
> ----------
> 
> [1] http://comments.gmane.org/gmane.comp.web.zope.devel/30569
> 
> [2] http://permalink.gmane.org/gmane.comp.web.zope.cmf/18242
> 
> [3] http://permalink.gmane.org/gmane.comp.web.zope.cmf/19025
> 
> [4] https://help.launchpad.net/Code/Git

Products.GenericSetup is now moved to Github / Launchpad:

$ svn log -r HEAD \
  svn+ssh://svn.zope.org/repos/main/Products.GenericSetup/trunk
------------------------------------------------------------------------
r130520 | tseaver | 2015-05-22 16:27:22 -0400 (Fri, 22 May 2015) | 8 lines

Note source moved to Github/Launchpad.

See:
https://github.com/zopefoundation/Products.GenericSetup.git
https://git.launchpad.net/~zope-cmf/zope-genericsetup/+git/zope-genericsetup

as described in:
http://permalink.gmane.org/gmane.comp.web.zope.cmf/19202.
------------------------------------------------------------------------



Tres.
-- 
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com



More information about the Zope-CMF mailing list