Skip to main content

Summary

This set of scripts allows to work locally on Subversion-managed projects using the Mercurial distributed version control system.

Currenly two scripts are provided:

  • hgimportsvn initializes an SVN checkout which is also a Mercurial repository.

  • hgpullsvn pulls the latest changes from the SVN repository, and updates the Mercurial repository accordingly.

Example

Making a checkout of the Nose trunk:

$ mkdir nose && cd nose
  # Make SVN checkout, initialize hg repository with first SVN revision
$ hgimportsvn http://python-nose.googlecode.com/svn/trunk
$ cd trunk
  # Pull all history from SVN, creating a new hg changeset for each SVN rev
$ hgpullsvn

Requirements

You first need to install the “pysvn” library (http://pysvn.tigris.org/). Unfortunately it is not available as an easy_install package, so it can’t be automated in the setup script. In Debian and Ubuntu this package is named “python-svn” (not “python-subversion” which is a different package). In Mandriva it is named “python-pysvn” (not “python-svn” which is a different package).

Features

Metadata

hgsvn reflects commit times (using the local timezone) and commit author names. Commit messages can contain Unicode characters.

Tags

hgpullsvn tags each new Mercurial changeset with a local tag named ‘svn.123’ where 123 is the number of the corresponding SVN revision. Local tags were chosen because they don’t pollute the hg log with superfluous entries, and also because SVN revision numbers are only meaningful for a specific branch: there is no use propagating them (IMHO).

Named branches

These scripts encourage the use of named branches. All updates using hgpullsvn are made in the branch named from the last component of the SVN URL (e.g., if the SVN URL is http://svn.myproj/branches/feature-ZZZ/, hgpullsvn will create and use the named branch ‘feature-ZZZ’).

You can thus do local development using one or several named branches, and hgpullsvn will update to the original (pristine) branch, leaving your local work intact (you can then merge by yourself if your want). This means that hg di -r name-of-pristine-branch will immediately give you a patch against the pristine branch, which you can submit to the project maintainers.

(Note: in a non-trivial setup where you work on several features or bugfixes, you will clone the pristine repository for each separate piece of work, which will still give you the benefit of named branches for quickly extracting diffs between branches).

Detecting parent repository

If the SVN URL has been created by copying from another SVN URL (this is the standard method for branch creation), hgimportsvn tries to find an hgsvn repository corresponding to the parent SVN URL. It then creates the new repository by cloning this repository at the revision immediately before the creation of the SVN branch.

In other words, let’s say you are operating from myworkdir/. In myworkdir/trunk, you already have an hgsvn repository synced from svn://server/myproj/trunk. You then hgimport svn://server/myproj/branches/new-feature. It will find that the ‘new-feature’ branch has been created by copying from ‘trunk’ at rev. 1138. It will thus created the ‘new-feature’ hg repository by cloning from the ‘trunk’ repository at the revision immediately preceding rev. 1138: for example rev. 1135, identified by the local tag ‘svn.1135’.

This means you will have an hgsvn repository containing two named branches: ‘trunk’ for all the changesets in the trunk before rev. 1138, and ‘new-feature’ for all the changesets in the SVN branch (therefore, after rev. 1138). This way, you can easily track how the branch diverges from the trunk, but also do merges, etc.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hgsvn-0.1.tar.gz (24.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

hgsvn-0.1-py2.5.egg (20.7 kB view details)

Uploaded Egg

hgsvn-0.1-py2.4.egg (21.1 kB view details)

Uploaded Egg

File details

Details for the file hgsvn-0.1.tar.gz.

File metadata

  • Download URL: hgsvn-0.1.tar.gz
  • Upload date:
  • Size: 24.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for hgsvn-0.1.tar.gz
Algorithm Hash digest
SHA256 00b91e3706ecb46a8607e804df48bab4c056963670237a04f02fe1afc798fc43
MD5 31217345d05a355ecbdb9da7eca5749f
BLAKE2b-256 adccfba1499413380032d439141d4ed2a4dd30f67d68648175c16ebf82f57576

See more details on using hashes here.

File details

Details for the file hgsvn-0.1-py2.5.egg.

File metadata

  • Download URL: hgsvn-0.1-py2.5.egg
  • Upload date:
  • Size: 20.7 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for hgsvn-0.1-py2.5.egg
Algorithm Hash digest
SHA256 24a72614d013db14722fa51b08c0b39080f22fdd30b7e5512636676919e2edc2
MD5 a54c2f205ead73ca3fe4dbc97eb475f0
BLAKE2b-256 6fb14c70ff3bc7e9b456da6aaf198cab80643627a73eda23a9605feb605c093e

See more details on using hashes here.

File details

Details for the file hgsvn-0.1-py2.4.egg.

File metadata

  • Download URL: hgsvn-0.1-py2.4.egg
  • Upload date:
  • Size: 21.1 kB
  • Tags: Egg
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for hgsvn-0.1-py2.4.egg
Algorithm Hash digest
SHA256 5bd512579cfc3ff72dd33922e754ff315be00d551c232e8b1cc88b5c26ce2c48
MD5 f6a4485b1c83b712d675d6bbba257424
BLAKE2b-256 d1af36c419dd13ccb8334ac66baf65bb1d56e25a8029276d2ea9b800c1eacbea

See more details on using hashes here.

Release history Release notifications | RSS feed

0.6.0

3 files

0.5.2

1 file

0.5.1

2 files

0.5.0

1 file

0.4.1

2 files

0.3.15

1 file

0.3.14

1 file

0.3.13

1 file

0.3.12

1 file

0.3.11

1 file

0.3.10

1 file

0.3.9

1 file

0.3.8

1 file

0.3.7

1 file

0.3.6

1 file

0.3.5

1 file

0.3.4

1 file

0.3.3

1 file

0.3.2

2 files

0.3.1

1 file

0.3.0

2 files

0.2.6

1 file

0.2.5

2 files

0.2.4

1 file

0.2.3

1 file

0.1.9

1 file

0.1.8

4 files

0.1.7

4 files

0.1.6

4 files

0.1.5

3 files

0.1.4

3 files

0.1.3

3 files

0.1.2

3 files

0.1.1

3 files

This release

0.1 This release

3 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page