[Python-Dev] Instructions on the new "push request" workflow for 3.5.0rc1+ through 3.5.0 final

Brett Cannon brett at python.org
Tue Aug 11 02:19:52 CEST 2015


A quick hg tip for making sure you check out the right branch: end the URL
on #3.5 and it will start the repo out with the 3.5 as the active branch.

On Mon, Aug 10, 2015, 01:28 Larry Hastings <larry at hastings.org> wrote:

>
> As of Python 3.5.0rc1, the canonical repository for Python 3.5.0 is
> *no longer* on hg.python.org.  Instead, it's hosted on Bitbucket on
> my personal account, here:
>
>      https://bitbucket.org/larry/cpython350
>
> Since 3.5.0rc1 isn't out yet I'm keeping the repository private for now.
> Once 3.5.0 rc1 is released (hopefully Monday) I'll flip the switch and make
> the repository public.  (I'll email python-dev and python-committers when
> that happens.)
>
>
> Putting it succinctly, here's a table of versions and where you'd check in
> for your change to go there:
>
>      3.5.0 : https://bitbucket.org/larry/cpython350 (branch "3.5")
>      3.5.1 : hg.python.org/cpython (branch "3.5")
>      3.6.0 : hg.python.org/cpython (branch "default")
>
> You'll notice nobody but myself has checkin permissions for my 3.5.0 repo
> on
> Bitbucket.  That's on purpose.  The only way you can get changes in to
> 3.5.0
> now is by sending me a Bitbucket "pull request".  This is a workflow
> experiment, to see if we as a community like this sort of new-fangled
> gizmo.
>
> For now, we're only using Bitbucket for the actual final checking-in stage.
> Requests for fixes to be accepted into 3.5.0 and code review will all still
> happen on the Python issue tracker.
>
> Also, I'm officially now asking you folks to do the forward-merge into
> 3.5.1
> and 3.6.0 yourselves.
>
>
> Here's how to get a fix checked in for 3.5.0, starting with 3.5.0rc1+ and
> continuing through until 3.5.0 final.
>
> Pre-requisites:
>    * You must have a Bitbucket account.
>    * You must have commit rights to the CPython repository.
>
>   1. Create an issue on the Python issue tracker for the problem.
>
>   2. Submit a patch that fixes the problem.
>
>   3. Add me to the issue and get me to agree that it needs fixing in 3.5.0.
>      (You can attempt this step before 2 if you prefer.)
>
>   4. Fork my repository into your Bitbucket account using their web GUI.
>      To do that, go to Bitbucket, log in, then go to my 3.5.0 repo:
>
>      https://bitbucket.org/larry/cpython350
>
>      and press the "Fork" link in the left column.  Bitbucket has a
> tutorial
>      on how to do this, here:
>
>
> https://confluence.atlassian.com/display/BITBUCKET/Fork+a+teammate%27s+repository
>
>      Note: DO NOT start with a conventional CPython trunk cloned from
>      hg.python.org.  The 3.5 branch in my repo and the 3.5 branch in
> normal
>      CPython trunk have intentionally diverged and *need* to stay
> out-of-sync.
>
>   5. Make a local clone of your fork on your computer.
>
>      Bitbucket has a tutorial on how to do that, here:
>
>
> https://confluence.atlassian.com/display/BITBUCKET/Copy+your+Mercurial+repository+and+add+source+files
>
>      Reminder: switch to the 3.5 branch!
>
>   6. Apply your change to the 3.5 branch and check in.
>
>      Reminder: check in to the 3.5 branch!
>
>   7. Make sure you checked in your change to the 3.5 branch.
>
>      Reminder: Seriously.  I keep messing this up.  I say, the more
> reminders,
>      the better.
>
>   8. Push your change back to *your* fork on *your* Bitbucket account.
>
>      Just normal "hg push" should work here.
>
>      In case it helps, I recommend using the "https" protocol for this
> step, as
>      it sidesteps ssh authentication and prompts you for your Bitbucket
> username
>      and password.
>
>   9. Create a pull request using Bitbucket's web GUI.
>
>      Bitbucket has a tutorial on how to create a pull request, here:
>
> https://confluence.atlassian.com/display/BITBUCKET/Create+a+pull+request
>
>      On the "Create pull request" web GUI, make sure that you specify
>      branch "3.5" for *both* your repo *and* my repo.  Also, make sure
>      you *don't* check the "Close 3.5 after the pull request is merged"
>      check box.
>
>      (If you use the "Compare" page, you also need to select "3.5" in both
>      drop-down lists--one for my repo, and one for yours.)
>
> 10. Paste a link to the pull request into the issue tracker issue for this
>      change request.
>
> 11. Wait for confirmation that I've accepted your pull request into the
>      3.5.0 repo.
>
> 12. Pull your accepted change from your local Bitbucket fork repo into
>      a normal hg.cpython.org CPython repo, merge into 3.5, then merge
>      into 3.6, then push.
>
>
> For the record, here's what *my* workflow looks like when I accept your
> pull request:
>
> 1. Click on the URL you pasted into the pull request.
>
> 2. Visually check that the diff matches the approved diff in the issue
>     on the issue tracker.
>
> 3. Click on the "Merge" button.
>
>
> Frequently Asked Questions
> ==========================
>
> Q: What if someone sends me a "pull request" for a change that doesn't
>     merge cleanly?
> A: Then I'll decline it, and ask you on the issue tracker to rebase
>     and resubmit.
>
> Q: What if someone sends me a "pull request" but they don't have commit
>     rights to CPython?
> A: I'll ignore it.  I'll only pay attention to pull requests pasted into
>     the issue tracker by someone with commit rights.
>
> Q: Whose name goes on the commit?
> A: It gets the name the checkin was made with.  Don't worry, your name
>     will stay on your commit.
>
> Q: This seems like a lot more work than the old way.
> A: For you guys, yes.  But notice how little work it is for *me*!
> Seriously.
>
> Q: Can I reuse my fork / my local copy?  Or do I have to create
>     a fresh one each time?
> A: I don't care either way.  All I care about are clean pull requests.
>     If you're careful you should have no trouble reusing forks and local
>     checkouts.  If it were me, I'd probably use a fresh fork each time.
>     Forks are cheap and this way is cleaner.
>
>
> I'll add these instructions to the Python Dev Guide in the next day or two.
>
>
> /arry
>
> p.s. Remember to use the 3.5 branch!
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe:
> https://mail.python.org/mailman/options/python-dev/brett%40python.org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20150811/76cd290c/attachment-0001.html>


More information about the Python-Dev mailing list