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 g...@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 g...@github.com:zopefoundation/gcloud-python.git (fetch) > origin g...@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 tsea...@palladion.com Palladion Software "Excellence by Design" http://palladion.com _______________________________________________ Zope-CMF maillist - Zope-CMF@zope.org https://mail.zope.org/mailman/listinfo/zope-cmf See https://bugs.launchpad.net/zope-cmf/ for bug reports and feature requests