annotate hgsubversion/layouts/__init__.py @ 1555:cff81f35b31e

cleanup: reference Abort from mercurial.error instead of mercurial.util It's been there since hg 1.7 or so, which lets us avoid any need for compat shims.
author Augie Fackler <raf@durin42.com>
date Sat, 24 Mar 2018 16:39:30 -0400
parents 91eb0ad1376a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1004
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
1 """Code for dealing with subversion layouts
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
2
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
3 This package is intended to encapsulate everything about subversion
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
4 layouts. This includes detecting the layout based on looking at
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
5 subversion, mapping subversion paths to hg branches, and doing any
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
6 other path translation necessary.
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
7
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
8 NB: this has a long way to go before it does everything it claims to
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
9
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
10 """
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
11
1555
cff81f35b31e cleanup: reference Abort from mercurial.error instead of mercurial.util
Augie Fackler <raf@durin42.com>
parents: 1316
diff changeset
12 from mercurial import error as hgerror
1012
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
13 from mercurial import util as hgutil
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
14
1092
cd0d14e25757 layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents: 1024
diff changeset
15 import custom
1012
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
16 import single
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
17 import standard
1004
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
18
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
19 __all__ = [
1012
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
20 "layout_from_name",
1004
b2d89ba6b871 layouts: pull out code for detecting layout from subversion
David Schleimer <dschleimer@fb.com>
parents:
diff changeset
21 ]
1012
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
22
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
23 # This is the authoritative store of what layouts are available.
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
24 # The intention is for extension authors who wish to build their own
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
25 # layout to add it to this dict.
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
26 NAME_TO_CLASS = {
1092
cd0d14e25757 layouts: add custom layout for those of us that need weird mappings
David Schleimer <dschleimer@fb.com>
parents: 1024
diff changeset
27 "custom": custom.CustomLayout,
1012
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
28 "single": single.SingleLayout,
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
29 "standard": standard.StandardLayout,
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
30 }
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
31
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
32
1265
4744b7bfa476 layouts: change constructor to take a meta object
Sean Farley <sean.michael.farley@gmail.com>
parents: 1264
diff changeset
33 def layout_from_name(name, meta):
1012
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
34 """Returns a layout module given the layout name
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
35
1315
14dab195b2b4 layouts: update doc string to inform about using the right object
Sean Farley <sean.michael.farley@gmail.com>
parents: 1265
diff changeset
36 You should be able to read the layout name from meta.layout but, if
14dab195b2b4 layouts: update doc string to inform about using the right object
Sean Farley <sean.michael.farley@gmail.com>
parents: 1265
diff changeset
37 necessary, you can use one of the meta.layout_from_* functions to get the
1012
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
38 name to pass to this function.
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
39
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
40 """
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
41
e8cd211684c4 layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents: 1006
diff changeset
42 if name not in NAME_TO_CLASS:
1555
cff81f35b31e cleanup: reference Abort from mercurial.error instead of mercurial.util
Augie Fackler <raf@durin42.com>
parents: 1316
diff changeset
43 raise hgerror.Abort('Unknown hgsubversion layout: %s' % name)
1265
4744b7bfa476 layouts: change constructor to take a meta object
Sean Farley <sean.michael.farley@gmail.com>
parents: 1264
diff changeset
44 return NAME_TO_CLASS[name](meta)