Mon, 24 Dec 2012 13:26:13 +0100 bookmarks: fix head selection for merge with two bookmarked heads stable
Mads Kiilerich <mads@kiilerich.com> [Mon, 24 Dec 2012 13:26:13 +0100] rev 18122
bookmarks: fix head selection for merge with two bookmarked heads A type mismatch caused the search for the other head to fail. The code is fragile, and instead it ended up using the 'first' bookmark head, but the ordering is undefined and it could thus randomly use the wrong bookmarkhead and fail with: $ hg up -q -C e@diverged $ hg merge abort: merging with a working directory ancestor has no effect
Thu, 20 Dec 2012 14:45:17 +0100 branchmap: extract updatebranchcache from repo
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 20 Dec 2012 14:45:17 +0100] rev 18121
branchmap: extract updatebranchcache from repo
Wed, 19 Dec 2012 14:49:06 +0100 branchmap: extract _updatebranchcache from repo
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 19 Dec 2012 14:49:06 +0100] rev 18120
branchmap: extract _updatebranchcache from repo
Wed, 19 Dec 2012 14:47:38 +0100 branchmap: _updatebranchmap does not need to be filtered
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 19 Dec 2012 14:47:38 +0100] rev 18119
branchmap: _updatebranchmap does not need to be filtered The `_updatebranchmap` method on repo does not need to be filtered as all callers are already handling filtering themself. The fact it is filtered may had even lead to buggy behaviors, but by chances the method make very sparse use of the repo object.
Wed, 19 Dec 2012 14:46:57 +0100 branchmap: extract read logic from repo
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 19 Dec 2012 14:46:57 +0100] rev 18118
branchmap: extract read logic from repo
Thu, 20 Dec 2012 13:37:37 +0100 branchmap: extract write logic from localrepo
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 20 Dec 2012 13:37:37 +0100] rev 18117
branchmap: extract write logic from localrepo
Wed, 19 Dec 2012 14:43:33 +0100 branchmap: create a mercurial.branchmap module
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 19 Dec 2012 14:43:33 +0100] rev 18116
branchmap: create a mercurial.branchmap module This is the foundation stone for an extraction of branches map logic from local repository class. Most of the branches map logic have very few caller and therefor does not fit in the current criteria for code held by the localrepo class. Important change will be made to this code in relation with revision filtering. So we extract it in a dedicated module before adding additional complexity. Follow up commit do the actual code movement.
Thu, 20 Dec 2012 12:17:44 +0100 bundlerepo: use _cacheabletip mechanism in bundlerepo
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 20 Dec 2012 12:17:44 +0100] rev 18115
bundlerepo: use _cacheabletip mechanism in bundlerepo Instead of preventing any cache write we allow writing cache for all content of the original repo. The motivation for this change is to drop the custom _writebranchcache of bundlerepo to help extraction of the branchmap logic out of localrepo.
Thu, 20 Dec 2012 13:23:29 +0100 branchmap: merge _branchtags into updatebranchcache
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 20 Dec 2012 13:23:29 +0100] rev 18114
branchmap: merge _branchtags into updatebranchcache Now that nobody overwrite it, there is no reasons for `_branchtags` to remains separated from `updatebranchcache`.
Wed, 19 Dec 2012 17:39:49 +0100 branchmap: factorise access to changelog in updatebranchcache
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 19 Dec 2012 17:39:49 +0100] rev 18113
branchmap: factorise access to changelog in updatebranchcache This prepares merge of `updatebranchcache` and `_branchtags`.
Thu, 20 Dec 2012 11:52:50 +0100 branchmap: simplify _branchtags using a new _cacheabletip method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 20 Dec 2012 11:52:50 +0100] rev 18112
branchmap: simplify _branchtags using a new _cacheabletip method The current _branchtags method is a remnant of an older, much larger function. Its only remaining role is to help MQ to alter the version of branchcache we store on disk. As MQ mutates the repository it ensures persistent cache does not contain anything it is likely to alter. This changeset makes explicit the stable vs volatile part of repository and reduces the MQ specific code to the computation of this limit. The main _branchtags code now handles this possible limit in all cases. This will help to extract the branchmap logic from the repository. The new code of _branchtags is a bit duplicated, but as I expect major refactoring of this section I'm not keen to setup factorisation function here.
Thu, 20 Dec 2012 21:26:30 +0100 hook: disable demandimport before importing hooks
Dirkjan Ochtman <dirkjan@ochtman.nl> [Thu, 20 Dec 2012 21:26:30 +0100] rev 18111
hook: disable demandimport before importing hooks This solved an obscure bug for me. In upgrading Distribute on the server, a patch was added to has a try: import a except ImportError thing that's only supposed to work with Python 3.3. I'm using 2.7. My hook failed with an ImportError because of this. It seems kind of sensible to turn off demandimport before importing the hook, since the except ImportError pattern is used quite a bit in Python code (including in other Distribute code).
Thu, 20 Dec 2012 15:18:41 +0100 test-pathencode: accept --seed parameter in hex as well
Adrian Buehlmann <adrian@cadifra.com> [Thu, 20 Dec 2012 15:18:41 +0100] rev 18110
test-pathencode: accept --seed parameter in hex as well test-pathencode.py outputs the seed value in hex if it finds a deviation. This change allows to specify the seed value as a command line parameter for test-pathencode.py in hex as well.
Thu, 13 Dec 2012 23:37:53 +0100 subrepo: append subrepo path to subrepo error messages
Angel Ezquerra <angel.ezquerra@gmail.com> [Thu, 13 Dec 2012 23:37:53 +0100] rev 18109
subrepo: append subrepo path to subrepo error messages This change appends the subrepo path to subrepo errors. That is, when there is an error performing an operation a subrepo, rather than displaying a message such as: pushing subrepo MYSUBREPO to PATH searching for changes abort: push creates new remote head HEADHASH! hint: did you forget to merge? use push -f to force mercurial will show: pushing subrepo MYSUBREPO to PATH searching for changes abort: push creates new remote head HEADHASH! (in subrepo MYSUBREPO) hint: did you forget to merge? use push -f to force The rationale for this change is that the current error messages make it hard for TortoiseHg (and similar tools) to tell the user which subrepo caused the push failure. The "(in subrepo MYSUBREPO)" message has been added to those subrepo methods were it made sense (by using a decorator). We avoid appending "(in subrepo XXX)" multiple times when subrepos are nexted by throwing a "SubrepoAbort" exception after the extra message is appended. The decorator will then "ignore" (i.e. just re-raise) the exception and never add the message again. A small drawback of this method is that part of the exception trace is lost when the exception is catched and re-raised by the annotatesubrepoerror decorator. Also, because the state() function already printed the subrepo path when it threw an error, that error has been changed to avoid duplicating the subrepo path in the error message. Note that I have also updated several subrepo related tests to reflect these changes.
Thu, 20 Dec 2012 13:49:31 -0600 tests: fix some slash-based Windows failures
Kevin Bullock <kbullock@ringworld.org> [Thu, 20 Dec 2012 13:49:31 -0600] rev 18108
tests: fix some slash-based Windows failures
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.
(0) -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 +30000 tip