Thu, 20 Dec 2012 11:40:04 -0800 inotify: on Python < 2.6, socket.error lacks errno
Bryan O'Sullivan <bryano@fb.com> [Thu, 20 Dec 2012 11:40:04 -0800] rev 18107
inotify: on Python < 2.6, socket.error lacks errno
Tue, 18 Dec 2012 01:51:08 +0100 hidden: invalidate hiddenrevs when needed
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 18 Dec 2012 01:51:08 +0100] rev 18106
hidden: invalidate hiddenrevs when needed The `hiddenrevs` cache is volatile too (It use content from `obscache`). When unsure it is invalidated when necessary. In a near future, the cache will probably be moved to `revsfiltercache`
Tue, 18 Dec 2012 02:04:37 +0100 cache: group obscache and revsfiltercache invalidation in a single function
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 18 Dec 2012 02:04:37 +0100] rev 18105
cache: group obscache and revsfiltercache invalidation in a single function Both caches are very volatile and needs invalidation on the same kind of event. revsfiltercache actually depends on the content of revsfiltercache.
Mon, 17 Dec 2012 17:27:12 +0100 clfilter: use filtering in `visibleheads`
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 17 Dec 2012 17:27:12 +0100] rev 18104
clfilter: use filtering in `visibleheads` This is the second real use of changelog filtering. The change is very small to allow testing the new filter with a setup close to the original one. We replace custom post processing on `heads`function by call to the standard code pass on a filtering repo. In later coming will have wider usage of filtering that will make the dedicated function useless.
Mon, 17 Dec 2012 17:42:34 +0100 clfilter: use filtering in `visiblebranchmap`
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 17 Dec 2012 17:42:34 +0100] rev 18103
clfilter: use filtering in `visiblebranchmap` Here is the first real use of changelog filtering. The change is very small to allow testing the new filter with a setup close to the original one. We replace custom post processing on branchmap function by call to the standard code pass on a filtering repo. In later coming will have wider usage of filtering that will make the dedicated function useless.
Mon, 17 Dec 2012 17:12:02 +0100 clfilter: introduce a "unserver" filtering mode
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 17 Dec 2012 17:12:02 +0100] rev 18102
clfilter: introduce a "unserver" filtering mode This mode is for repository used as a server. It filter secret and hidden changeset out. It is put to use in later changeset.
Thu, 20 Dec 2012 17:14:07 +0100 clfilter: add a cache on repo for set of revision to filter for a given set.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 20 Dec 2012 17:14:07 +0100] rev 18101
clfilter: add a cache on repo for set of revision to filter for a given set. Recomputing the filtered revisions at every access to changelog is far too expensive. This changeset introduce a cache for this information. This cache is hold by the repository (unfiltered repository) and invalidated when necessary. This cache is not a protected attribute (leading _) because some logic that invalidate it is not held by the local repo itself.
Thu, 20 Dec 2012 15:32:42 +0100 clfilter: add actual repo filtering mechanism
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 20 Dec 2012 15:32:42 +0100] rev 18100
clfilter: add actual repo filtering mechanism We add a `filtered` method on repo. This method return an instance of `repoview` that behaves exactly as the original repository but with a filtered changelog attribute. Filters are identified by a "name". Planned filter are `unserved`, `hidden` and `mutable`. Filtering the repository in place what out of question as it wont not allows multiple thread to share the same repo. It would makes control of the filtering scope harder too. See the `repoview` docstring for details. A mechanism to compute filtered revision is also installed. Some caches will be installed in later commit.
Wed, 19 Dec 2012 16:56:26 -0800 inotify: pacify pestiferous pyflakes precipitously
Bryan O'Sullivan <bos@serpentine.com> [Wed, 19 Dec 2012 16:56:26 -0800] rev 18099
inotify: pacify pestiferous pyflakes precipitously
Wed, 19 Dec 2012 10:45:40 -0800 tests: make test-inotify-issue1208.t disappear
Bryan O'Sullivan <bryano@fb.com> [Wed, 19 Dec 2012 10:45:40 -0800] rev 18098
tests: make test-inotify-issue1208.t disappear
Tue, 18 Dec 2012 17:15:13 -0800 posix: move server side of unix domain sockets out of inotify
Bryan O'Sullivan <bryano@fb.com> [Tue, 18 Dec 2012 17:15:13 -0800] rev 18097
posix: move server side of unix domain sockets out of inotify We also turn the unix domain socket into a class, so that we have a sensible place to hang its logically related attributes and behaviour. We'll shortly want to reuse this in other code.
Tue, 18 Dec 2012 17:33:32 -0800 inotify: don't fall over just because of a dangling symlink
Bryan O'Sullivan <bryano@fb.com> [Tue, 18 Dec 2012 17:33:32 -0800] rev 18096
inotify: don't fall over just because of a dangling symlink Previously, the inotify server failed to start if .hg/inotify.sock was a symlink that pointed to a non-existent path. This behaviour does not seem to make any sense. Now, if we encounter a broken symlink, we unlink it and continue.
Wed, 19 Dec 2012 10:40:34 -0800 test-inotify: test symlink indirection for unix sockets
Bryan O'Sullivan <bryano@fb.com> [Wed, 19 Dec 2012 10:40:34 -0800] rev 18095
test-inotify: test symlink indirection for unix sockets The inotify code performs a delicate dance to work around the 108-byte limit on unix domain socket path names on Linux. This change sets us up to safely refactor that code without breaking it. (It is redundant with part of test-inotify-issue1208.t, but we will shortly make that test go away.)
Wed, 19 Dec 2012 10:02:43 +0100 test-pathencode: compare current pathencoding implementations
Adrian Buehlmann <adrian@cadifra.com> [Wed, 19 Dec 2012 10:02:43 +0100] rev 18094
test-pathencode: compare current pathencoding implementations We already have two implementations of the pathencoding (C and Python) and this test can perfectly well be used to probabilistically test them instead of just wasting CPU cycles and test time.
Mon, 17 Dec 2012 20:51:21 -0800 rebase: use lazy ancestor membership testing
Siddharth Agarwal <sid0@fb.com> [Mon, 17 Dec 2012 20:51:21 -0800] rev 18093
rebase: use lazy ancestor membership testing For a repository with over 400,000 commits, rebasing one revision near tip, this avoids one walk up the DAG, speeding the operation up by around 0.8 seconds.
Mon, 17 Dec 2012 20:43:37 -0800 localrepo: use lazy ancestor membership testing
Siddharth Agarwal <sid0@fb.com> [Mon, 17 Dec 2012 20:43:37 -0800] rev 18092
localrepo: use lazy ancestor membership testing For a repository with over 400,000 commits, rebasing one revision near tip, this avoids two treks up the DAG, speeding the operation up by around 1.6 seconds.
Tue, 18 Dec 2012 12:47:20 -0800 ancestor: add lazy membership testing to lazyancestors
Siddharth Agarwal <sid0@fb.com> [Tue, 18 Dec 2012 12:47:20 -0800] rev 18091
ancestor: add lazy membership testing to lazyancestors This also makes the perfancestorset command use lazy membership testing. In a linear repository with over 400,000 commits, without this patch, hg perfancestorset takes 0.80 seconds no matter how far behind we're looking. With this patch, hg perfancestorset -- X takes: Rev X Time -1 0.00s -4000 0.01s -20000 0.04s -80000 0.17s -200000 0.43s -300000 0.69s 0 0.88s Thus, for revisions close to tip, we're up to several orders of magnitude faster. At 0 we're around 10% slower.
Tue, 18 Dec 2012 10:14:01 -0800 revlog: move ancestor generation out to a new class
Siddharth Agarwal <sid0@fb.com> [Tue, 18 Dec 2012 10:14:01 -0800] rev 18090
revlog: move ancestor generation out to a new class This refactoring is to prepare for implementing lazy membership.
Mon, 17 Dec 2012 15:57:02 -0800 ignore: process hgignore files in deterministic order
Bryan O'Sullivan <bryano@fb.com> [Mon, 17 Dec 2012 15:57:02 -0800] rev 18089
ignore: process hgignore files in deterministic order Previously, we processed them in whatever order the dict iterator gave us.
Mon, 17 Dec 2012 15:52:44 -0800 ignore: only read an ignore file once
Bryan O'Sullivan <bryano@fb.com> [Mon, 17 Dec 2012 15:52:44 -0800] rev 18088
ignore: only read an ignore file once
Mon, 17 Dec 2012 16:23:37 -0800 ignore: refactor ignore into two functions
Bryan O'Sullivan <bryano@fb.com> [Mon, 17 Dec 2012 16:23:37 -0800] rev 18087
ignore: refactor ignore into two functions This prepares us for eventually being able to hash the list of patterns in use.
Mon, 10 Dec 2012 18:12:41 +0100 clfilter: fix `nodemap` usage in `getbundle`
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 10 Dec 2012 18:12:41 +0100] rev 18086
clfilter: fix `nodemap` usage in `getbundle` With the current implementation, `changelog.nodemap` is not filtered. So some filtered changeset in common are not filtered by `n in nodemap`. This leads to crash lower in the stack when the bundle generation try to access those node on a filtered changelog.
Mon, 17 Dec 2012 17:00:24 +0100 test: fix truncated comment in test
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 17 Dec 2012 17:00:24 +0100] rev 18085
test: fix truncated comment in test The push is made to ensure repository are related. The comment in the initial changeset got truncated somehow.
Mon, 17 Dec 2012 18:09:41 +0100 clfilter: ensure context raise RepoLookupError when the revision is filtered
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 17 Dec 2012 18:09:41 +0100] rev 18084
clfilter: ensure context raise RepoLookupError when the revision is filtered Currently the code path of `changectx(filteredrepo, rev)` call `filteredrepo.changelog.node(rev)`. When `rev` is filtered this raise an unhandled `IndexError`. This case now raise a `RepoLookupError` as other error case do.
Mon, 17 Dec 2012 15:08:37 -0800 revlog: remove incancestors since it is no longer used
Siddharth Agarwal <sid0@fb.com> [Mon, 17 Dec 2012 15:08:37 -0800] rev 18083
revlog: remove incancestors since it is no longer used
Mon, 17 Dec 2012 15:08:06 -0800 transplant: replace incancestors uses with ancestors
Siddharth Agarwal <sid0@fb.com> [Mon, 17 Dec 2012 15:08:06 -0800] rev 18082
transplant: replace incancestors uses with ancestors
Mon, 17 Dec 2012 15:13:51 -0800 revlog.ancestors: add support for including revs
Siddharth Agarwal <sid0@fb.com> [Mon, 17 Dec 2012 15:13:51 -0800] rev 18081
revlog.ancestors: add support for including revs This is in preparation for an upcoming refactoring. This also fixes a bug in incancestors, where if an element of revs was an ancestor of another it would be generated twice.
Fri, 14 Dec 2012 10:23:18 -0800 perf: add command to test performance of membership in ancestor set
Siddharth Agarwal <sid0@fb.com> [Fri, 14 Dec 2012 10:23:18 -0800] rev 18080
perf: add command to test performance of membership in ancestor set The new command, perfancestorset, takes an argument denoting which revset to test the membership of. Currently this runs through all the ancestors and converts them into a set. The primary purpose of having this is to compare this approach, currently used in several places, against the upcoming lazy approach.
Tue, 11 Dec 2012 14:47:33 -0800 ancestor: move missingancestors doctest out into a separate file
Siddharth Agarwal <sid0@fb.com> [Tue, 11 Dec 2012 14:47:33 -0800] rev 18079
ancestor: move missingancestors doctest out into a separate file This is in preparation for upcoming patches which will reuse the same graph for tests.
Sun, 16 Dec 2012 23:02:54 -0600 merge with crew-stable
Kevin Bullock <kbullock@ringworld.org> [Sun, 16 Dec 2012 23:02:54 -0600] rev 18078
merge with crew-stable
Thu, 29 Nov 2012 08:44:54 -0500 dirstate: remove obsolete comment from setbranch stable
Tim Henigan <tim.henigan@gmail.com> [Thu, 29 Nov 2012 08:44:54 -0500] rev 18077
dirstate: remove obsolete comment from setbranch This comment should have been removed in b74361cf7c0a, when the call to scmutil.checknewlabel was removed.
Sat, 15 Dec 2012 20:19:07 +0200 dirstate: don't rename branch file if writing it failed stable
Idan Kamara <idankk86@gmail.com> [Sat, 15 Dec 2012 20:19:07 +0200] rev 18076
dirstate: don't rename branch file if writing it failed
Sun, 16 Dec 2012 22:00:38 -0600 commands: 'hg bookmark NAME' should work even with ui.strict=True
Kevin Bullock <kbullock@ringworld.org> [Sun, 16 Dec 2012 22:00:38 -0600] rev 18075
commands: 'hg bookmark NAME' should work even with ui.strict=True Before this patch, enabling strict command processing (ui.strict=True) meant that 'hg bookmark NAME', as referenced several places in the documentation, would not work. This adds 'bookmark' as an explicit alias to 'bookmarks'.
Sun, 16 Dec 2012 19:41:56 +0100 tests: improve test-mv-cp-st-diff.t readability
Mads Kiilerich <mads@kiilerich.com> [Sun, 16 Dec 2012 19:41:56 +0100] rev 18074
tests: improve test-mv-cp-st-diff.t readability
Sat, 10 Nov 2012 02:19:20 +0100 obsolete: refuse to push divergent changeset
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 10 Nov 2012 02:19:20 +0100] rev 18073
obsolete: refuse to push divergent changeset As other troubles `unstable` and `bumped`. Followup patches may simplify the push code with unification of "obsolescence troubles" handling.
Wed, 12 Dec 2012 03:20:49 +0100 obsolete: add a divergent method on context
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 12 Dec 2012 03:20:49 +0100] rev 18072
obsolete: add a divergent method on context The same we have `unstable` and `bumped`. Convenient method to access troubles information in general may land later. This get actual use and testing in the next changesets.
Wed, 12 Dec 2012 03:12:55 +0100 obsolete: add revset and test for divergent changesets
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 12 Dec 2012 03:12:55 +0100] rev 18071
obsolete: add revset and test for divergent changesets This changesets add a new `divergent()` revset similar to `unstable()` and `bumped()` one. Introducting this revset allows actuall test of the divergent detection.
Wed, 12 Dec 2012 03:19:30 +0100 obsolete: detect divergent changesets
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 12 Dec 2012 03:19:30 +0100] rev 18070
obsolete: detect divergent changesets Divergent changeset are final successors (non obsolete) of a changeset who compete with another set of final successors for this same changeset. For example if you have two obsolescence markers A -> B and A -> C, B and C are both "divergent" because they compete to be the one true successors of A. Public revision can't be divergent. This function is used and tested in the next changeset.
Sat, 10 Nov 2012 01:56:59 +0100 obsolete: drop successors sets which are subset of another one
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 10 Nov 2012 01:56:59 +0100] rev 18069
obsolete: drop successors sets which are subset of another one If both "(B,)" and "(B, C)" are successors set of "A", "(B,)" is dropped. We won't be interrested in detection such divergence scenario.
Thu, 13 Dec 2012 15:38:43 +0100 obsolete: compute successors set
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 13 Dec 2012 15:38:43 +0100] rev 18068
obsolete: compute successors set Successors set are an important part of obsolescence. It is necessary to detect and solve divergence situation. This changeset add a core function to compute them, a debug command to audit them and solid test on the concept. Check function docstring for details about the concept.
Sun, 09 Dec 2012 00:25:21 +0100 mq: don't fail when removing a patch without patch file from series file
Mads Kiilerich <mads@kiilerich.com> [Sun, 09 Dec 2012 00:25:21 +0100] rev 18067
mq: don't fail when removing a patch without patch file from series file
Thu, 13 Dec 2012 19:19:06 +0100 largefiles: align rm warnings with warnings used in core
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 19:19:06 +0100] rev 18066
largefiles: align rm warnings with warnings used in core
Thu, 13 Dec 2012 21:34:55 +0100 merge with stable
Mads Kiilerich <madski@unity3d.com> [Thu, 13 Dec 2012 21:34:55 +0100] rev 18065
merge with stable
Mon, 10 Dec 2012 14:58:42 +0100 largefiles: commit directories that only contain largefiles (issue3548) stable
Levi Bard <levi@unity3d.com> [Mon, 10 Dec 2012 14:58:42 +0100] rev 18064
largefiles: commit directories that only contain largefiles (issue3548) If we pass a directory to commit whose only commitable files are largefiles, the core commit code aborts before finding the largefiles. So we do the following: For directories that only have largefiles as matches, we explicitly add the largefiles to the matchlist and remove the directory. In other cases, we leave the match list unmodified.
Fri, 07 Dec 2012 10:37:43 -0800 revset.children: ignore rev numbers that are too low
Siddharth Agarwal <sid0@fb.com> [Fri, 07 Dec 2012 10:37:43 -0800] rev 18063
revset.children: ignore rev numbers that are too low This replaces unnecessary parentrevs() calls with calculating min(parentset). Even though the min operation is O(size of parentset), since parentrevs is relatively expensive, this tradeoff almost always works in our favour. In a repository with over 400,000 changesets, hg perfrevset "children(X)" takes: Set X Before After -1 0.51s 0.06s -1000: 0.55s 0.08s -10000: 0.56s 0.10s -100000: 0.60s 0.25s -100000:-99000 0.55s 0.19s 0:100000 0.60s 0.61s all() 0.72s 0.74s The relative performance is similar for Mercurial's own repository -- several times faster in most cases, slightly slower for revisions close to 0 and all().
Thu, 06 Dec 2012 11:21:11 -0800 perf: add a command to measure revset performance
Siddharth Agarwal <sid0@fb.com> [Thu, 06 Dec 2012 11:21:11 -0800] rev 18062
perf: add a command to measure revset performance
Wed, 12 Dec 2012 15:17:18 -0800 run-tests: fix whitespace nonsense
Bryan O'Sullivan <bos@serpentine.com> [Wed, 12 Dec 2012 15:17:18 -0800] rev 18061
run-tests: fix whitespace nonsense
Wed, 12 Dec 2012 15:12:28 -0800 merge with mpm
Bryan O'Sullivan <bos@serpentine.com> [Wed, 12 Dec 2012 15:12:28 -0800] rev 18060
merge with mpm
Wed, 12 Dec 2012 14:52:58 -0800 run-tests: on windows, put correct python at front of PATH
Bryan O'Sullivan <bryano@fb.com> [Wed, 12 Dec 2012 14:52:58 -0800] rev 18059
run-tests: on windows, put correct python at front of PATH The older approach of trying to copy the python executable into the test directory was doomed to fail. There remains one weakness with this approach: if you've run "make local", tests may pick up the wrong extension DLLs from inside the source tree. I don't know why this happens. A reasonable workaround for now is to test either using --local or with a working directory that does not contain built DLLs.
Tue, 11 Dec 2012 15:38:42 -0800 run-tests: fix exename on Windows
Siddharth Agarwal <sid0@fb.com> [Tue, 11 Dec 2012 15:38:42 -0800] rev 18058
run-tests: fix exename on Windows
Tue, 11 Dec 2012 15:13:23 -0800 run-tests: support running tests in parallel on windows
Bryan O'Sullivan <bryano@fb.com> [Tue, 11 Dec 2012 15:13:23 -0800] rev 18057
run-tests: support running tests in parallel on windows Previously, we used os.spawnvp, which doesn't exist on Windows, and isn't needed anyway (the command line begins with an absolute path). We also need a slightly more convoluted way to wait for processes without specifying an order on Windows, as it lacks os.wait.
Tue, 11 Dec 2012 13:44:00 -0800 makefile: allow local builds to work on windows/mingw32
Bryan O'Sullivan <bryano@fb.com> [Tue, 11 Dec 2012 13:44:00 -0800] rev 18056
makefile: allow local builds to work on windows/mingw32
Sun, 09 Dec 2012 23:33:16 +0100 check-code: make 'missing whitespace in assignment' more aggressive
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Dec 2012 23:33:16 +0100] rev 18055
check-code: make 'missing whitespace in assignment' more aggressive New warnings: > a.b=ab missing whitespace in assignment (the pattern did not accept '.' on the left hand side) > a=a missing whitespace in assignment (the right hand side pattern never matched a single character) > a=a + 7 missing whitespace in assignment (the pattern only matched one character after the identifier following =)
Sun, 09 Dec 2012 23:33:16 +0100 check-code: there must also be whitespace between ')' and operator
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Dec 2012 23:33:16 +0100] rev 18054
check-code: there must also be whitespace between ')' and operator The check pattern only checked for whitespace between keyword and operator. Now it also warns: > x = f(),7 missing whitespace after , > x = f()+7 missing whitespace in expression
Sun, 09 Dec 2012 23:33:16 +0100 rm: drop misleading 'use -f' hint for the rm --after 'not removing' warning
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Dec 2012 23:33:16 +0100] rev 18053
rm: drop misleading 'use -f' hint for the rm --after 'not removing' warning A warning mentioning 'forgetting' or 'recording delete' would be more correct than 'not removing' but also more confusing.
Sun, 09 Dec 2012 23:33:16 +0100 contrib: state explicitly how hgtest.vim can be installed
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Dec 2012 23:33:16 +0100] rev 18052
contrib: state explicitly how hgtest.vim can be installed
Sun, 09 Dec 2012 23:33:16 +0100 tests: kill daemons early, making breaking at "Accept" prompt safe
Mads Kiilerich <madski@unity3d.com> [Sun, 09 Dec 2012 23:33:16 +0100] rev 18051
tests: kill daemons early, making breaking at "Accept" prompt safe
Mon, 10 Dec 2012 12:14:55 -0800 run-tests: use correct python safely under --jobs
Bryan O'Sullivan <bryano@fb.com> [Mon, 10 Dec 2012 12:14:55 -0800] rev 18050
run-tests: use correct python safely under --jobs
Mon, 10 Dec 2012 12:09:02 -0800 run-tests: check for the correct python when starting
Bryan O'Sullivan <bryano@fb.com> [Mon, 10 Dec 2012 12:09:02 -0800] rev 18049
run-tests: check for the correct python when starting
Mon, 10 Dec 2012 12:07:42 -0800 run-tests: use correct python when run with --local
Bryan O'Sullivan <bryano@fb.com> [Mon, 10 Dec 2012 12:07:42 -0800] rev 18048
run-tests: use correct python when run with --local
(0) -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 +10000 +30000 tip