Mercurial > hgsubversion
annotate hgsubversion/layouts/base.py @ 1089:91d061989acc
layouts: correct flubbed __unimplement call in base layout
author | David Schleimer <dschleimer@fb.com> |
---|---|
date | Tue, 06 Aug 2013 14:55:52 -0700 |
parents | 513f2b607b06 |
children | 384eb7e05b61 |
rev | line source |
---|---|
1012
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
1 """Module to hold the base API for layout classes. |
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 This module should not contain any implementation, just a definition |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
4 of the API concrete layouts are expected to implement. |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
5 |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
6 """ |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
7 |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
8 from mercurial import util as hgutil |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
9 |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
10 class BaseLayout(object): |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
11 |
1024
8feff33e387d
layouts: make ui object available to layout instances
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
12 def __init__(self, ui): |
8feff33e387d
layouts: make ui object available to layout instances
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
13 self.ui = ui |
8feff33e387d
layouts: make ui object available to layout instances
David Schleimer <dschleimer@fb.com>
parents:
1014
diff
changeset
|
14 |
1012
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
15 def __unimplemented(self, method_name): |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
16 raise NotImplementedError( |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
17 "Incomplete layout implementation: %s.%s doesn't implement %s" % |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
18 (self.__module__, self.__name__, method_name)) |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
19 |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
20 def localname(self, path): |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
21 """Compute the local name for a branch located at path. |
1014
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
22 |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
23 path should be relative to the repo url. |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
24 |
1012
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
25 """ |
e8cd211684c4
layouts: refactor out svn path to mercurial branch logic
David Schleimer <dschleimer@fb.com>
parents:
diff
changeset
|
26 self.__unimplemented('localname') |
1013
d507c1a12dcb
layouts: refactor mercurial branch to svn path mapping out of svnmeta
David Schleimer <dschleimer@fb.com>
parents:
1012
diff
changeset
|
27 |
d507c1a12dcb
layouts: refactor mercurial branch to svn path mapping out of svnmeta
David Schleimer <dschleimer@fb.com>
parents:
1012
diff
changeset
|
28 def remotename(self, branch): |
1014
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
29 """Compute a subversion path for a mercurial branch name |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
30 |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
31 This should return a path relative to the repo url |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
32 |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
33 """ |
1013
d507c1a12dcb
layouts: refactor mercurial branch to svn path mapping out of svnmeta
David Schleimer <dschleimer@fb.com>
parents:
1012
diff
changeset
|
34 self.__unimplemented('remotename') |
1014
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
35 |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
36 def remotepath(self, branch, subdir='/'): |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
37 """Compute a subversion path for a mercurial branch name. |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
38 |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
39 This should return an absolute path, assuming our repo root is at subdir |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
40 A false subdir shall be taken to mean /. |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
41 |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
42 """ |
0ed7cf23e801
layouts: refactor path component of convinfo generation into layouts lib
David Schleimer <dschleimer@fb.com>
parents:
1013
diff
changeset
|
43 self.__unimplemented('remotepath') |
1026
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1024
diff
changeset
|
44 |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1024
diff
changeset
|
45 def taglocations(self, meta_data_dir): |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1024
diff
changeset
|
46 """Return a list of locations within svn to search for tags |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1024
diff
changeset
|
47 |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1024
diff
changeset
|
48 Should be returned in reverse-sorted order. |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1024
diff
changeset
|
49 |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1024
diff
changeset
|
50 """ |
66395f232b7c
layouts: pull tag location list management into layout module
David Schleimer <dschleimer@fb.com>
parents:
1024
diff
changeset
|
51 self.__unimplemented('tagpaths') |
1027
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
52 |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
53 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
|
54 """Get the tag name for the given svn path, if it is a possible tag. |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
55 |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
56 This function should return None if the path cannot be a tag. |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
57 Returning a non-empty sring does not imply that the path is a |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
58 tag, only that it is a candidate to be a tag. Returning an |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
59 empty string is an error. |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
60 |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
61 Path should be relative to the repo url. |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
62 taglocations should be as returned by self.taglocations() |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
63 |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
64 """ |
16045f6f3fef
layouts: pull svn path -> potential tag name mapping into layouts
David Schleimer <dschleimer@fb.com>
parents:
1026
diff
changeset
|
65 self.__unimplemented('get_path_tag') |
1029
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
66 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
67 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
|
68 """Split the path into a branch component and a local component. |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
69 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
70 path should be relative to our repo url |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
71 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
72 returns (branch_path, local_path) |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
73 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
74 branch_path should be suitable to pass into localname, |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
75 i.e. branch_path should NOT have a leading or trailing / |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
76 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
77 local_path should be relative to the root of the Mercurial working dir |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
78 |
513f2b607b06
layouts: pull out logic for splitting svn paths into branch and local parts
David Schleimer <dschleimer@fb.com>
parents:
1027
diff
changeset
|
79 """ |
1089
91d061989acc
layouts: correct flubbed __unimplement call in base layout
David Schleimer <dschleimer@fb.com>
parents:
1029
diff
changeset
|
80 self.__unimplemented('split_remote_name') |