[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