Mercurial > hgsubversion
annotate hgsubversion/layouts/standard.py @ 1275:ca771cbf69c6
layouts: use meta.infix in standard
author | Sean Farley <sean.michael.farley@gmail.com> |
---|---|
date | Mon, 24 Mar 2014 11:20:51 -0500 |
parents | d21b7259724a |
children | cc1e2c8cdaa6 |
rev | line source |
---|---|
1026
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
1 import os.path |
1012
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
2 |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
3 import base |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
4 |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
5 class StandardLayout(base.BaseLayout): |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
6 """The standard trunk, branches, tags layout""" |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
7 |
1265
4744b7bfa476
layouts: change constructor to take a meta object
Sean Farley <sean.michael.farley@gmail.com>
parents:
1153
diff
changeset
|
8 def __init__(self, meta): |
4744b7bfa476
layouts: change constructor to take a meta object
Sean Farley <sean.michael.farley@gmail.com>
parents:
1153
diff
changeset
|
9 base.BaseLayout.__init__(self, meta) |
1026
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
10 |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
11 self._tag_locations = None |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
12 |
1268
fadacedaf391
layouts: add cached branchdir property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1265
diff
changeset
|
13 # branchdir is expected to be stripped of leading slashes but retain |
fadacedaf391
layouts: add cached branchdir property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1265
diff
changeset
|
14 # its last slash |
fadacedaf391
layouts: add cached branchdir property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1265
diff
changeset
|
15 meta._gen_cachedconfig('branchdir', 'branches', |
fadacedaf391
layouts: add cached branchdir property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1265
diff
changeset
|
16 pre=lambda x: '/'.join(p for p in x.split('/') |
fadacedaf391
layouts: add cached branchdir property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1265
diff
changeset
|
17 if p) + '/') |
fadacedaf391
layouts: add cached branchdir property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1265
diff
changeset
|
18 |
1274
d21b7259724a
layouts: add cached infix property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1273
diff
changeset
|
19 # infix is expected to be stripped of trailing slashes but retain |
d21b7259724a
layouts: add cached infix property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1273
diff
changeset
|
20 # its first slash |
d21b7259724a
layouts: add cached infix property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1273
diff
changeset
|
21 def _infix_transform(x): |
d21b7259724a
layouts: add cached infix property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1273
diff
changeset
|
22 x = '/'.join(p for p in x.split('/') if p) |
d21b7259724a
layouts: add cached infix property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1273
diff
changeset
|
23 if x: |
d21b7259724a
layouts: add cached infix property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1273
diff
changeset
|
24 x = '/' + x |
d21b7259724a
layouts: add cached infix property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1273
diff
changeset
|
25 return x |
d21b7259724a
layouts: add cached infix property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1273
diff
changeset
|
26 meta._gen_cachedconfig('infix', '', pre=_infix_transform) |
d21b7259724a
layouts: add cached infix property to standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1273
diff
changeset
|
27 |
1265
4744b7bfa476
layouts: change constructor to take a meta object
Sean Farley <sean.michael.farley@gmail.com>
parents:
1153
diff
changeset
|
28 self._infix = self.meta.ui.config('hgsubversion', 'infix', '').strip('/') |
1094
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
29 if self._infix: |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
30 self._infix = '/' + self._infix |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
31 |
1271
a1039f8e57d4
layouts: turn trunk into a property for standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1270
diff
changeset
|
32 @property |
a1039f8e57d4
layouts: turn trunk into a property for standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1270
diff
changeset
|
33 def trunk(self): |
1275
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
34 return 'trunk' + self.meta.infix |
1271
a1039f8e57d4
layouts: turn trunk into a property for standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1270
diff
changeset
|
35 |
1012
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
36 def localname(self, path): |
1272
38c154371240
layouts: use trunk property instead of internal variable
Sean Farley <sean.michael.farley@gmail.com>
parents:
1271
diff
changeset
|
37 if path == self.trunk: |
1012
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
38 return None |
1275
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
39 elif path.startswith(self.meta.branchdir) and path.endswith(self.meta.infix): |
1269
738c685f893c
layouts: use meta.branchdir in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1268
diff
changeset
|
40 path = path[len(self.meta.branchdir):] |
1275
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
41 if self.meta.infix: |
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
42 path = path[:-len(self.meta.infix)] |
1094
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
43 return path |
1012
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
44 return '../%s' % path |
1013
d507c1a12dcb
layouts: refactor mercurial branch to svn path mapping out of svnmeta
David Schleimer <dschleimer@fb.com>
parents:
1012
diff
changeset
|
45 |
d507c1a12dcb
layouts: refactor mercurial branch to svn path mapping out of svnmeta
David Schleimer <dschleimer@fb.com>
parents:
1012
diff
changeset
|
46 def remotename(self, branch): |
d507c1a12dcb
layouts: refactor mercurial branch to svn path mapping out of svnmeta
David Schleimer <dschleimer@fb.com>
parents:
1012
diff
changeset
|
47 if branch == 'default' or branch is None: |
1272
38c154371240
layouts: use trunk property instead of internal variable
Sean Farley <sean.michael.farley@gmail.com>
parents:
1271
diff
changeset
|
48 path = self.trunk |
1013
d507c1a12dcb
layouts: refactor mercurial branch to svn path mapping out of svnmeta
David Schleimer <dschleimer@fb.com>
parents:
1012
diff
changeset
|
49 elif branch.startswith('../'): |
1094
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
50 path = branch[3:] |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
51 else: |
1275
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
52 path = ''.join((self.meta.branchdir, branch, self.meta.infix)) |
1094
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
53 |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
54 return path |
1014
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
55 |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
56 def remotepath(self, branch, subdir='/'): |
1090
80a456b77ade
layouts: fix remotepath for default branch in standard layout
David Schleimer <dschleimer@fb.com>
parents:
1029
diff
changeset
|
57 if subdir == '/': |
80a456b77ade
layouts: fix remotepath for default branch in standard layout
David Schleimer <dschleimer@fb.com>
parents:
1029
diff
changeset
|
58 subdir = '' |
1272
38c154371240
layouts: use trunk property instead of internal variable
Sean Farley <sean.michael.farley@gmail.com>
parents:
1271
diff
changeset
|
59 branchpath = self.trunk |
1090
80a456b77ade
layouts: fix remotepath for default branch in standard layout
David Schleimer <dschleimer@fb.com>
parents:
1029
diff
changeset
|
60 if branch and branch != 'default': |
1014
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
61 if branch.startswith('../'): |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
62 branchpath = branch[3:] |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
63 else: |
1275
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
64 branchpath = ''.join((self.meta.branchdir, branch, |
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
65 self.meta.infix)) |
1014
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
66 |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
67 return '%s/%s' % (subdir or '', branchpath) |
1026
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
68 |
1153
c3c4518e00aa
svnmeta: rename meta_data_dir to metapath
Sean Farley <sean.michael.farley@gmail.com>
parents:
1129
diff
changeset
|
69 def taglocations(self, metapath): |
1101
4a92eb1484ba
layouts: fix crash when importing hgsubversion itself (issue #402)
Greg Ward <greg@gerg.ca>
parents:
1094
diff
changeset
|
70 # import late to avoid trouble when running the test suite |
1107
0f16e11b2c2b
layouts: fix crash when importing hgext_hgsubversion
Sean Farley <sean.michael.farley@gmail.com>
parents:
1101
diff
changeset
|
71 try: |
0f16e11b2c2b
layouts: fix crash when importing hgext_hgsubversion
Sean Farley <sean.michael.farley@gmail.com>
parents:
1101
diff
changeset
|
72 # newer versions of mercurial >= 2.8 will import this because the |
0f16e11b2c2b
layouts: fix crash when importing hgext_hgsubversion
Sean Farley <sean.michael.farley@gmail.com>
parents:
1101
diff
changeset
|
73 # hgext_ logic is already being done in core |
0f16e11b2c2b
layouts: fix crash when importing hgext_hgsubversion
Sean Farley <sean.michael.farley@gmail.com>
parents:
1101
diff
changeset
|
74 from hgsubversion import util |
0f16e11b2c2b
layouts: fix crash when importing hgext_hgsubversion
Sean Farley <sean.michael.farley@gmail.com>
parents:
1101
diff
changeset
|
75 except ImportError: |
0f16e11b2c2b
layouts: fix crash when importing hgext_hgsubversion
Sean Farley <sean.michael.farley@gmail.com>
parents:
1101
diff
changeset
|
76 from hgext_hgsubversion import util |
1101
4a92eb1484ba
layouts: fix crash when importing hgsubversion itself (issue #402)
Greg Ward <greg@gerg.ca>
parents:
1094
diff
changeset
|
77 |
1026
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
78 if self._tag_locations is None: |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
79 |
1153
c3c4518e00aa
svnmeta: rename meta_data_dir to metapath
Sean Farley <sean.michael.farley@gmail.com>
parents:
1129
diff
changeset
|
80 tag_locations_file = os.path.join(metapath, 'tag_locations') |
1129
063cae4e35af
layouts: use util.load instead of bare pickle
Sean Farley <sean.michael.farley@gmail.com>
parents:
1127
diff
changeset
|
81 self._tag_locations = util.load(tag_locations_file) |
1026
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
82 |
1129
063cae4e35af
layouts: use util.load instead of bare pickle
Sean Farley <sean.michael.farley@gmail.com>
parents:
1127
diff
changeset
|
83 if not self._tag_locations: |
1265
4744b7bfa476
layouts: change constructor to take a meta object
Sean Farley <sean.michael.farley@gmail.com>
parents:
1153
diff
changeset
|
84 self._tag_locations = self.meta.ui.configlist('hgsubversion', |
4744b7bfa476
layouts: change constructor to take a meta object
Sean Farley <sean.michael.farley@gmail.com>
parents:
1153
diff
changeset
|
85 'tagpaths', |
4744b7bfa476
layouts: change constructor to take a meta object
Sean Farley <sean.michael.farley@gmail.com>
parents:
1153
diff
changeset
|
86 ['tags']) |
1127
eaefb3413b87
util: rename pickle_atomic to dump
Sean Farley <sean.michael.farley@gmail.com>
parents:
1107
diff
changeset
|
87 util.dump(self._tag_locations, tag_locations_file) |
1026
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
88 |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
89 # ensure nested paths are handled properly |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
90 self._tag_locations.sort() |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
91 self._tag_locations.reverse() |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
92 |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
93 return self._tag_locations |
1027
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
94 |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
95 def get_path_tag(self, path, taglocations): |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
96 for tagspath in taglocations: |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
97 if path.startswith(tagspath + '/'): |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
98 tag = path[len(tagspath) + 1:] |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
99 if tag: |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
100 return tag |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
101 return None |
1029
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
102 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
103 def split_remote_name(self, path, known_branches): |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
104 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
105 # this odd evolution is how we deal with people doing things like |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
106 # creating brances (note the typo), committing to a branch under it, |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
107 # and then moving it to branches |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
108 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
109 # we need to find the ../foo branch names, if they exist, before |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
110 # trying to create a normally-named branch |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
111 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
112 components = path.split('/') |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
113 candidate = '' |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
114 while self.localname(candidate) not in known_branches and components: |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
115 if not candidate: |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
116 candidate = components.pop(0) |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
117 else: |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
118 candidate += '/' |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
119 candidate += components.pop(0) |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
120 if self.localname(candidate) in known_branches: |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
121 return candidate, '/'.join(components) |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
122 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
123 if path == 'trunk' or path.startswith('trunk/'): |
1272
38c154371240
layouts: use trunk property instead of internal variable
Sean Farley <sean.michael.farley@gmail.com>
parents:
1271
diff
changeset
|
124 return self.trunk, path[len(self.trunk) + 1:] |
1093
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1090
diff
changeset
|
125 |
1269
738c685f893c
layouts: use meta.branchdir in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1268
diff
changeset
|
126 if path.startswith(self.meta.branchdir): |
738c685f893c
layouts: use meta.branchdir in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1268
diff
changeset
|
127 path = path[len(self.meta.branchdir):] |
1093
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1090
diff
changeset
|
128 components = path.split('/', 1) |
1269
738c685f893c
layouts: use meta.branchdir in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1268
diff
changeset
|
129 branch_path = ''.join((self.meta.branchdir, components[0])) |
1093
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1090
diff
changeset
|
130 if len(components) == 1: |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1090
diff
changeset
|
131 local_path = '' |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1090
diff
changeset
|
132 else: |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1090
diff
changeset
|
133 local_path = components[1] |
1094
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
134 |
9a7e3dbd0f6e
layouts: add support for an infix between tbt and the hg root
David Schleimer <dschleimer@fb.com>
parents:
1093
diff
changeset
|
135 if local_path == '': |
1275
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
136 branch_path += self.meta.infix |
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
137 elif local_path.startswith(self.meta.infix[1:] + '/'): |
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
138 branch_path += self.meta.infix |
ca771cbf69c6
layouts: use meta.infix in standard
Sean Farley <sean.michael.farley@gmail.com>
parents:
1274
diff
changeset
|
139 local_path = local_path[len(self.meta.infix):] |
1093
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1090
diff
changeset
|
140 return branch_path, local_path |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1090
diff
changeset
|
141 |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1090
diff
changeset
|
142 components = path.split('/') |
791382a21cc4
layouts: add support for configuring branches directory
David Schleimer <dschleimer@fb.com>
parents:
1090
diff
changeset
|
143 return '/'.join(components[:-1]), components[-1] |