[Python-Dev] Helping contributors with chores (do we have to?)

Tim Delaney timothy.c.delaney at gmail.com
Sun Jun 25 18:20:20 EDT 2017

On 26 June 2017 at 07:39, Paul Moore <p.f.moore at gmail.com> wrote:

> On 25 June 2017 at 18:31, Donald Stufft <donald at stufft.io> wrote:
> >
> > I have used it. I don’t use it every day but I’ve never had it fail on me
> > unless the contributor has unchecked the flag. I just ``git remote add
> > <github username> <github url>`` then checkout their branch, add more
> > commits, and push to their branch.
> The decision to move to git/github has been made. It's not up for
> debate whether core devs need to learn to deal with it. But we do need
> to acknowledge that there's a significant learning curve, and while
> core devs are contributing from their free time, learning the new
> tooling is a major distraction from what they actually want to do,
> which is work on Python code.

I went  through this transition a few years ago when I changed employment
(and didn't enjoy it in the slightest). Coming from Mercurial, Git feels
primitive (I mean that literally - common functionality often requires
low-level, arcane invocations). I can keep all of the Mercurial
command-line that I use regularly in my head, whereas with Git I always
have to go back to the manual even for things that I use all the time, and
I'm often unsure if I'll get the result I expect. As a result, I've avoided
using Git directly as much as possible.

Instead, my personal recommendation for people who are experienced with
Mercurial but not Git is to use Mercurial with the hggit plugin. It's not
ideal, but since Mercurial functionality is almost a superset of Git
functionality, it works so long as you don't use things that Git can't

The most important things to be aware of IMO are:

1. Avoid the use of named branches and instead use bookmarks (a workflow I
personally hate, but it's the closest match to git branches, and I know I'm
an anomaly in preferring named branches).

2. Last I checked hggit can't force-push to a git repository after
history-modifying actions (e.g. rebase) so after such actions it's
necessary to delete any existing branch in a local git repo, hg push to
that then force-push to Github. This wnew branch head.

So the workflow I use for working with Github is (after enabling hggit):

git clone <repo> <repo>.git
hg clone git+<repo>.git <repo.hg>

cd <repo>.hg

cd <repo>.git
git branch -d  <bookmark>

cd <repo>.hg
hg push -B <bookmark> <repo>.git

cd <repo>.git
git push --force

Although I use a Git GUI to avoid having to remember the git commands ...

Tim Delaney
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-dev/attachments/20170626/35bb98f5/attachment.html>

More information about the Python-Dev mailing list