annotate README @ 628:4375d37fea1e

svnrepo: fix issue 187: ignore pushable bookmarks in hg 1.6 Mercurial 1.6 introduces two new methods for repo subclasses -- pushkey and listkeys -- to support pushing/pulling bookmarks between hg repositories. (See mpm's blog post http://www.selenic.com/blog/?p=644 for details.) Unfortunately, these are only defined in the subclasses, and not in the repo base class. Perhaps the bookmarks extension should also be checking the repo for pushkeys capability by calling repo.capable('pushkey') to check. It doesn't. In the meantime, we can implement these ourselves. svnrepo should declare these methods since it is derived directly from repo. They do nothing -- listkeys merely returns an empty dictionary; pushkey returns False; this is the behaviour of httprepo or sshrepo when the remote end is running an earlier version of Mercurial. svnlocalrepo should not declare these methods since it derives from a subclass of localrepo, which already will have them, unless some other badly behaved extensions are doing something intensely weird.
author James McKay <code@jamesmckay.net>
date Sun, 04 Jul 2010 18:21:20 +0100
parents ebecf034e52a
children f12257bf8b91
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
288
982c46e7d167 BitBucket supports having the ReST declaration in a comment.
Augie Fackler <durin42@gmail.com>
parents: 280
diff changeset
1 .. -*-restructuredtext-*-
3
735fdc6c130a Change the readme to be reST.
Augie Fackler <durin42@gmail.com>
parents: 2
diff changeset
2
192
246ca614f04e Promote first heading to a real title.
Martin Geisler <mg@daimi.au.dk>
parents: 191
diff changeset
3 ============
246ca614f04e Promote first heading to a real title.
Martin Geisler <mg@daimi.au.dk>
parents: 191
diff changeset
4 hgsubversion
246ca614f04e Promote first heading to a real title.
Martin Geisler <mg@daimi.au.dk>
parents: 191
diff changeset
5 ============
246ca614f04e Promote first heading to a real title.
Martin Geisler <mg@daimi.au.dk>
parents: 191
diff changeset
6
161
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
7 hgsubversion is an extension for Mercurial that allows using Mercurial
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
8 as a Subversion client.
0
f2636cfed115 Initial import of hgsubversion into a public repository.
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
9
515
9fadbf0686a1 README: updated reason users might want to avoid hgsubversion
Augie Fackler <durin42@gmail.com>
parents: 477
diff changeset
10 At this point, hgsubversion is usable by users reasonably familiar with
9fadbf0686a1 README: updated reason users might want to avoid hgsubversion
Augie Fackler <durin42@gmail.com>
parents: 477
diff changeset
11 Mercurial as a VCS. It's not recommended to dive into hgsubversion as an
9fadbf0686a1 README: updated reason users might want to avoid hgsubversion
Augie Fackler <durin42@gmail.com>
parents: 477
diff changeset
12 introduction to Mercurial, since hgsubversion "bends the rules" a little
9fadbf0686a1 README: updated reason users might want to avoid hgsubversion
Augie Fackler <durin42@gmail.com>
parents: 477
diff changeset
13 and violates some of the typical assumptions of early Mercurial users.
2
89f88df794d3 Cleanup to 80 columns and add a couple of notes on basic use.
Augie Fackler <durin42@gmail.com>
parents: 0
diff changeset
14
5
0548662e2f34 Add a section on installation.
Augie Fackler <durin42@gmail.com>
parents: 4
diff changeset
15 Installation
0548662e2f34 Add a section on installation.
Augie Fackler <durin42@gmail.com>
parents: 4
diff changeset
16 ------------
161
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
17 You need to have Subversion installed with the SWIG Python bindings
476
64cc119d8a9e README: Mercurial 1.3 is no longer in development
Martin Geisler <mg@lazybytes.net>
parents: 391
diff changeset
18 from Subversion 1.5 or later. You need Mercurial 1.3 or later.
5
0548662e2f34 Add a section on installation.
Augie Fackler <durin42@gmail.com>
parents: 4
diff changeset
19
0548662e2f34 Add a section on installation.
Augie Fackler <durin42@gmail.com>
parents: 4
diff changeset
20 .. _mercurial: http://selenic.com/repo/hg
53
b61d49e3f91c crew-stable does not have what I need after all. Oops.
Augie Fackler <durin42@gmail.com>
parents: 50
diff changeset
21 .. _mercurial-stable: http://selenic.com/repo/hg-stable
5
0548662e2f34 Add a section on installation.
Augie Fackler <durin42@gmail.com>
parents: 4
diff changeset
22 .. _crew: http://hg.intevation.org/mercurial/crew
0548662e2f34 Add a section on installation.
Augie Fackler <durin42@gmail.com>
parents: 4
diff changeset
23 .. _crew-stable: http://hg.intevation.org/mercurial/crew-stable
0548662e2f34 Add a section on installation.
Augie Fackler <durin42@gmail.com>
parents: 4
diff changeset
24
161
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
25 If you are unfamiliar with installing Mercurial extensions, please see
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
26 the UsingExtensions_ page in the Mercurial wiki. Look at the example
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
27 for specifying an absolute path near the bottom of the page. You want
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
28 to give the path to the top level of your clone of this repository.
5
0548662e2f34 Add a section on installation.
Augie Fackler <durin42@gmail.com>
parents: 4
diff changeset
29
477
3855865ba53d README: update URL to Mercurial wiki
Martin Geisler <mg@lazybytes.net>
parents: 476
diff changeset
30 .. _UsingExtensions: http://mercurial.selenic.com/wiki/UsingExtensions
5
0548662e2f34 Add a section on installation.
Augie Fackler <durin42@gmail.com>
parents: 4
diff changeset
31
161
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
32 Before using hgsubversion, I *strongly* encourage you to run the
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
33 automated tests. Just use nose_ if you have it (or ``easy_install
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
34 nose`` if you want it), or use ``python tests/run.py`` to run the
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
35 suite with the conventional test runner. Note that because I use nose,
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
36 there's a lot of stdout spew in the tests right now. The important
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
37 part is that all the tests pass.
30
9867250e0a4a Add a segment on running the tests before use.
Augie Fackler <durin42@gmail.com>
parents: 24
diff changeset
38
9867250e0a4a Add a segment on running the tests before use.
Augie Fackler <durin42@gmail.com>
parents: 24
diff changeset
39 .. _nose: http://code.google.com/p/python-nose/
9867250e0a4a Add a segment on running the tests before use.
Augie Fackler <durin42@gmail.com>
parents: 24
diff changeset
40
3
735fdc6c130a Change the readme to be reST.
Augie Fackler <durin42@gmail.com>
parents: 2
diff changeset
41 Basic Use
735fdc6c130a Change the readme to be reST.
Augie Fackler <durin42@gmail.com>
parents: 2
diff changeset
42 -----------
735fdc6c130a Change the readme to be reST.
Augie Fackler <durin42@gmail.com>
parents: 2
diff changeset
43 Get a new clone of an svn server::
735fdc6c130a Change the readme to be reST.
Augie Fackler <durin42@gmail.com>
parents: 2
diff changeset
44
258
4ab27ddbae51 Updated readme a little bit for the new UI.
Augie Fackler <durin42@gmail.com>
parents: 192
diff changeset
45 $ hg clone <svn URI> [destination]
3
735fdc6c130a Change the readme to be reST.
Augie Fackler <durin42@gmail.com>
parents: 2
diff changeset
46
735fdc6c130a Change the readme to be reST.
Augie Fackler <durin42@gmail.com>
parents: 2
diff changeset
47 Real example::
735fdc6c130a Change the readme to be reST.
Augie Fackler <durin42@gmail.com>
parents: 2
diff changeset
48
391
dbdcb97b38af README: svn+http is outdated.
Augie Fackler <durin42@gmail.com>
parents: 288
diff changeset
49 $ hg clone http://python-nose.googlecode.com/svn nose-hg
3
735fdc6c130a Change the readme to be reST.
Augie Fackler <durin42@gmail.com>
parents: 2
diff changeset
50
161
47127255145c Wrapped long lines in README.
Martin Geisler <mg@daimi.au.dk>
parents: 149
diff changeset
51 Note, you should pull from the root subversion directory, not specific
391
dbdcb97b38af README: svn+http is outdated.
Augie Fackler <durin42@gmail.com>
parents: 288
diff changeset
52 folders (such as trunk).
113
31923684e4dc Better note on how to pull a repository.
John Paulett <john.paulett@gmail.com>
parents: 53
diff changeset
53
3
735fdc6c130a Change the readme to be reST.
Augie Fackler <durin42@gmail.com>
parents: 2
diff changeset
54 Pull new revisions into an already-converted repo::
2
89f88df794d3 Cleanup to 80 columns and add a couple of notes on basic use.
Augie Fackler <durin42@gmail.com>
parents: 0
diff changeset
55
258
4ab27ddbae51 Updated readme a little bit for the new UI.
Augie Fackler <durin42@gmail.com>
parents: 192
diff changeset
56 $ hg pull
2
89f88df794d3 Cleanup to 80 columns and add a couple of notes on basic use.
Augie Fackler <durin42@gmail.com>
parents: 0
diff changeset
57
191
0e912d37cbab Mark command line and svn:externals as literal text.
Martin Geisler <mg@daimi.au.dk>
parents: 190
diff changeset
58 For more information, see ``hg help svn`` while in a converted repo.
177
71d170253a6f README: document svn:externals support
Patrick Mezard <pmezard@gmail.com>
parents: 161
diff changeset
59
191
0e912d37cbab Mark command line and svn:externals as literal text.
Martin Geisler <mg@daimi.au.dk>
parents: 190
diff changeset
60 Support for ``svn:externals``
0e912d37cbab Mark command line and svn:externals as literal text.
Martin Geisler <mg@daimi.au.dk>
parents: 190
diff changeset
61 -----------------------------
0e912d37cbab Mark command line and svn:externals as literal text.
Martin Geisler <mg@daimi.au.dk>
parents: 190
diff changeset
62 All ``svn:externals`` properties are serialized into a single
565
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
63 ``.hgsvnexternals`` file having the following syntax::
190
078425d0187d Fix reST syntax error in README.
Martin Geisler <mg@daimi.au.dk>
parents: 189
diff changeset
64
078425d0187d Fix reST syntax error in README.
Martin Geisler <mg@daimi.au.dk>
parents: 189
diff changeset
65 [.]
565
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
66 common1 http://path/to/external/svn/repo1
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
67 ...additional svn:externals properties lines...
190
078425d0187d Fix reST syntax error in README.
Martin Geisler <mg@daimi.au.dk>
parents: 189
diff changeset
68 [dir2]
565
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
69 common2 -r123 http://path/to/external/svn/repo2
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
70 ...additional svn:externals properties lines...
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
71
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
72 A header line in brackets specifies the directory the property applies
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
73 to, where '.' indicates the project root directory. The property content
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
74 follows the header, **with every content line being prefixed by a single
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
75 space**. Note that the property lines have a format identical to
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
76 svn:externals properties as used in Subversion, and do not support the
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
77 hgsubversion extended svn+http:// URL format.
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
78
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
79 Issuing the command ``hg svn updateexternals`` with the
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
80 ``.hgsvnexternals`` example above would fetch the latest revision of
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
81 repo1 into the subdirectory ./common1, and revision 123 of repo2 into
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
82 dir2/common2. Note that ``.hgsvnexternals`` must be tracked by Mercurial
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
83 before this will work. If ``.hgsvnexternals`` is created or changed, it
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
84 will not be pushed to the related Subversion repository, *but its
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
85 contents will be used to update ``svn:externals`` properties on the
ebecf034e52a README: improved documentation of svn:externals support
Mark Edgington <edgimar@gmail.com>
parents: 515
diff changeset
86 related Subversion repository*.