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
Mon, 10 Dec 2012 11:18:03 -0800 synthrepo: do not crash if a list is empty
Bryan O'Sullivan <bryano@fb.com> [Mon, 10 Dec 2012 11:18:03 -0800] rev 18047
synthrepo: do not crash if a list is empty
Tue, 27 Nov 2012 22:24:02 +0100 hgwebdir: do not show RSS and Atom links for plain directories
Angel Ezquerra <angel.ezquerra@gmail.com> [Tue, 27 Nov 2012 22:24:02 +0100] rev 18046
hgwebdir: do not show RSS and Atom links for plain directories Up until now the templates that show RSS and Atom feeds on the "repository lists" (i.e. gitweb and monoblue) showed them for all entries, including regular folders. Clicking on those "folder RSS" links would result in an error page being shown. This patch hides those links for regular folders.
Tue, 04 Dec 2012 00:37:50 +0100 hgweb: add branches RSS and Atom feeds
Angel Ezquerra <angel.ezquerra@gmail.com> [Tue, 04 Dec 2012 00:37:50 +0100] rev 18045
hgweb: add branches RSS and Atom feeds There were no RSS nor Atom feeds for the branches page. Different hgweb templates linked to different feeds on their branches page (some linked to the tags feed, some to the log feed and some to the unexisting branches feed).
Fri, 07 Dec 2012 12:03:37 -0600 push: reunite comment with the line of code it describes
Kevin Bullock <kbullock@ringworld.org> [Fri, 07 Dec 2012 12:03:37 -0600] rev 18044
push: reunite comment with the line of code it describes
Fri, 07 Dec 2012 11:30:38 -0600 bookmarks: spelling correction in docstring
Kevin Bullock <kbullock@ringworld.org> [Fri, 07 Dec 2012 11:30:38 -0600] rev 18043
bookmarks: spelling correction in docstring
Thu, 06 Dec 2012 22:07:44 -0600 merge: fix mistake in moved _checkcollision call from 5881d5b7552f
Kevin Bullock <kbullock@ringworld.org> [Thu, 06 Dec 2012 22:07:44 -0600] rev 18042
merge: fix mistake in moved _checkcollision call from 5881d5b7552f
Thu, 06 Dec 2012 16:56:44 -0600 windows: correctly pass a mode to S_IFMT in statfiles
Matt Mackall <mpm@selenic.com> [Thu, 06 Dec 2012 16:56:44 -0600] rev 18041
windows: correctly pass a mode to S_IFMT in statfiles
Wed, 05 Dec 2012 14:33:15 -0800 strip: make query to get new bookmark target cheaper
Siddharth Agarwal <sid0@fb.com> [Wed, 05 Dec 2012 14:33:15 -0800] rev 18040
strip: make query to get new bookmark target cheaper The current query to get the new bookmark target for stripped revisions involves multiple walks up the DAG, and is really expensive, taking over 2.5 seconds on a repository with over 400,000 changesets even if just one changeset is being stripped. A slightly simplified version of the current query is max(heads(::<tostrip> - <tostrip>)) We make two observations here. 1. For any set s, max(heads(s)) == max(s). That is because revision numbers define a topological order, so that the element with the highest revision number in s will not have any children in s. 2. For any set s, max(::s - s) == max(parents(s) - s). In other words, the ancestor of s with the highest revision number not in s is a parent of one of the revs in s. Why? Because if it were an ancestor but not a parent of s, it would have a descendant that would be a parent of s. This descendant would have a higher revision number, leading to a contradiction. Combining these two observations, we rewrite the revset query as max(parents(<tostrip>) - <tostrip>) The time complexity is now linear in the number of changesets being stripped. For the above repository, the query now takes 0.1 seconds when one changeset is stripped. This speeds up operations that use repair.strip, like the rebase and strip commands.
Tue, 04 Dec 2012 12:54:18 -0800 graft: explicit current node tracking
David Schleimer <dschleimer@fb.com> [Tue, 04 Dec 2012 12:54:18 -0800] rev 18039
graft: explicit current node tracking This changes graft to explicitly track the progression of commits it makes, and updates it's idea of the current node based on it's last commit, rather than from the working copy parent. This should have no effect on the value of current since we were reading the working copy parent immediately after commiting to it. The motivation for this change is that a subsequent patch will break the current node and working copy relationship. Splitting this out into a separate patch will make that one more readible.
Tue, 04 Dec 2012 12:54:18 -0800 graft: move commit info building
David Schleimer <dschleimer@fb.com> [Tue, 04 Dec 2012 12:54:18 -0800] rev 18038
graft: move commit info building This moves the logic for generating the commit metadata ahead of the merge operation. The only purposae of this patch is to make subsequent patches easier to read, and there should be no behavior changes.
Thu, 06 Dec 2012 16:42:15 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 06 Dec 2012 16:42:15 -0600] rev 18037
merge with stable
Tue, 04 Dec 2012 12:54:18 -0800 merge: support calculating merge actions against non-working contexts
David Schleimer <dschleimer@fb.com> [Tue, 04 Dec 2012 12:54:18 -0800] rev 18036
merge: support calculating merge actions against non-working contexts This is not currently used. It is instead a pre-requisite to performing non-conflicting grafts in memory, which a subsequent patch will do.
Tue, 04 Dec 2012 12:54:18 -0800 merge: refactor action calculation into function
David Schleimer <dschleimer@fb.com> [Tue, 04 Dec 2012 12:54:18 -0800] rev 18035
merge: refactor action calculation into function This pulls the code used to calculate the changes that need to happen during merge.update() into a separate function. This is not useful on its own, but is instead preparatory to performing grafts in memory when there are no potential conflicts.
Mon, 03 Dec 2012 14:21:45 -0800 dirstate: inline more properties and methods in status
Siddharth Agarwal <sid0@fb.com> [Mon, 03 Dec 2012 14:21:45 -0800] rev 18034
dirstate: inline more properties and methods in status hg perfstatus -u on a working directory with 170,000 files, without this change: ! wall 1.839561 comb 1.830000 user 1.120000 sys 0.710000 (best of 6) With this change: ! wall 1.804222 comb 1.790000 user 1.140000 sys 0.650000 (best of 6) hg perfstatus on the same directory, without this change: ! wall 1.016609 comb 1.020000 user 0.670000 sys 0.350000 (best of 10) With this change: ! wall 0.985573 comb 0.980000 user 0.650000 sys 0.330000 (best of 10)
Mon, 03 Dec 2012 13:53:53 -0800 perf: add option to perfstatus to get the status of unknown files
Siddharth Agarwal <sid0@fb.com> [Mon, 03 Dec 2012 13:53:53 -0800] rev 18033
perf: add option to perfstatus to get the status of unknown files When status needs to look at unknown files (e.g. when running hg status), it needs to use a completely different algorithm than when it doesn't (e.g. when running hg diff).
Tue, 04 Dec 2012 10:29:18 -0800 dirstate: test normalize is truthy instead of using a no-op lambda
Siddharth Agarwal <sid0@fb.com> [Tue, 04 Dec 2012 10:29:18 -0800] rev 18032
dirstate: test normalize is truthy instead of using a no-op lambda hg perfstatus -u on a working directory with 170,000 files, without this change: ! wall 1.869404 comb 1.850000 user 1.170000 sys 0.680000 (best of 6) With this change: ! wall 1.839561 comb 1.830000 user 1.120000 sys 0.710000 (best of 6)
Tue, 04 Dec 2012 11:19:32 -0600 merge with stable
Kevin Bullock <kbullock@ringworld.org> [Tue, 04 Dec 2012 11:19:32 -0600] rev 18031
merge with stable
Thu, 06 Dec 2012 13:21:27 -0600 hgweb: avoid generator exhaustion with branches stable
Matt Mackall <mpm@selenic.com> [Thu, 06 Dec 2012 13:21:27 -0600] rev 18030
hgweb: avoid generator exhaustion with branches
Wed, 05 Dec 2012 15:38:18 -0600 hgweb: fix iterator reuse in atom feed generation stable
Matt Mackall <mpm@selenic.com> [Wed, 05 Dec 2012 15:38:18 -0600] rev 18029
hgweb: fix iterator reuse in atom feed generation
Tue, 04 Dec 2012 14:35:02 +0100 tests: don't hardcode errno==2 for ENOENT stable
Julien Cristau <julien.cristau@logilab.fr> [Tue, 04 Dec 2012 14:35:02 +0100] rev 18028
tests: don't hardcode errno==2 for ENOENT Hurd seems to set ENOENT to 2 + 2**30, unlike everyone else.
Mon, 03 Dec 2012 13:17:01 -0800 osutil: tab damage, how i hate thee
Bryan O'Sullivan <bryano@fb.com> [Mon, 03 Dec 2012 13:17:01 -0800] rev 18027
osutil: tab damage, how i hate thee
Mon, 03 Dec 2012 12:40:24 -0800 osutil: write a C implementation of statfiles for unix
Bryan O'Sullivan <bryano@fb.com> [Mon, 03 Dec 2012 12:40:24 -0800] rev 18026
osutil: write a C implementation of statfiles for unix This makes a big difference to performance. In a clean working directory containing 170,000 files, performance of "hg --time diff" improves from 2.38 seconds to 1.69.
Mon, 03 Dec 2012 19:37:36 -0200 merge with i18n stable
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 03 Dec 2012 19:37:36 -0200] rev 18025
merge with i18n
Fri, 30 Nov 2012 21:39:01 +0900 i18n-ja: synchronized with f94ead934067 stable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 30 Nov 2012 21:39:01 +0900] rev 18024
i18n-ja: synchronized with f94ead934067
Mon, 03 Dec 2012 14:03:57 -0600 Added signature for changeset 0c10cf819146 stable
Matt Mackall <mpm@selenic.com> [Mon, 03 Dec 2012 14:03:57 -0600] rev 18023
Added signature for changeset 0c10cf819146
Mon, 03 Dec 2012 14:03:52 -0600 Added tag 2.4.1 for changeset 0c10cf819146 stable
Matt Mackall <mpm@selenic.com> [Mon, 03 Dec 2012 14:03:52 -0600] rev 18022
Added tag 2.4.1 for changeset 0c10cf819146
Fri, 30 Nov 2012 17:40:11 -0800 osutil: fix tab damage
Bryan O'Sullivan <bryano@fb.com> [Fri, 30 Nov 2012 17:40:11 -0800] rev 18021
osutil: fix tab damage
Fri, 30 Nov 2012 15:56:09 -0800 Merge with crew
Bryan O'Sullivan <bryano@fb.com> [Fri, 30 Nov 2012 15:56:09 -0800] rev 18020
Merge with crew
Fri, 30 Nov 2012 15:55:09 -0800 osutil: factor out creation and init of listdir_stat
Bryan O'Sullivan <bryano@fb.com> [Fri, 30 Nov 2012 15:55:09 -0800] rev 18019
osutil: factor out creation and init of listdir_stat
Fri, 30 Nov 2012 15:55:08 -0800 dirstate: avoid use of zip on big lists
Bryan O'Sullivan <bryano@fb.com> [Fri, 30 Nov 2012 15:55:08 -0800] rev 18018
dirstate: avoid use of zip on big lists In a clean working directory containing 170,000 tracked files, this improves performance of "hg --time diff" from 1.69 seconds to 1.43. This idea is due to Siddharth Agarwal.
Fri, 30 Nov 2012 15:55:07 -0800 dirstate: move file type filtering to its source
Bryan O'Sullivan <bryano@fb.com> [Fri, 30 Nov 2012 15:55:07 -0800] rev 18017
dirstate: move file type filtering to its source This prepares us to move to a much faster statfiles implementation on Unix.
Fri, 30 Nov 2012 22:34:21 +0100 clfilter: rename `unfilteredmeth` to `unfilteredmethod`
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 30 Nov 2012 22:34:21 +0100] rev 18016
clfilter: rename `unfilteredmeth` to `unfilteredmethod` As originally intended.
Fri, 30 Nov 2012 21:47:04 +0100 clfilter: fix a false positive in the test-obsolete.t
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 30 Nov 2012 21:47:04 +0100] rev 18015
clfilter: fix a false positive in the test-obsolete.t We push between two repo which once filtered looks unrelated. Weakness in the current implementation allows this push to be done without -f. But later improvement with filtering will make this push fails for unrelatedness. However we want this push to fail for including bumped changeset. So we had a smaller push --force to make them related.
Mon, 08 Oct 2012 19:34:04 +0200 clfilter: ensure that filecache on localrepo is unfiltered
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 08 Oct 2012 19:34:04 +0200] rev 18014
clfilter: ensure that filecache on localrepo is unfiltered All filecache usage on repo is for logic that should be unfiltered. The caches should be common to all filtered instances, and computation must be done unfiltered. A dedicated storecache subclass is created for this purpose.
Mon, 08 Oct 2012 20:02:20 +0200 clfilter: add a propertycache that must be unfiltered
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 08 Oct 2012 20:02:20 +0200] rev 18013
clfilter: add a propertycache that must be unfiltered Some of the localrepo property caches must be computed unfiltered and stored globally. Some others must see the filtered version and store data relative to the current filtering. This changeset introduces two classes `unfilteredpropertycache` and `filteredpropertycache` for this purpose. A new function `hasunfilteredcache` is introduced for unambiguous checking for cached values on unfiltered repos. A few tweaks are made to the property cache class to allow overriding the way the computed value is stored on the object. Some logic relative to _tagcaches is cleaned up in the process.
Mon, 08 Oct 2012 18:11:56 +0200 largefile: status is buggy on repoproxy, so run unfiltered
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 18:11:56 +0200] rev 18012
largefile: status is buggy on repoproxy, so run unfiltered For some yet-unkown reason, largefile status does not work on repoproxy. As status is not affected by filtering, we run it unfiltered. Na'Tosha Bard's view on this issue: "but, well, largefiles status is kind of an unholy piece of code"
Mon, 08 Oct 2012 20:01:40 +0200 clfilter: mq should not warn about filtered mq patches
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 20:01:40 +0200] rev 18011
clfilter: mq should not warn about filtered mq patches MQ warns when qstatus contains unknown nodes. With changelog filtering, a node may be unknown because it is filtered. Thus, an unfiltered repo is used for this check.
Mon, 08 Oct 2012 18:02:25 +0200 clfilter: ensure that mq performs commits on unfiltered repos
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 18:02:25 +0200] rev 18010
clfilter: ensure that mq performs commits on unfiltered repos
Mon, 08 Oct 2012 17:50:02 +0200 clfilter: use unfiltered repo for bookmark push logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:50:02 +0200] rev 18009
clfilter: use unfiltered repo for bookmark push logic The remote location of the bookmark may be filtered locally. This changeset ensures that bookmark movement logic has access to all the repo's content.
Mon, 08 Oct 2012 17:26:23 +0200 clfilter: `bookmark.validdest` should run on unfiltered repo
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:26:23 +0200] rev 18008
clfilter: `bookmark.validdest` should run on unfiltered repo The logic recently added to `bookmark.validdest` uses data about obsolete changesets to see if a bookmark destination is valid. Obsolete changesets are likely to be filtered, so we need to work on an unfiltered repository.
Mon, 08 Oct 2012 17:41:07 +0200 clfilter: unfilter some parts of the push logic
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:41:07 +0200] rev 18007
clfilter: unfilter some parts of the push logic Computation of common changesets during push needs to be done on the widest set possible. An unfiltered version of the repo is kept for discovery and various revset calls. The discovery code itself enforces the filtering of unserved outgoing changeset.
Fri, 30 Nov 2012 00:43:55 +0900 subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API) stable 2.4.1
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 30 Nov 2012 00:43:55 +0900] rev 18006
subrepo: add argument to "diff()" to pass "ui" of caller side (issue3712) (API) Color extension achieves colorization by overriding the class of "ui" object just before command execution. Before this patch, "diff()" of abstractsubrepo and classes derived from it has no "ui" argument, so "diff()" of hgsubrepo uses "self._repo.ui" to invoke "cmdutil.diffordiffstat()". For separation of configuration between repositories, revision 573bec4ab7ba changed the initialization source of "self._repo.ui" from "ui"(overridden) to "baseui"(plain) of parent repository. And this caused break of colorization. This patch adds "ui" argument to "diff()" of abstractsubrepo and classes derived from it to pass "ui" object of caller side.
Mon, 08 Oct 2012 17:15:08 +0200 clfilter: prevent unwanted warning about filtered parents as unknown
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:15:08 +0200] rev 18005
clfilter: prevent unwanted warning about filtered parents as unknown During changectx __init__ the dirstate's parents MAY be checked. If the repo is filtered, this check will complain "working directory has unknown parents" even if the parents are perfectly known. This may happen when the repo is used for serving and the dirstate has parents that are secret, as those secret changesets will be filtered.
Mon, 08 Oct 2012 17:12:09 +0200 clfilter: strip logic should be unfiltered
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:12:09 +0200] rev 18004
clfilter: strip logic should be unfiltered Strip is a "write" operation that needs to be aware of the whole repo's content before destroying changesets. Only the low level function is altered. The top level command will still process its argument filtered (if any filtering is in place).
Mon, 08 Oct 2012 17:08:52 +0200 clfilter: verify logic should be unfiltered
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 17:08:52 +0200] rev 18003
clfilter: verify logic should be unfiltered To verify a changelog obviously needs all of it. The verify logic now ensures it works on an unfiltered repository.
Wed, 21 Nov 2012 00:53:45 +0100 clfilter: phases logic should be unfiltered
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 21 Nov 2012 00:53:45 +0100] rev 18002
clfilter: phases logic should be unfiltered Phase computations and boundary movements need to be aware of all revisions that exist in the repository to return correct results.
Mon, 08 Oct 2012 16:55:00 +0200 clfilter: unfilter computation of obsolescence related computation
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 08 Oct 2012 16:55:00 +0200] rev 18001
clfilter: unfilter computation of obsolescence related computation All obsolescence related sets need to be computed on the full unfiltered version of the repository, in particular because several of them (obsolete, extinct) are used to compute the hidden revisions. On a filtered repo, revset predicates related to these sets will be properly filtered because of revset's own pre-filtering.
Mon, 26 Nov 2012 19:24:11 +0100 clfilter: ensure changeset creation in the repo is run unfiltered
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:24:11 +0100] rev 18000
clfilter: ensure changeset creation in the repo is run unfiltered This applies to both creation of new commits and application of changegroups.
Mon, 26 Nov 2012 19:23:25 +0100 clfilter: ensure changegroup generation is run unfiltered
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:23:25 +0100] rev 17999
clfilter: ensure changegroup generation is run unfiltered Changegroup generation logic needs to be aware of the whole repository to work properly.
Mon, 26 Nov 2012 19:21:24 +0100 clfilter: ensure `rollback` is run unfiltered
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:21:24 +0100] rev 17998
clfilter: ensure `rollback` is run unfiltered Rollback logic needs to be aware of the whole repository to work properly.
Mon, 26 Nov 2012 19:22:12 +0100 clfilter: ensure cache invalidation is done on the main unfiltered repo
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:22:12 +0100] rev 17997
clfilter: ensure cache invalidation is done on the main unfiltered repo The proxy version will not hold any cache for now. But we have to ensure all cache operations are done on the unfiltered version.
Mon, 26 Nov 2012 19:26:24 +0100 clfilter: ensure that tag logic runs unfiltered
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:26:24 +0100] rev 17996
clfilter: ensure that tag logic runs unfiltered The current tag logic is not aware of filtering. We keep the status quo, ensuring that the tag cache is computed as before: without any filtering.
Mon, 26 Nov 2012 19:25:44 +0100 clfilter: ensure `branchcache` logic runs unfiltered
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:25:44 +0100] rev 17995
clfilter: ensure `branchcache` logic runs unfiltered The current branchcache construction is not aware of filtering. We keep the status quo, ensuring that the branch cache logic is computed as before: without any filtering.
Mon, 26 Nov 2012 19:11:13 +0100 clfilter: introduce an `unfilteredmethod` decorator
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 26 Nov 2012 19:11:13 +0100] rev 17994
clfilter: introduce an `unfilteredmethod` decorator This decorator ensure the method in run on an unfiltered version of the repository. See follow-up commit for details. This decorator is not named `unfiltered` because it would clash with the `unfilteredmethod` on `localrepo` itself.
Wed, 21 Nov 2012 00:36:29 +0100 clfilter: introduce an "unfiltered" method on localrepo
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 21 Nov 2012 00:36:29 +0100] rev 17993
clfilter: introduce an "unfiltered" method on localrepo This commit is part of the changelog level filtering effort. It returns the main "unfiltered" version of a repo-like object. For localrepo this means the same localrepo object. But this method will be overwritten by the filtered versions of a repository to return the core unfiltered version of the repo. Introducing this simple method first allows later commits to prepare for the use of a filtered version of a repository. A new repo method is added because a lot of users may call it. At the end of this series of commits, about 40 calls exist in core and hgext.
Tue, 20 Nov 2012 19:05:46 +0100 clfilter: remove usage of `range` and `xrange` in scmutil.revrange
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 20 Nov 2012 19:05:46 +0100] rev 17992
clfilter: remove usage of `range` and `xrange` in scmutil.revrange For changelog level filtering to take effect it need to be used for any iteration. This changeset removes usage of `range` and `xrange` that survived the first pass.
Mon, 12 Nov 2012 14:05:39 -0800 hgweb: display diff for a changeset against any parents (issue2810)
Weiwen <weiwen@fb.com> [Mon, 12 Nov 2012 14:05:39 -0800] rev 17991
hgweb: display diff for a changeset against any parents (issue2810) During merge of branches, it is useful to compare merge results against the two parents. This change adds this support to hgweb. To specify which parent to compare to, use rev/12300:12345 where 12300 is a parent changeset number. Two links are added to changeset web page so that one can choose which parent to compare to.
Thu, 29 Nov 2012 08:49:21 -0500 branch: add missing repo argument to checknewlabel
Tim Henigan <tim.henigan@gmail.com> [Thu, 29 Nov 2012 08:49:21 -0500] rev 17990
branch: add missing repo argument to checknewlabel scmutil.checknewlabel takes a repo object as its first argument. When the call to this function was added in e689b0d91546, the first argument was mistakenly set to 'None'.
Thu, 29 Nov 2012 11:44:22 -0600 Merge with stable.
Augie Fackler <raf@durin42.com> [Thu, 29 Nov 2012 11:44:22 -0600] rev 17989
Merge with stable.
Thu, 29 Nov 2012 16:37:15 +0100 rebase: fix pull --rev options clashing with --rebase (issue3619) stable
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 29 Nov 2012 16:37:15 +0100] rev 17988
rebase: fix pull --rev options clashing with --rebase (issue3619) Rebase also have a plain `--rev` option used to select the rebase set (as `--base` or `--source` would). But the content of the --rev option was intended for the remote repo and is irrelevant for the local rebase operation. We expect `hg pull --rebase` to stick with the default behavior here: hg rebase --base . --dest tip(branch(.)) The `rev` option is dropped from the option passed to rebase.
Thu, 29 Nov 2012 08:44:54 -0500 dirstate: remove obsolete comment from setbranch
Tim Henigan <tim.henigan@gmail.com> [Thu, 29 Nov 2012 08:44:54 -0500] rev 17987
dirstate: remove obsolete comment from setbranch This comment should have been removed in e689b0d91546, when the call to scmutil.checknewlabel was removed.
Wed, 28 Nov 2012 18:08:51 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 28 Nov 2012 18:08:51 -0600] rev 17986
merge with stable
Wed, 28 Nov 2012 17:53:52 -0600 tests: fix broken fix of test-phases output stable
Matt Mackall <mpm@selenic.com> [Wed, 28 Nov 2012 17:53:52 -0600] rev 17985
tests: fix broken fix of test-phases output
Tue, 27 Nov 2012 08:47:35 -0500 update: allow update to existing branches with invalid names (issue3710) stable
Tim Henigan <tim.henigan@gmail.com> [Tue, 27 Nov 2012 08:47:35 -0500] rev 17984
update: allow update to existing branches with invalid names (issue3710) Starting with 361ab1e2086f, users are no longer able to update a working copy to a branch named with a "bad" character (such as ':'). Prior to v2.4, it was possible to create branch names using "bad" characters, so this breaks backwards compatibility. Mercurial must allow users to update to existing branches with bad names. However, it should continue to prevent the creation of new branches with bad names. A test was added to confirm that 'hg update' works as expected. The test uses a bundled repo that was created with an earlier version of Mercurial.
Mon, 19 Nov 2012 16:05:40 -0800 commit: increase perf by building a new addlist instead of editing the old one
Durham Goode <durham@fb.com> [Mon, 19 Nov 2012 16:05:40 -0800] rev 17983
commit: increase perf by building a new addlist instead of editing the old one When commiting to a repo with lots of files (>170000), manifest.py:addlistdelta takes some time because it's editing a large array many times. Changing it to build a new array instead of editing the old one saves around 0.04 seconds on a 1.64 second commit. A 2.5% gain. The gain here is pretty minor, but it was blatantly at the top of the profiler report and the fix is straight forward. I tested it by comparing the arrays produced by the new and old logic while running all of the tests.
Wed, 28 Nov 2012 14:55:42 -0800 template engine: convert generator-based iterator to list-based iterator
Weiwen <weiwen@fb.com> [Wed, 28 Nov 2012 14:55:42 -0800] rev 17982
template engine: convert generator-based iterator to list-based iterator If a template iterator is implemented with generator, the iterator is exhau= sted after we use it. This leads to undesired behavior in template. This chang= e converts a generator-based iterator to list-based iterator when template en= gine first detects a generator-based iterator. All future usages of iterator wi= ll use list instead.
Wed, 28 Nov 2012 11:20:56 +0100 command: remove phase from the list of basic command stable
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 28 Nov 2012 11:20:56 +0100] rev 17981
command: remove phase from the list of basic command This is not a basic command. There is no reason new user should needs to know about it. Thanks to Matt Mackall for pointing this.
Wed, 28 Nov 2012 16:15:05 -0600 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 28 Nov 2012 16:15:05 -0600] rev 17980
merge with stable
Sun, 25 Nov 2012 20:39:37 +0100 phases: fix missing "error" module import (issue3707) stable
André Sintzoff <andre.sintzoff@gmail.com> [Sun, 25 Nov 2012 20:39:37 +0100] rev 17979
phases: fix missing "error" module import (issue3707)
Thu, 08 Nov 2012 11:54:08 +0100 test-mq-qrefresh: test that the patch at qtip is indeed empty
Adrian Buehlmann <adrian@cadifra.com> [Thu, 08 Nov 2012 11:54:08 +0100] rev 17978
test-mq-qrefresh: test that the patch at qtip is indeed empty ...after qrefreshing a non-existent file
Mon, 26 Nov 2012 15:59:02 -0600 tests: only call check-code once
Matt Mackall <mpm@selenic.com> [Mon, 26 Nov 2012 15:59:02 -0600] rev 17977
tests: only call check-code once The accepted warnings list is now empty, let's try to keep it that way.
Wed, 28 Nov 2012 10:35:12 -0800 ancestor: fix a comment (followup to 0b03454abae7)
Siddharth Agarwal <sid0@fb.com> [Wed, 28 Nov 2012 10:35:12 -0800] rev 17976
ancestor: fix a comment (followup to 0b03454abae7)
Wed, 21 Nov 2012 00:42:05 +0100 revlog: allow reverse iteration with revlog.revs
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 21 Nov 2012 00:42:05 +0100] rev 17975
revlog: allow reverse iteration with revlog.revs We often need to perform rev iteration in reverse order. This changeset makes it possible to do so, in order to avoid costly reverse or reversed() calls later.
Sun, 18 Nov 2012 12:26:50 -1000 convert: add config option to use the local time zone
Julian Cowley <julian@lava.net> [Sun, 18 Nov 2012 12:26:50 -1000] rev 17974
convert: add config option to use the local time zone The default for the time zone offset in a converted changeset has always been 0 (UTC). With this patch, the converted changeset is modified so that the local offset from UTC is specified as the time zone offset. The option is specified as the boolean convert.localtimezone (default False). Example usage: hg convert -s cvs --config convert.localtimezone=True example-cvs example-hg IMPORTANT: the patch only applies to conversions from cvs or svn. The documentation for the option only appears in those two sections in the convert help text.
Tue, 27 Nov 2012 16:24:21 -0800 rebase: use revlog.findmissingrevs to compute detach set
Siddharth Agarwal <sid0@fb.com> [Tue, 27 Nov 2012 16:24:21 -0800] rev 17973
rebase: use revlog.findmissingrevs to compute detach set
Mon, 26 Nov 2012 10:48:24 -0800 revlog: add rev-specific variant of findmissing
Siddharth Agarwal <sid0@fb.com> [Mon, 26 Nov 2012 10:48:24 -0800] rev 17972
revlog: add rev-specific variant of findmissing This will be used by rebase in an upcoming commit.
Mon, 26 Nov 2012 11:02:48 -0800 revlog: switch findmissing to use ancestor.missingancestors
Siddharth Agarwal <sid0@fb.com> [Mon, 26 Nov 2012 11:02:48 -0800] rev 17971
revlog: switch findmissing to use ancestor.missingancestors This also speeds up other commands that use findmissing, like incoming and merge --preview. With a large linear repository (>400000 commits) and with one incoming changeset, incoming is sped up from around 4-4.5 seconds to under 3.
Mon, 26 Nov 2012 11:46:51 -0800 ancestor: faster algorithm for difference of ancestor sets
Siddharth Agarwal <sid0@fb.com> [Mon, 26 Nov 2012 11:46:51 -0800] rev 17970
ancestor: faster algorithm for difference of ancestor sets One of the major reasons rebase is slow in large repositories is the computation of the detach set: the set of ancestors of the changesets to rebase not in the destination parent. This is currently done via a revset that does two walks all the way to the root of the DAG. Instead of doing that, to find ancestors of a set <revs> not in another set <common> we walk up the tree in reverse revision number order, maintaining sets of nodes visited from <revs>, <common> or both. For the common case where the sets are close both topologically and in revision number (relative to repository size), this has been found to speed up rebase by around 15-20%. When the nodes are farther apart and the DAG is highly branching, it is harder to say which would win. Here's how long computing the detach set takes in a linear repository with over 400000 changesets, rebasing near tip: Rebasing across 4 changesets Revset method: 2.2s New algorithm: 0.00015s Rebasing across 250 changesets Revset method: 2.2s New algorithm: 0.00069s Rebasing across 10000 changesets Revset method: 2.4s New algorithm: 0.019s
Fri, 23 Nov 2012 11:59:44 -0500 bisect: add example for limiting bisection to specified directories
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Fri, 23 Nov 2012 11:59:44 -0500] rev 17969
bisect: add example for limiting bisection to specified directories The bisect command does not have an option to limit itself only to subdirectories, but it's possible to use revsets for the --skip option for the same effect. Given the relative obscurity of revsets, it helps to have this as another example for bisect.
(0) -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 +30000 tip