Show More
@@ -53,3 +53,4 b' 53e2cd303ecf8ca7c7eeebd785c34e5ed6b0f4a4' | |||||
53 | b9bd95e61b49c221c4cca24e6da7c946fc02f992 0 iD8DBQBPeLsIywK+sNU5EO8RAvpNAKCtKe2gitz8dYn52IRF0hFOPCR7AQCfRJL/RWCFweu2T1vH/mUOCf8SXXc= |
|
53 | b9bd95e61b49c221c4cca24e6da7c946fc02f992 0 iD8DBQBPeLsIywK+sNU5EO8RAvpNAKCtKe2gitz8dYn52IRF0hFOPCR7AQCfRJL/RWCFweu2T1vH/mUOCf8SXXc= | |
54 | d9e2f09d5488c395ae9ddbb320ceacd24757e055 0 iD8DBQBPju/dywK+sNU5EO8RArBYAJ9xtifdbk+hCOJO8OZa4JfHX8OYZQCeKPMBaBWiT8N/WHoOm1XU0q+iono= |
|
54 | d9e2f09d5488c395ae9ddbb320ceacd24757e055 0 iD8DBQBPju/dywK+sNU5EO8RArBYAJ9xtifdbk+hCOJO8OZa4JfHX8OYZQCeKPMBaBWiT8N/WHoOm1XU0q+iono= | |
55 | 00182b3d087909e3c3ae44761efecdde8f319ef3 0 iD8DBQBPoFhIywK+sNU5EO8RAhzhAKCBj1n2jxPTkZNJJ5pSp3soa+XHIgCgsZZpAQxOpXwCp0eCdNGe0+pmxmg= |
|
55 | 00182b3d087909e3c3ae44761efecdde8f319ef3 0 iD8DBQBPoFhIywK+sNU5EO8RAhzhAKCBj1n2jxPTkZNJJ5pSp3soa+XHIgCgsZZpAQxOpXwCp0eCdNGe0+pmxmg= | |
|
56 | 5983de86462c5a9f42a3ad0f5e90ce5b1d221d25 0 iD8DBQBPovNWywK+sNU5EO8RAhgiAJ980T91FdPTRMmVONDhpkMsZwVIMACgg3bKvoWSeuCW28llUhAJtUjrMv0= |
@@ -65,3 +65,4 b' 53e2cd303ecf8ca7c7eeebd785c34e5ed6b0f4a4' | |||||
65 | b9bd95e61b49c221c4cca24e6da7c946fc02f992 2.1.2 |
|
65 | b9bd95e61b49c221c4cca24e6da7c946fc02f992 2.1.2 | |
66 | d9e2f09d5488c395ae9ddbb320ceacd24757e055 2.2-rc |
|
66 | d9e2f09d5488c395ae9ddbb320ceacd24757e055 2.2-rc | |
67 | 00182b3d087909e3c3ae44761efecdde8f319ef3 2.2 |
|
67 | 00182b3d087909e3c3ae44761efecdde8f319ef3 2.2 | |
|
68 | 5983de86462c5a9f42a3ad0f5e90ce5b1d221d25 2.2.1 |
@@ -398,10 +398,6 b' def reposetup(ui, repo):' | |||||
398 | if not fstandin.endswith(os.sep): |
|
398 | if not fstandin.endswith(os.sep): | |
399 | fstandin += os.sep |
|
399 | fstandin += os.sep | |
400 |
|
400 | |||
401 | # prevalidate matching standin directories |
|
|||
402 | if util.any(st for st in match._files |
|
|||
403 | if st.startswith(fstandin)): |
|
|||
404 | continue |
|
|||
405 | actualfiles.append(f) |
|
401 | actualfiles.append(f) | |
406 | match._files = actualfiles |
|
402 | match._files = actualfiles | |
407 |
|
403 |
@@ -7,7 +7,7 b'' | |||||
7 |
|
7 | |||
8 | from mercurial.i18n import _ |
|
8 | from mercurial.i18n import _ | |
9 | from mercurial.node import hex |
|
9 | from mercurial.node import hex | |
10 |
from mercurial import encoding, |
|
10 | from mercurial import encoding, util | |
11 | import errno, os |
|
11 | import errno, os | |
12 |
|
12 | |||
13 | def valid(mark): |
|
13 | def valid(mark): | |
@@ -36,7 +36,7 b' def read(repo):' | |||||
36 | refspec = encoding.tolocal(refspec) |
|
36 | refspec = encoding.tolocal(refspec) | |
37 | try: |
|
37 | try: | |
38 | bookmarks[refspec] = repo.changelog.lookup(sha) |
|
38 | bookmarks[refspec] = repo.changelog.lookup(sha) | |
39 |
except |
|
39 | except LookupError: | |
40 | pass |
|
40 | pass | |
41 | except IOError, inst: |
|
41 | except IOError, inst: | |
42 | if inst.errno != errno.ENOENT: |
|
42 | if inst.errno != errno.ENOENT: |
@@ -1328,6 +1328,15 b' The full set of options is:' | |||||
1328 | ``cache`` |
|
1328 | ``cache`` | |
1329 | Whether to support caching in hgweb. Defaults to True. |
|
1329 | Whether to support caching in hgweb. Defaults to True. | |
1330 |
|
1330 | |||
|
1331 | ``collapse`` | |||
|
1332 | With ``descend`` enabled, repositories in subdirectories are shown at | |||
|
1333 | a single level alongside repositories in the current path. With | |||
|
1334 | ``collapse`` also enabled, repositories residing at a deeper level than | |||
|
1335 | the current path are grouped behind navigable directory entries that | |||
|
1336 | lead to the locations of these repositories. In effect, this setting | |||
|
1337 | collapses each collection of repositories found within a subdirectory | |||
|
1338 | into a single entry for that subdirectory. Default is False. | |||
|
1339 | ||||
1331 | ``contact`` |
|
1340 | ``contact`` | |
1332 | Name or email address of the person in charge of the repository. |
|
1341 | Name or email address of the person in charge of the repository. | |
1333 | Defaults to ui.username or ``$EMAIL`` or "unknown" if unset or empty. |
|
1342 | Defaults to ui.username or ``$EMAIL`` or "unknown" if unset or empty. |
@@ -470,9 +470,11 b' static void _index_clearcaches(indexObje' | |||||
470 | Py_ssize_t i; |
|
470 | Py_ssize_t i; | |
471 |
|
471 | |||
472 | for (i = 0; i < self->raw_length; i++) { |
|
472 | for (i = 0; i < self->raw_length; i++) { | |
473 |
|
|
473 | if (self->cache[i]) { | |
|
474 | Py_DECREF(self->cache[i]); | |||
474 | self->cache[i] = NULL; |
|
475 | self->cache[i] = NULL; | |
475 | } |
|
476 | } | |
|
477 | } | |||
476 | free(self->cache); |
|
478 | free(self->cache); | |
477 | self->cache = NULL; |
|
479 | self->cache = NULL; | |
478 | } |
|
480 | } | |
@@ -957,9 +959,19 b' static long inline_scan(indexObject *sel' | |||||
957 | return len; |
|
959 | return len; | |
958 | } |
|
960 | } | |
959 |
|
961 | |||
960 |
static int index_ |
|
962 | static int index_init(indexObject *self, PyObject *args) | |
961 | PyObject *inlined_obj, PyObject *data_obj) |
|
|||
962 | { |
|
963 | { | |
|
964 | PyObject *data_obj, *inlined_obj; | |||
|
965 | Py_ssize_t size; | |||
|
966 | ||||
|
967 | if (!PyArg_ParseTuple(args, "OO", &data_obj, &inlined_obj)) | |||
|
968 | return -1; | |||
|
969 | if (!PyString_Check(data_obj)) { | |||
|
970 | PyErr_SetString(PyExc_TypeError, "data is not a string"); | |||
|
971 | return -1; | |||
|
972 | } | |||
|
973 | size = PyString_GET_SIZE(data_obj); | |||
|
974 | ||||
963 | self->inlined = inlined_obj && PyObject_IsTrue(inlined_obj); |
|
975 | self->inlined = inlined_obj && PyObject_IsTrue(inlined_obj); | |
964 | self->data = data_obj; |
|
976 | self->data = data_obj; | |
965 | self->cache = NULL; |
|
977 | self->cache = NULL; | |
@@ -971,7 +983,6 b' static int index_real_init(indexObject *' | |||||
971 | self->ntdepth = self->ntsplits = 0; |
|
983 | self->ntdepth = self->ntsplits = 0; | |
972 | self->ntlookups = self->ntmisses = 0; |
|
984 | self->ntlookups = self->ntmisses = 0; | |
973 | self->ntrev = -1; |
|
985 | self->ntrev = -1; | |
974 | Py_INCREF(self->data); |
|
|||
975 |
|
986 | |||
976 | if (self->inlined) { |
|
987 | if (self->inlined) { | |
977 | long len = inline_scan(self, NULL); |
|
988 | long len = inline_scan(self, NULL); | |
@@ -987,27 +998,16 b' static int index_real_init(indexObject *' | |||||
987 | self->raw_length = size / 64; |
|
998 | self->raw_length = size / 64; | |
988 | self->length = self->raw_length + 1; |
|
999 | self->length = self->raw_length + 1; | |
989 | } |
|
1000 | } | |
|
1001 | Py_INCREF(self->data); | |||
990 |
|
1002 | |||
991 | return 0; |
|
1003 | return 0; | |
992 | bail: |
|
1004 | bail: | |
993 | return -1; |
|
1005 | return -1; | |
994 | } |
|
1006 | } | |
995 |
|
1007 | |||
996 | static int index_init(indexObject *self, PyObject *args, PyObject *kwds) |
|
|||
997 | { |
|
|||
998 | const char *data; |
|
|||
999 | int size; |
|
|||
1000 | PyObject *inlined_obj; |
|
|||
1001 |
|
||||
1002 | if (!PyArg_ParseTuple(args, "s#O", &data, &size, &inlined_obj)) |
|
|||
1003 | return -1; |
|
|||
1004 |
|
||||
1005 | return index_real_init(self, data, size, inlined_obj, |
|
|||
1006 | PyTuple_GET_ITEM(args, 0)); |
|
|||
1007 | } |
|
|||
1008 |
|
||||
1009 | static PyObject *index_nodemap(indexObject *self) |
|
1008 | static PyObject *index_nodemap(indexObject *self) | |
1010 | { |
|
1009 | { | |
|
1010 | Py_INCREF(self); | |||
1011 | return (PyObject *)self; |
|
1011 | return (PyObject *)self; | |
1012 | } |
|
1012 | } | |
1013 |
|
1013 | |||
@@ -1106,26 +1106,19 b' static PyTypeObject indexType = {' | |||||
1106 | */ |
|
1106 | */ | |
1107 | static PyObject *parse_index2(PyObject *self, PyObject *args) |
|
1107 | static PyObject *parse_index2(PyObject *self, PyObject *args) | |
1108 | { |
|
1108 | { | |
1109 | const char *data; |
|
1109 | PyObject *tuple = NULL, *cache = NULL; | |
1110 | int size, ret; |
|
|||
1111 | PyObject *inlined_obj, *tuple = NULL, *cache = NULL; |
|
|||
1112 | indexObject *idx; |
|
1110 | indexObject *idx; | |
1113 |
|
1111 | int ret; | ||
1114 | if (!PyArg_ParseTuple(args, "s#O", &data, &size, &inlined_obj)) |
|
|||
1115 | return NULL; |
|
|||
1116 |
|
1112 | |||
1117 | idx = PyObject_New(indexObject, &indexType); |
|
1113 | idx = PyObject_New(indexObject, &indexType); | |
1118 |
|
||||
1119 | if (idx == NULL) |
|
1114 | if (idx == NULL) | |
1120 | goto bail; |
|
1115 | goto bail; | |
1121 |
|
1116 | |||
1122 |
ret = index_ |
|
1117 | ret = index_init(idx, args); | |
1123 | PyTuple_GET_ITEM(args, 0)); |
|
1118 | if (ret == -1) | |
1124 | if (ret) |
|
|||
1125 | goto bail; |
|
1119 | goto bail; | |
1126 |
|
1120 | |||
1127 | if (idx->inlined) { |
|
1121 | if (idx->inlined) { | |
1128 | Py_INCREF(idx->data); |
|
|||
1129 | cache = Py_BuildValue("iO", 0, idx->data); |
|
1122 | cache = Py_BuildValue("iO", 0, idx->data); | |
1130 | if (cache == NULL) |
|
1123 | if (cache == NULL) | |
1131 | goto bail; |
|
1124 | goto bail; | |
@@ -1134,8 +1127,6 b' static PyObject *parse_index2(PyObject *' | |||||
1134 | Py_INCREF(cache); |
|
1127 | Py_INCREF(cache); | |
1135 | } |
|
1128 | } | |
1136 |
|
1129 | |||
1137 | Py_INCREF(idx); |
|
|||
1138 |
|
||||
1139 | tuple = Py_BuildValue("NN", idx, cache); |
|
1130 | tuple = Py_BuildValue("NN", idx, cache); | |
1140 | if (!tuple) |
|
1131 | if (!tuple) | |
1141 | goto bail; |
|
1132 | goto bail; |
General Comments 0
You need to be logged in to leave comments.
Login now