Mon, 26 Sep 2016 23:28:57 +0900 demandimport: error out early on missing attribute of non package (issue5373)
Yuya Nishihara <yuya@tcha.org> [Mon, 26 Sep 2016 23:28:57 +0900] rev 30024
demandimport: error out early on missing attribute of non package (issue5373) If the parent module isn't a package, all valid attributes must be obtained from it. We can raise ImportError early if any attributes not found.
Tue, 27 Sep 2016 21:56:00 +0900 demandimport: add 'nt' to ignore list (issue5373)
Yuya Nishihara <yuya@tcha.org> [Tue, 27 Sep 2016 21:56:00 +0900] rev 30023
demandimport: add 'nt' to ignore list (issue5373) pathlib2 tries to import nt. Since it is a built-in module, there should be no performance penalty. https://github.com/mcmtroffaes/pathlib2/blob/release/2.2.0/pathlib2.py#L33
Tue, 27 Sep 2016 22:36:00 +0900 demandimport: add '_ctypes.pointer' to ignore list on PyPy
Yuya Nishihara <yuya@tcha.org> [Tue, 27 Sep 2016 22:36:00 +0900] rev 30022
demandimport: add '_ctypes.pointer' to ignore list on PyPy The pointer module is shadowed by a subsequent import. Our demand importer can't handle this because both sub modules and attributes live in the same namespace. https://bitbucket.org/pypy/pypy/src/release-5.0.1/lib_pypy/_ctypes/__init__.py#__init__.py-5
Mon, 26 Sep 2016 16:12:40 +0800 hgweb: make anchor name actually match its href on help index page
Anton Shestakov <av6@dwimlabs.net> [Mon, 26 Sep 2016 16:12:40 +0800] rev 30021
hgweb: make anchor name actually match its href on help index page
Sat, 24 Sep 2016 12:22:30 -0700 perf: add perfchangegroupchangelog command
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Sep 2016 12:22:30 -0700] rev 30020
perf: add perfchangegroupchangelog command This command can be used for testing the performance of producing the changelog portion of a changegroup. We could use additional perf* commands for testing other parts of changegroup. Those can be written another time, when they are needed. (And those may want to refactor the changegroup generation API so code can be reused.) Speaking of code reuse, yes, this command does reinvent a small wheel. I didn't want to scope bloat to change the changegroup API because that will invite bikeshedding.
Sat, 24 Sep 2016 10:44:37 -0700 perf: add --reverse to perfrevlog
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 24 Sep 2016 10:44:37 -0700] rev 30019
perf: add --reverse to perfrevlog It can be useful to know how fast we can read revisions from a revlog in reverse. This operation tends to occur in `hg log` commands, for example.
Sat, 24 Sep 2016 19:58:23 +0900 log: copy the way of ancestor traversal to --follow matcher (issue5376)
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Sep 2016 19:58:23 +0900] rev 30018
log: copy the way of ancestor traversal to --follow matcher (issue5376) We can't use fctx.linkrev() because follow() revset tries hard to simulate the traversal of changelog DAG, not filelog DAG. This patch fixes _makefollowlogfilematcher() to walk file ancestors in the same way as revset._follow(). I'll factor out a common function in future patches.
Sat, 24 Sep 2016 19:52:02 +0900 log: unroll loop that populates file paths for --patch --follow matcher
Yuya Nishihara <yuya@tcha.org> [Sat, 24 Sep 2016 19:52:02 +0900] rev 30017
log: unroll loop that populates file paths for --patch --follow matcher We can't handle the first fctx in the same manner as its ancestors. Also, I think the original code was too tricky.
Sun, 25 Sep 2016 12:20:31 -0700 wireproto: rename argument to groupchunks()
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 25 Sep 2016 12:20:31 -0700] rev 30016
wireproto: rename argument to groupchunks() groupchunks() is a generic "turn a file object into a generator" function. It isn't limited to changegroups. Rename the argument and update the docstring to reflect this.
Sun, 25 Sep 2016 13:20:55 -0700 tests: actually test non-generaldelta variant for stream clones
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 25 Sep 2016 13:20:55 -0700] rev 30015
tests: actually test non-generaldelta variant for stream clones 608cabec1b15 accidentally made both tests test generaldelta repos. Restore the test for a non-gd repo.
Wed, 24 Aug 2016 20:18:58 -0700 revlog: document high frequency of code execution
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 24 Aug 2016 20:18:58 -0700] rev 30014
revlog: document high frequency of code execution Recording my notes while working on performance optimization.
Wed, 24 Aug 2016 20:00:52 -0700 revlog: make code in builddelta() slightly easier to read
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 24 Aug 2016 20:00:52 -0700] rev 30013
revlog: make code in builddelta() slightly easier to read self.compress() is destructured into its components. "l" is renamed to "deltalen."
Fri, 23 Sep 2016 08:15:05 +0000 templates: add built-in files() function
Hannes Oldenburg <hannes.christian.oldenburg@gmail.com> [Fri, 23 Sep 2016 08:15:05 +0000] rev 30012
templates: add built-in files() function We already support multiple primitive for listing files, which were affected by the current changeset. This patch adds files() which returns files of the current changeset matching a given pattern or fileset query via the "set:" prefix.
Sat, 17 Sep 2016 17:02:56 +1000 rebase: rebase changesets in topo order (issue5370) (BC)
Xidorn Quan <me@upsuper.org> [Sat, 17 Sep 2016 17:02:56 +1000] rev 30011
rebase: rebase changesets in topo order (issue5370) (BC) There are two reasons that rebase should be done this way: 1. This would make rebasing faster because it would minimize the total number of files to be checked out in the process, as it don't need to switch back and forth between branches. 2. It makes resolving conflicts easier as user has a better context. This commit changes the behavior in "Test multiple root handling" of test-rebase-obsolete.t. It is an expected change which reflects the new behavior that commits in a branch are grouped together when rebased.
Thu, 22 Sep 2016 12:36:30 -0700 dispatch: make hg --profile wrap reposetup
Arun Kulshreshtha <kulshrax@fb.com> [Thu, 22 Sep 2016 12:36:30 -0700] rev 30010
dispatch: make hg --profile wrap reposetup Move profiling.maybeprofile() from _runcommand to _dispatch() so that profiler output will include reposetup.
Thu, 22 Sep 2016 12:19:48 -0700 dispatch: change indentation level in _dispatch()
Arun Kulshreshtha <kulshrax@fb.com> [Thu, 22 Sep 2016 12:19:48 -0700] rev 30009
dispatch: change indentation level in _dispatch() Add an if True: placeholder for a profiling context manager that will be added in the next commit, for the purpose of reducing size of the diff due to trivial indentation changes. This change should be a no-op.
Thu, 22 Sep 2016 20:59:24 +0900 log: drop outdated optimization to walk revisions in reverse order
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 20:59:24 +0900] rev 30008
log: drop outdated optimization to walk revisions in reverse order Since revset is computed lazily, there would be no (or little) benefit to reverse 'revs' temporarily.
Thu, 22 Sep 2016 20:53:53 +0900 graphlog: preserve topo sort even if additional filter options specified
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 20:53:53 +0900] rev 30007
graphlog: preserve topo sort even if additional filter options specified Use ordered=revset.followorder instead. This change is logically the same as fa5e4f58dfbc.
Thu, 22 Sep 2016 21:52:00 +0900 transaction: open a file with checkambig=True to avoid file stat ambiguity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:52:00 +0900] rev 30006
transaction: open a file with checkambig=True to avoid file stat ambiguity Before this patch, if steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to revlog-style file (and close transaction) 2. discard appended data by truncation of rollback 3. append same size but different data to revlog-style file again Therefore, cache validation doesn't work after (3) as expected. To avoid file stat ambiguity around truncation, this patch opens a file with checkambig=True. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:52:00 +0900 repair: open a file with checkambig=True to avoid file stat ambiguity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:52:00 +0900] rev 30005
repair: open a file with checkambig=True to avoid file stat ambiguity Before this patch, if steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to revlog-style file (and close transaction) 2. discard appended data by truncation of strip 3. append same size but different data to revlog-style file again Therefore, cache validation doesn't work after (3) as expected. To avoid such file stat ambiguity around truncation, this patch opens a file with checkambig=True. This patch also introduces "with" statement style, to ensure immediate invocation of close() after truncation, because closing file is the only trigger to check (and get rid of) file stat ambiguity. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:59 +0900 changelog: specify checkambig=True to revlog.__init__, to avoid ambiguity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:59 +0900] rev 30004
changelog: specify checkambig=True to revlog.__init__, to avoid ambiguity If steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to 00changelog.i (and close transaction) 2. discard appended data by truncation (strip or rollback) 3. append same size but different data to 00changelog.i again Therefore, cache validation doesn't work after (3) as expected. To avoid such file stat ambiguity around truncation, this patch specifies checkambig=True to revlog.__init__(). This makes revlog write changes out with checkambig=True. Even though changes of 00changelog.i themselves are written out at changelog._finalize(), this checkambig=True is needed, because revlog.checkinlinesize(), which is invoked at the end of changelog._finalize(), might replace already changed 00changelog.i by converted one. Even after this patch, avoiding file stat ambiguity of 00changelog.i around truncation isn't yet completed, because truncation side isn't aware of this issue. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:59 +0900 changelog: specify checkambig=True to avoid ambiguity around truncation
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:59 +0900] rev 30003
changelog: specify checkambig=True to avoid ambiguity around truncation If steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to 00changelog.i (and close transaction) 2. discard appended data by truncation (strip or rollback) 3. append same size but different data to 00changelog.i again Therefore, cache validation doesn't work after (3) as expected. To avoid such file stat ambiguity around truncation, this patch specifies checkambig=True for renaming or opening to write changes out at finalization. Even after this patch, avoiding file stat ambiguity of 00changelog.i around truncation isn't yet completed, because truncation side isn't aware of this issue. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:58 +0900 manifest: specify checkambig=True to revlog.__init__, to avoid ambiguity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:58 +0900] rev 30002
manifest: specify checkambig=True to revlog.__init__, to avoid ambiguity If steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to 00manifest.i (and close transaction) 2. discard appended data by truncation (strip or rollback) 3. append same size but different data to 00manifest.i again Therefore, cache validation doesn't work after (3) as expected. To avoid such file stat ambiguity around truncation, this patch specifies checkambig=True to revlog.__init__(). This makes revlog write changes out with checkambig=True. Even after this patch, avoiding file stat ambiguity of 00manifest.i around truncation isn't yet completed, because truncation side isn't aware of this issue. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:58 +0900 revlog: specify checkambig at writing to avoid file stat ambiguity
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:58 +0900] rev 30001
revlog: specify checkambig at writing to avoid file stat ambiguity This allows revlog-style files to be written out with checkambig=True easily. Because avoiding file stat ambiguity is needed only for filecache-ed manifest and changelog, this patch does: - use False for default value of checkambig - focus only on writing changes of index file out This patch also adds optional argument checkambig to _divert/_delay for changelog, to safely accept checkambig specified in revlog layer. But this argument can be fully ignored, because: - changes are written into other than index file, if name != target - changes are never written into index file, otherwise (into pending file by _divert, or into in-memory buffer by _delay) This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:57 +0900 vfs: use checkambigatclosing in checkambig=True but atomictemp=False case
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:57 +0900] rev 30000
vfs: use checkambigatclosing in checkambig=True but atomictemp=False case In Mercurial source tree, opening a file in "a"/"a+" mode like below doesn't specify atomictemp=True for vfs, and this avoids file stat ambiguity check by atomictempfile. - writing changes out in revlog layer uses "a+" mode - truncation in repair.strip() uses "a" mode - truncation in transaction._playback() uses "a" mode If steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to revlog-style file (and close transaction) 2. discard appended data by truncation (strip or rollback) 3. append same size but different data to revlog-style file again Therefore, cache validation doesn't work after (3) as expected. This patch uses checkambigatclosing in checkambig=True but atomictemp=False case, to check (and get rid of) file stat ambiguity at closing. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan
Thu, 22 Sep 2016 21:51:57 +0900 scmutil: add file object wrapper class to check ambiguity at closing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:57 +0900] rev 29999
scmutil: add file object wrapper class to check ambiguity at closing In Mercurial source tree, opening a file in "a"/"a+" mode like below doesn't specify atomictemp=True for vfs, and this avoids file stat ambiguity check by atomictempfile. - writing changes out in revlog layer uses "a+" mode - truncation in repair.strip() uses "a" mode - truncation in transaction._playback() uses "a" mode If steps below occurs at "the same time in sec", all of mtime, ctime and size are same between (1) and (3). 1. append data to revlog-style file (and close transaction) 2. discard appended data by truncation (strip or rollback) 3. append same size but different data to revlog-style file again Therefore, cache validation doesn't work after (3) as expected. This patch adds file object wrapper class checkambigatclosing to check (and get rid of) ambiguity at closing. It is used by vfs in subsequent patch. This is a part of ExactCacheValidationPlan. https://www.mercurial-scm.org/wiki/ExactCacheValidationPlan BTW, checkambigatclosing is tested in test-filecache.py, even though it doesn't use filecache itself, because filecache assumes that file stat ambiguity never occurs (and there is no another test-*.py related to filecache).
Thu, 22 Sep 2016 21:51:56 +0900 scmutil: factor out common logic of delayclosedfile to reuse it
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 22 Sep 2016 21:51:56 +0900] rev 29998
scmutil: factor out common logic of delayclosedfile to reuse it This is a preparation for the subsequent patch, which adds another proxy class for a file object.
Thu, 22 Sep 2016 13:20:06 +0800 spartan: remove unused templates
Anton Shestakov <av6@dwimlabs.net> [Thu, 22 Sep 2016 13:20:06 +0800] rev 29997
spartan: remove unused templates
Thu, 22 Sep 2016 13:19:44 +0800 monoblue: remove unused templates
Anton Shestakov <av6@dwimlabs.net> [Thu, 22 Sep 2016 13:19:44 +0800] rev 29996
monoblue: remove unused templates
Thu, 22 Sep 2016 13:19:25 +0800 gitweb: remove unused templates
Anton Shestakov <av6@dwimlabs.net> [Thu, 22 Sep 2016 13:19:25 +0800] rev 29995
gitweb: remove unused templates
Thu, 22 Sep 2016 13:18:59 +0800 paper: remove unused templates
Anton Shestakov <av6@dwimlabs.net> [Thu, 22 Sep 2016 13:18:59 +0800] rev 29994
paper: remove unused templates
Wed, 21 Sep 2016 17:05:27 -0400 help: add sections for revsets
timeless <timeless@mozdev.org> [Wed, 21 Sep 2016 17:05:27 -0400] rev 29993
help: add sections for revsets
Wed, 21 Sep 2016 17:23:05 +0000 help: move revsets.## documentation into infix section
timeless <timeless@mozdev.org> [Wed, 21 Sep 2016 17:23:05 +0000] rev 29992
help: move revsets.## documentation into infix section
Wed, 21 Sep 2016 16:33:37 +0000 help: clarify quotes are needed for filesets.size expressions
timeless <timeless@mozdev.org> [Wed, 21 Sep 2016 16:33:37 +0000] rev 29991
help: clarify quotes are needed for filesets.size expressions
Wed, 21 Sep 2016 20:43:41 +0800 paper: remove unused template "changelogchild"
Anton Shestakov <av6@dwimlabs.net> [Wed, 21 Sep 2016 20:43:41 +0800] rev 29990
paper: remove unused template "changelogchild"
Wed, 21 Sep 2016 20:43:10 +0800 monoblue: remove unused template "changelogchild"
Anton Shestakov <av6@dwimlabs.net> [Wed, 21 Sep 2016 20:43:10 +0800] rev 29989
monoblue: remove unused template "changelogchild"
Wed, 21 Sep 2016 20:35:46 +0800 gitweb: remove unused template "changelogchild"
Anton Shestakov <av6@dwimlabs.net> [Wed, 21 Sep 2016 20:35:46 +0800] rev 29988
gitweb: remove unused template "changelogchild"
Wed, 21 Sep 2016 20:19:35 +0800 monoblue: tweak branch table's last row's cell colspan on summary page
Anton Shestakov <av6@dwimlabs.net> [Wed, 21 Sep 2016 20:19:35 +0800] rev 29987
monoblue: tweak branch table's last row's cell colspan on summary page This table only has 3 columns, so max sensible colspan is 3.
Wed, 21 Sep 2016 19:52:48 +0800 gitweb: tweak branch table's last row's cell colspan on summary page
Anton Shestakov <av6@dwimlabs.net> [Wed, 21 Sep 2016 19:52:48 +0800] rev 29986
gitweb: tweak branch table's last row's cell colspan on summary page This table only has 3 columns, so max sensible colspan is 3.
Wed, 21 Sep 2016 03:39:37 +0000 tests: clarify demandimport disabled state
timeless <timeless@mozdev.org> [Wed, 21 Sep 2016 03:39:37 +0000] rev 29985
tests: clarify demandimport disabled state
Wed, 21 Sep 2016 02:46:59 +0000 demandimport: add trailing comma
timeless <timeless@mozdev.org> [Wed, 21 Sep 2016 02:46:59 +0000] rev 29984
demandimport: add trailing comma
Tue, 20 Sep 2016 23:49:20 +0000 tests: favor single quotes for wrapping hg help ...
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:49:20 +0000] rev 29983
tests: favor single quotes for wrapping hg help ...
Tue, 20 Sep 2016 23:49:00 +0000 samplehgrcs: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:49:00 +0000] rev 29982
samplehgrcs: use single quotes in use warning
Tue, 20 Sep 2016 23:48:30 +0000 util: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:48:30 +0000] rev 29981
util: use single quotes in use warning
Tue, 20 Sep 2016 23:48:19 +0000 obsolete: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:48:19 +0000] rev 29980
obsolete: use single quotes in use warning
Tue, 20 Sep 2016 23:48:08 +0000 localrepo: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:48:08 +0000] rev 29979
localrepo: use single quotes in use warning
Tue, 20 Sep 2016 23:47:46 +0000 help: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:47:46 +0000] rev 29978
help: use single quotes in use warning
Tue, 20 Sep 2016 23:47:30 +0000 discovery: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:47:30 +0000] rev 29977
discovery: use single quotes in use warning
Tue, 20 Sep 2016 23:47:02 +0000 serve: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:47:02 +0000] rev 29976
serve: use single quotes in use warning
Tue, 20 Sep 2016 23:46:15 +0000 bundle: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:46:15 +0000] rev 29975
bundle: use single quotes in use warning
Tue, 20 Sep 2016 23:45:25 +0000 histedit: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:45:25 +0000] rev 29974
histedit: use single quotes in use warning
Tue, 20 Sep 2016 23:45:15 +0000 keyword: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:45:15 +0000] rev 29973
keyword: use single quotes in use warning
Tue, 20 Sep 2016 23:44:59 +0000 mq: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:44:59 +0000] rev 29972
mq: use single quotes in use warning
Tue, 20 Sep 2016 23:44:49 +0000 pager: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:44:49 +0000] rev 29971
pager: use single quotes in use warning
Tue, 20 Sep 2016 23:44:28 +0000 rebase: use single quotes in use warning
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 23:44:28 +0000] rev 29970
rebase: use single quotes in use warning
Tue, 20 Sep 2016 20:12:38 +0000 push: update help hint to point to config.paths section
timeless <timeless@mozdev.org> [Tue, 20 Sep 2016 20:12:38 +0000] rev 29969
push: update help hint to point to config.paths section
Fri, 02 Sep 2016 21:49:33 +0000 update: use single quotes in use warning
timeless <timeless@mozdev.org> [Fri, 02 Sep 2016 21:49:33 +0000] rev 29968
update: use single quotes in use warning
Fri, 02 Sep 2016 21:46:00 +0000 remove: specify hg in added warning
timeless <timeless@mozdev.org> [Fri, 02 Sep 2016 21:46:00 +0000] rev 29967
remove: specify hg in added warning
Tue, 20 Sep 2016 12:24:01 -0700 manifest: add manifestlog.add
Durham Goode <durham@fb.com> [Tue, 20 Sep 2016 12:24:01 -0700] rev 29966
manifest: add manifestlog.add This adds a simple add() function to manifestlog. This lets us convert more uses of repo.manifest to use repo.manifestlog, so we can further break our dependency on the manifest class.
Tue, 20 Sep 2016 12:24:01 -0700 manifest: move manifest.add onto manifestrevlog
Durham Goode <durham@fb.com> [Tue, 20 Sep 2016 12:24:01 -0700] rev 29965
manifest: move manifest.add onto manifestrevlog This moves add and _addtree onto manifestrevlog. manifestrevlog is responsible for all serialization decisions, so therefore the add function should live on it. This will allow us to call add() from manifestlog, which lets us further break our dependency on manifest.
(0) -30000 -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 tip