[Python-Dev] r85838 - python/branches/py3k/.gitignore (original) (raw)

Ned Deily nad at acm.org
Tue Oct 26 21:19:52 CEST 2010


In article <20101026200234.5f8e8323 at pitrou.net>, Antoine Pitrou <solipsis at pitrou.net> wrote:

You could use own of the "official" mirrors at http://code.python.org/hg/

The "official" hg mirrors work great: in my experience, faster than svn and simpler with all the useful history information retained from the original svn repos. Thanks for that! As an example, for OS X TextMate users out there, with up-to-date Mercurial and Subversion bundles, try doing an Annotate on an hg clone of a Python branch vs a Blame on an svn co. With the hg clones and the hg rebase extension (now a standard part of hg), I've moved away from using hg mq patch queues for patch development although I still use the svn repos (until the transition is closer) and mq for installer build and regression testing.

FWIW, my hg workflow these days is to clone a local "master" clone for each of 27, 31, and py3k repos from the official mirrors then just clone working copies from my local masters as needed for each issue. Using a local master speeds things up, potentially saves disk space as hg uses hard links for local clones where possible, and saves on network bandwidth. With work-in-progress committed to a working copy, I can update automatically to the latest tip by a two-step update: update the local master from the official mirror (via "pull") and then update the working copy from the local master and use rebase to manage any new merge conflicts. I couldn't quite get the two-stage pulls to completely work using one standard hg command so I wrote a "pull-clone" script that does the trick for me:

import ConfigParser import os.path import subprocess import sys

HG_DEFAULTS = '.hg/hgrc' HG_BIN = '/opt/local/bin/hg'

if not os.path.exists(HG_DEFAULTS): sys.exit('No hg repository here') else: config = ConfigParser.ConfigParser() config.read(HG_DEFAULTS) try: default = config.get('paths', 'default') except ConfigParser.NoSectionError, ConfigParser.NoOptionError: default = ''

if default.startswith('/'):
    subprocess.check_call([HG_BIN, 'pull', '-R', default], 

cwd=default)

subprocess.check_call([HG_BIN, 'pull', '-u', '--rebase'])
subprocess.check_call([HG_BIN, 'summary', '--remote'])

-- Ned Deily, nad at acm.org



More information about the Python-Dev mailing list