Mads Kiilerich <madski@unity3d.com> [Sun, 02 Mar 2014 18:30:41 +0100] rev 20638
largefiles: override calculateupdates instead of manifestmerge
That will give calculateupdates a purpose in life ... and be convenient later.
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:28:40 +0100] rev 20637
tests: add systematic test of merge ancestor calculation
There is probably some overlap with the existing tests - it is hard to figure
out what these tests are doing.
Mads Kiilerich <madski@unity3d.com> [Sun, 02 Mar 2014 18:25:19 +0100] rev 20636
tests: add test case for criss cross merge
The test do not fit in any existing test file...
Matt Mackall <mpm@selenic.com> [Mon, 03 Mar 2014 15:34:09 -0600] rev 20635
merge with stable
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 03 Mar 2014 12:54:46 -0800] rev 20634
revset: changed generatorset code to remove unnecesary function call
Removed _nextitem() method, now __iter__ has that logic and __contains__ uses
__iter__ to check for membership.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:45 +0900] rev 20633
phase: say "Returns 0" instead of "Return 0" like other command help
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:41 +0900] rev 20632
dirstate: remove double imports of errno
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:51 +0900] rev 20631
cmdserver: mask return code of runcommand in the same way as dispatch.run
"hg help" does not state that the code for abort is 255, but it's confusing
to have different code between hg command and command server.
Tests of python-hglib 1.2 passed with this change.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 15:50:48 +0900] rev 20630
cmdserver: include non-zero return code of runcommand in test output
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 19:41:30 +0900] rev 20629
cmdserver: recreate mq object on runcommand in case queue path was changed
repo.mq needs to be recreated after queue path change. Since there is little
benefit to keep invalidated mq object, it always delete repo.mq.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 19:41:26 +0900] rev 20628
cmdserver: reload mq on each runcommand request to avoid corruption
If mq was changed by another process, command server should invalidate caches.
Otherwise, mq status would go wrong.
Yuya Nishihara <yuya@tcha.org> [Mon, 03 Mar 2014 19:41:23 +0900] rev 20627
localrepo: add hook point to invalidate everything on each command-server run
MQ extension will wrap this function to invalidate its state.
repo.invalidate cannot be wrapped for this purpose because qpush obtains
repo.lock in the middle of the operation, triggering repo.invalidate. Also,
it seems wrong to obtain lock earlier because mq data is non-store parts.
anuraggoel <anurag.dsps@gmail.com> [Mon, 03 Mar 2014 23:37:59 +0530] rev 20626
paper: overlapping of section title on help pages (issue4051)
Now there will be no overlap lines between various section title
on help pages. http://selenic.com/repo/hg/help/config
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 20:08:41 -0600] rev 20625
contrib: drop tmplrewrite
Needed for the 1.3 transition in 2009, no longer relevant
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 19:51:22 -0600] rev 20624
extensions: mark win32text deprecated
Happened a long time ago.
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 19:44:14 -0600] rev 20623
extensions: remove interhg
Has been built-in for a few releases.
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 16:20:15 -0600] rev 20622
extensions: remove the inotify extension (BC)
This extension has always had correctness issues and has been
unmaintained for years. It is now removed in favor of the third-party
hgwatchman which is maintained and appears to be correct.
Users with inotify enabled in their config files will fall back to
standard status performance.
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 21:08:43 -0500] rev 20621
merge main and crew
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 21:08:28 -0500] rev 20620
merge with stable
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 09:30:23 -0500] rev 20619
merge with mpm
Augie Fackler <raf@durin42.com> [Sat, 01 Mar 2014 09:21:45 -0500] rev 20618
test-help.t: fix for non-Linux platforms
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 15:22:49 -0600] rev 20617
Added signature for changeset b96cb15ec9e0
Matt Mackall <mpm@selenic.com> [Sat, 01 Mar 2014 15:22:30 -0600] rev 20616
Added tag 2.9.1 for changeset b96cb15ec9e0
Mads Kiilerich <madski@unity3d.com> [Sat, 01 Mar 2014 18:09:39 +0100] rev 20615
merge: audit the right destination file when merging with dir rename
Augie Fackler <raf@durin42.com> [Mon, 03 Feb 2014 02:09:46 -0500] rev 20614
setup: specify --prefix="" for install-home-bin to avoid badness with defaults
Sometimes (I'm not sure when) setup.py gets a default value for
--prefix, which breaks --home. This fixes that for me.
Durham Goode <durham@fb.com> [Sat, 16 Nov 2013 08:57:08 -0800] rev 20613
revset: add 'only' revset
Adds a only() revset that has two forms:
only(<set>) is equivalent to "::<set> - ::(heads() - heads(<set>::))"
only(<include>,<exclude>) is equivalent to "::<include> - ::<exclude>"
On a large repo, this implementation can process/traverse 50,000 revs in 0.7
seconds, versus 4.2 seconds using "::<include> - ::<exclude>".
This is useful for performing histedits on your branch:
hg histedit -r 'first(only(.))'
Or lifting branch foo off of branch bar:
hg rebase -d @ -s 'only(foo, bar)'
Or a variety of other uses.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 17:42:08 -0800] rev 20612
revset: added basic operators to orderedlazyset
Now __and__ and __sub__ return orderedlazyset.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 09:28:41 -0800] rev 20611
revset: changed revset code to use filter method
Revset methods now use the filter code to apply a condition.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 17:18:11 -0800] rev 20610
revset: added filter method to revset classes
This method will replace the creation of lazysets inside the revset methods.
Instead, the classes that handle lazy structures will create them based on
their current order.
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Feb 2014 15:24:08 -0800] rev 20609
revset: added orderedlazyset class
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 23:17:37 -0600] rev 20608
config: make repo optional again
Olle Lundberg <geek@nerd.sh> [Fri, 28 Feb 2014 02:28:12 +0100] rev 20607
merge: fix spelling of length
Alexander Drozdov <al.drozdov@gmail.com> [Mon, 10 Feb 2014 07:13:10 +0400] rev 20606
ui: edit(): transplant: set HGREVISION environment variable for an editor
transplant command set 'transplant_source' extra for the revision.
Allow an editor to access the extra using HGREVISION environment variable.
This may be useful when an editor is actually a script which modifies a commit
message. Transplant filters is an alternative way to do it.
Alexander Drozdov <al.drozdov@gmail.com> [Thu, 06 Feb 2014 12:21:20 +0400] rev 20605
ui: edit(): rebase, graft: set HGREVISION environment variable for an editor
rebase and graft commands set 'rebase_source' or 'source' extras for the revision.
Allow an editor to access the extras using HGREVISION environment variable.
This may be useful when an editor is actually a script which modifies a commit
message.
The name 'HGREVISION' has been selected as transplant already sets this variable
for its filters (--filter).
Alexander Drozdov <al.drozdov@gmail.com> [Thu, 06 Feb 2014 10:15:20 +0400] rev 20604
cmdutil: make commitforceeditor() to pass revision extras to ui.edit()
Alexander Drozdov <al.drozdov@gmail.com> [Thu, 06 Feb 2014 11:38:28 +0400] rev 20603
ui: allow edit() to work with revision extras
Make edit() to accept optional 'extra' dictionary. Revision extras will be
used in upcoming patches to set some environment variables.
Simon Heimberg <simohe@besonet.ch> [Fri, 14 Feb 2014 00:36:44 +0100] rev 20602
tests: glob match has a glob character for not getting a warning on windows
When / matches on / on windows, and there is no other glob character, this
results in a warning. Avoid this by using an other glob character.
Simon Heimberg <simohe@besonet.ch> [Sun, 16 Feb 2014 23:41:24 +0100] rev 20601
run-tests: fixed warn detection on failures with too many output
The state "warned" was reported too often. The problem fixed here is that
warnonly was only reset when a line did not match. When there was a line too
much, warnonly remained set.
Fix this by setting more states to warnonly.
More negative testing (testing on result "Failed") has been done this time.
Simon Heimberg <simohe@besonet.ch> [Sun, 16 Feb 2014 23:36:02 +0100] rev 20600
run-tests: fixed warn detection on detecting warn only for lines
The state "warned" was reported too often. The main problem was that
"False == 0" is true in python. Therefore use an empty string instead of 0
for reporting warn only for a line.
The other problem is fixed in the next patch.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 27 Feb 2014 20:01:28 -0800] rev 20599
obsolete: extract encoding of marker for pushkey from the list key function
We now have a function taking a list and marker and returning an encoded
version. This will allow obsolescence marker exchange experimentation to easily
pushkey-encode markers to be pushed after selection.
Danek Duvall <danek.duvall@oracle.com> [Wed, 19 Feb 2014 13:46:49 -0800] rev 20598
solaris: diff -u emits "No differences encountered"
Solaris diff -u isn't silent when two files are identical, and tests that
don't account for that will fail. Fix those tests, and introduce a check
that prevents reintroduction.
Simon Heimberg <simohe@besonet.ch> [Fri, 14 Feb 2014 00:34:20 +0100] rev 20597
rebase: do not raise an UnboundLocalError when called wrong (issue4106)
When the base is not found, we should not raise a traceback about a not defined
variable. This hides the real problem: the function rebasenode was (probably)
called wrong.
An AssertionError is raised to highlight that the caller of the function did
something wrong.
An alternative approach is to only assign None to the variable "base" and let
the merge mechanism raise an abort message. This was the behaviour for this
case before ad9db007656f. But the only known case for this problem is when an
extension calls this function wrong. An AssertionError makes this clearer than
an abort message. When a different case is detected, the behaviour can be
improved then.
Siddharth Agarwal <sid0@fb.com> [Thu, 27 Feb 2014 19:56:36 -0800] rev 20596
exchange: fix docs for pulloperation
'remote' is actually the remote, not the repo one is pulling into. This
confused me quite a bit.
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 18:57:03 -0600] rev 20595
merge with stable
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 18:45:01 -0800] rev 20594
resolve: use "other" changeset from merge state (issue4163)
We can use the "other" data from the recorded merge state instead of inferring
what the other could be from working copy parent. This will allow resolve to
fulfil its duty even when the second parent have been dropped.
Most direct benefit is fixing a regression in backout.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 18:54:47 -0800] rev 20593
merge: add "other" file node in the merge state file
This data is mostly redundant with the "other" changeset node (+ other changeset
file path). However, more data never hurt.
The old format do not store it so this require some dancing to add and remove it
on demand.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 27 Feb 2014 14:14:57 -0800] rev 20592
merge: infer the "other" changeset when falling back to v1 format
When we have to fallback to the old version of the file, we infer the
"other" from current working directory parent. The same way it is currently done
in the resolve command. This is know to have shortcoming… but we cannot do
better from the data contained in the old file format. This is actually the
motivation to add this new file format.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 18:42:11 -0800] rev 20591
merge: record the "other" node in merge state
We need to record the merge we were merging with. This solve multiple
bug with resolve when dropping the second parent after a merge. This
happen a lot when doing special merge (overriding the ancestor).
Backout, shelve, rebase, etc. can takes advantage of it.
This changeset just add the information in the merge state. We'll use it in the
resolve process in a later changeset.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 18:37:06 -0800] rev 20590
merge: introduce new format for the state file
This new format will allow us to address common bugs while doing special merge
(graft, backout, rebase…) and record user choice during conflict resolution.
The format is open so we can add more record for future usage.
This file still store hexified version of node to help human willing to debug
it by hand. The overhead or oversize are not expected be an issue.
The old format is still used. It will be written to disk along side the newer
format. And at parse time we detect if the data from old version of the
mergestate are different from the one in the new version file. If its the same,
both have most likely be written at the same time and you can trust the extra
data from the new file. If it differs, the old file have been written by an
older version of mercurial that did not knew about the new file. In that case we
use the content of the old file.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 27 Feb 2014 12:59:41 -0800] rev 20589
merge: change the merge state serialisation to use a record based logic
The format of the file is unchanged. But we are preparing a new file with a new
format that would be record based. So we change all the read/write logic to
handle a list of record until a very low level. This will allow simple plugging
of the new format in the current code.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 17:14:49 -0800] rev 20588
merge: move merge state file path into a constant
We are about to change the format. Having the file path in a single place make
it easier to update the filename for the new version.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Feb 2014 09:18:16 -0800] rev 20587
revset: changed spanset __add__ implementation to work lazily
$ time hg log -qr "first(0:tip or draft())"
...
real 0m1.032s
user 0m0.841s
sys 0m0.179s
$ time ./hg log -qr "first(0:tip or draft())"
...
real 0m0.378s
user 0m0.291s
sys 0m0.085s
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Feb 2014 09:00:25 -0800] rev 20586
revset: changed lazyset __add__ implementation to work lazily
Performance Benchmarking:
$ time hg log -qr "first(author(mpm) or branch(default))"
0:9117c6561b0b
real 0m3.875s
user 0m3.818s
sys 0m0.051s
$ time ./hg log -qr "first(author(mpm) or branch(default))"
0:9117c6561b0b
real 0m0.213s
user 0m0.174s
sys 0m0.038s
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 10:32:54 -0800] rev 20585
obsstore: add a __len__ method
We can already use "for mark in store:" it make sense to allow
"len(store)" too.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Feb 2014 10:21:54 -0800] rev 20584
obsstore: `create` method return True if a marker is actually added
The obsstore method now have a return value. This informs caller about the
actual creation of a new markers. No new markers are created if it would have
been a duplicate.
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 15:31:44 -0600] rev 20583
merge with crew
Augie Fackler <raf@durin42.com> [Thu, 27 Feb 2014 15:39:07 -0500] rev 20582
help: exclude deprecated extensions in the disabled part of 'help extensions'
Augie Fackler <raf@durin42.com> [Thu, 27 Feb 2014 15:37:04 -0500] rev 20581
test-help.t: add test for 'hg help extensions'
This demonstrates the defect that deprecated extensions show up in the
output. A followup patch will fix this defect.
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 15:14:37 -0600] rev 20580
ui: fix extra space in username abort
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 14:58:44 -0600] rev 20579
tests: fix up config --edit breakage
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 14:48:36 -0600] rev 20578
merge with stable
anuraggoel <anurag.dsps@gmail.com> [Thu, 27 Feb 2014 22:56:42 +0530] rev 20577
coal: hgweb style adds extra blank line in file view (issue4136)
Now hgweb style='coal' adds no extra blank in file view.
Piotr Klecha <pklecha@forcom.com.pl> [Tue, 25 Feb 2014 21:26:25 +0100] rev 20576
pull: close peer repo on completion (issue2491) (issue2797)
When pulling changes from a compressed bundle Mercurial first uncompresses it
to a temporary file in .hg directory. This file will not be deleted unless
the bundlerepo (other) is explicitly closed.
This is similar to cleanup that occurs after incoming.
Paul Boddie <paul@boddie.org.uk> [Thu, 27 Feb 2014 00:24:06 +0100] rev 20575
hgweb: ensure isdirectory is None for repositories, replacing any True value
Until now, repositories did not provide any value for isdirectory in rows
produced for the index output, and thus isdirectory was generally evaluated as
None for each index entry representing a repository.
However, directories (visible when viewed with the descend and collapse
settings enabled) did provide a value of True and this value appeared to
persist in subsequent rows processed by the templater, causing isdirectory
tests in templates to produce incorrect results for index entries appearing
after directories.
This patch asserts the None value for repositories, thus erasing any such
persistent True values.
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 14:46:29 -0600] rev 20574
ui: suggest config --edit when no username is set
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 14:01:52 -0600] rev 20573
config: add example config file when -e called with no config
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 13:46:32 -0600] rev 20572
config: add initial implementation of --edit
This launches the preferred editor on either:
a) the first non-empty user rc file found
b) the first user rc file in the search list
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 26 Feb 2014 18:56:27 -0800] rev 20571
revert: extract actual revert in its own function
With this small refactoring, the computation of the action to perform and the
actual change to the disk happen in different function. This allows extension to
wrap the later in case of need. The initial motivation is the `remotefilelog`
extension that need to prefetch all the file content to be checked out.
Matt Mackall <mpm@selenic.com> [Thu, 27 Feb 2014 12:42:09 -0600] rev 20570
config: move showconfig code and add config as primary alias
Preparation for adding config --edit to launch an editor
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 26 Feb 2014 17:15:55 -0800] rev 20569
revset: added _hexlist method to replace _list for %ln
Now %ln expression goes through _hexlist and doesn't do any unnecesary
processing anymore.
Matt Mackall <mpm@selenic.com> [Wed, 26 Feb 2014 17:57:23 -0600] rev 20568
merge with stable
Olle Lundberg <geek@nerd.sh> [Thu, 27 Feb 2014 00:23:21 +0100] rev 20567
localrepo: language and spelling fixes in comment
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 26 Feb 2014 12:36:36 -0800] rev 20566
revset: added _intlist method to replace _list for %ld
Now %ld expression goes through _intlist and doesn't do any unnecesary
processing anymore.
anuraggoel <anurag.dsps@gmail.com> [Tue, 25 Feb 2014 06:30:21 +0530] rev 20565
purge: avoid duplicate output for --print (issue4092)
Now "hg purge -p" commands avoids printiing duplication of filenames.
Second patch is the test coverage of first patch which tells that '-p'
does not depend on whether ui.verbose is configured or not,that means it
is independent of '-v'.
Matt Mackall <mpm@selenic.com> [Mon, 24 Feb 2014 18:50:29 -0600] rev 20564
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 24 Feb 2014 18:49:09 -0600] rev 20563
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 24 Feb 2014 18:48:48 -0600] rev 20562
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 23 Feb 2014 18:03:47 +0900] rev 20561
i18n-ja: synchronized with 7b9d66c0e4fa
Wagner Bruna <wbruna@yahoo.com> [Sun, 16 Feb 2014 09:04:49 -0300] rev 20560
i18n-pt_BR: synchronized with 4e41b2fe46cc
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 24 Feb 2014 09:27:32 -0800] rev 20559
scmutil: changed revrange code not to use append
Removed one call to the append method
anuraggoel <anurag.dsps@gmail.com> [Tue, 25 Feb 2014 04:11:11 +0530] rev 20558
push: provide a hint when no paths in configured (issue3692)
When user type "hg push" command then this patch helps user by
providing hint if no default path is configured.
Second patch is the test coverage, to test the change behaviour of
first patch.
Mads Kiilerich <madski@unity3d.com> [Mon, 24 Feb 2014 22:42:14 +0100] rev 20557
revlog: introduce commonancestors method for getting all common ancestor heads
Mads Kiilerich <madski@unity3d.com> [Mon, 24 Feb 2014 22:42:14 +0100] rev 20556
localrepo: commit: avoid calling expensive ancestor function when p1 is nullrev
Mads Kiilerich <madski@unity3d.com> [Mon, 24 Feb 2014 22:42:13 +0100] rev 20555
ancestors: remove unnecessary handling of 'left'
If one of the initial nodes also is an ancestor then that most be the only
ancestor. There is no need for additional bookkeeping.
Mads Kiilerich <madski@unity3d.com> [Mon, 24 Feb 2014 22:42:13 +0100] rev 20554
parsers: remove unreachable and invalid code in index_ancestors
The function normally returns a list. Returning a single element instead of a
list with one element would be weird.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 13 Feb 2014 14:27:12 -0800] rev 20553
cmdutil: implemented new lazy increasingwindows
Now log can work in a lazy way and get results as soon as they are processed.
Performance Benchmarking:
$ time hg log -l1 -qr "branch(default)"
0:9117c6561b0b
real 0m2.303s
user 0m2.252s
sys 0m0.048s
$ time ./hg log -l1 -qr "branch(default)"
0:9117c6561b0b
real 0m0.238s
user 0m0.199s
sys 0m0.037s
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 20 Feb 2014 10:15:38 -0800] rev 20552
revset: added __nonzero__ method to lazyset
Now it doesn't have to go through all the set and can return lazily as soon as
it finds one element.
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Feb 2014 15:30:27 -0800] rev 20551
scmutil: changed revrange to return lazysets for new style revsets
When there is an old style revset or both it will still return a baseset. This
may be changed in later patches.
Mads Kiilerich <madski@unity3d.com> [Thu, 20 Feb 2014 02:43:17 +0100] rev 20550
phases: make order of debug output 'removing unknown node' deterministic
Mads Kiilerich <madski@unity3d.com> [Thu, 20 Feb 2014 02:39:01 +0100] rev 20549
comments: fix minor spelling issues found with spell checker
Mads Kiilerich <madski@unity3d.com> [Sat, 15 Feb 2014 01:23:12 +0100] rev 20548
hooks: for python hooks, consistently use __name__ etc as name, not the repr
There is no reason to expose unnecessary Python implementation details and
memory locations, also not in debug mode.
readablefunc was already creating a nice name - we move that functionality
up and reuse it.
We consider having a __call__ and being types.FunctionType sufficiently
similar and unify these two to just using the existing check for __call__.
Mads Kiilerich <madski@unity3d.com> [Sat, 15 Feb 2014 01:23:12 +0100] rev 20547
hooks: move logging of hook name to after we have found the hook
We do not expect the finding process to take a significant amount of time - it
is the execution time of the hook we care about.
Mads Kiilerich <madski@unity3d.com> [Thu, 20 Feb 2014 02:39:01 +0100] rev 20546
rebase: show nice list instead of set repr for 'computed skipped revs' debug
Mads Kiilerich <madski@unity3d.com> [Sat, 15 Feb 2014 01:23:12 +0100] rev 20545
rebase: fix 'rebase onto %d starting from %s' - show root instead of list repr
The debug statement is already in a 'for root in roots' so it was probably the
intention to show root instead of roots. Do that.
Mads Kiilerich <madski@unity3d.com> [Wed, 12 Feb 2014 23:44:30 +0100] rev 20544
log: describe graph symbols in the help
I wondered what 'x' meant and didn't find it described anywhere.
Mads Kiilerich <madski@unity3d.com> [Thu, 20 Feb 2014 02:38:41 +0100] rev 20543
tests: backout a82de9dc4f77, debugstacktrace is now stable, drop workaround
Mads Kiilerich <madski@unity3d.com> [Thu, 20 Feb 2014 02:38:36 +0100] rev 20542
util: debugstacktrace, flush before and after writing
Close another stream (default stdout, which often is buffered) before writing
to the primary stream (default stderr, which often is unbuffered). The primary
stream is also flushed after writing (in case it is buffered).
This fixes non-deterministic output order, especially on windows.
Siddharth Agarwal <sid0@fb.com> [Wed, 19 Feb 2014 21:32:14 -0800] rev 20541
run-tests.py: work when --with-hg is set to system hg
Previously we'd always assume that --with-hg is a script in a user directory,
and would write out a 'python' symlink to the same location. That didn't work
if --with-hg was set to a system installation of hg, e.g. /usr/bin/hg.
Introduce a TMPBINDIR directory which is used to write out the python symlink.
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Feb 2014 18:45:49 -0800] rev 20540
revset: added cached generated list on generatorset
This allows to iterate the generatorset more than once.
Sean Farley <sean.michael.farley@gmail.com> [Thu, 20 Feb 2014 00:46:13 -0600] rev 20539
templater: shorten pure integers
Originally, the addition of the 'shorten' template function in 9c6b86dd2ed2
would not consider pure integers for shortening. This patch considers two
simple cases: when the integer starts with zero (which is parsed by Mercurial
as a hash first) and when the integer is larger than the tip (obviously not a
rev).
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 21 Feb 2014 13:16:17 -0800] rev 20538
revset: fixed bug where log -f was taking too long to return
Matt Mackall <mpm@selenic.com> [Thu, 20 Feb 2014 16:12:27 -0600] rev 20537
merge with stable
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Feb 2014 15:23:11 -0800] rev 20536
revset: added generatorset class with cached __contains__ method
Danek Duvall <danek.duvall@oracle.com> [Wed, 19 Feb 2014 13:11:24 -0800] rev 20535
pathencode: eliminate signed integer warnings
Compiling mercurial with the Sun Studio compiler gives seven copies of the
following warning on pathencode.c:
line 533: warning: initializer will be sign-extended: -1
Using explicit unsigned literals silences it.
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 19 Feb 2014 12:56:41 -0800] rev 20534
revset: changed last implementation to use lazy classes
Instead of using getitem just reverse the revision list and get the first
'lim' elements. With classes like spanset which are easily reversible this
will work faster.
Performance Benchmarking:
$ time hg log -qr "last(all())"
...
real 0m0.569s
user 0m0.447s
sys 0m0.122s
$ time ./hg log -qr "last(all())"
...
real 0m0.215s
user 0m0.150s
sys 0m0.063s
Matt Mackall <mpm@selenic.com> [Wed, 19 Feb 2014 16:46:47 -0600] rev 20533
merge with stable
Simon Heimberg <simohe@besonet.ch> [Wed, 19 Feb 2014 13:25:28 +0100] rev 20532
help: remove last occurrences of ".. note::" without two newlines
When we add two newlines after ".. note::" translators will not see this
entry. And all versions of docutils interpret this paragraph correctly
(details in de16c673455b).
Durham Goode <durham@fb.com> [Tue, 18 Feb 2014 14:48:56 -0800] rev 20531
help: add ifcontains, revset, and shortest to template help
Adds help information to the template help doc. Mentions ifcontains, revset,
shortest, and current in bookmarks.
Yuya Nishihara <yuya@tcha.org> [Wed, 19 Feb 2014 22:19:45 +0900] rev 20530
verify: do not prevent verify repository containing hidden changesets
Since a959f7167077, repo.cancopy() cannot be used to check if the repo is
a bundlerepository.
repo.url() should always have "scheme:", so it isn't necessary to parse
by util.url().
Yuya Nishihara <yuya@tcha.org> [Wed, 19 Feb 2014 21:16:43 +0900] rev 20529
hgweb: make sure sys module is loaded prior to reload hack
If sys is still a demandmod, reload(sys) fails with "TypeError: reload()
argument must be module".
Kaz Nishimura <kazssym@vx68k.org> [Thu, 17 Oct 2013 13:27:17 +0900] rev 20528
win32: improve the performance of win32.unlink() over CIFS
Emulating POSIX unlink() behavior with os.rename() and os.unlink() is often slow
especially over CIFS from Windows clients due to its protocol overhead. This
patch changes win32.unlink() to try first an exclusive open with the Win32
delete-on-close flag, and if a sharing violation is detected, to fall back to
the original emulation.
This patch also removes a test with os.path.isdir() since we expect opening a
directory shall fail as os.unlink() would.
Example measurements (repeated 3-times after 1-time calibration):
(Without this patch: hg update from null to default)
127 files updated, 0 files merged, 0 files removed, 0 files unresolved
time: real 19.871 secs (user 0.328+0.000 sys 1.794+0.000)
time: real 19.622 secs (user 0.312+0.000 sys 2.044+0.000)
time: real 19.138 secs (user 0.250+0.000 sys 1.872+0.000)
(Without this patch: hg update from default to null)
0 files updated, 0 files merged, 127 files removed, 0 files unresolved
time: real 35.158 secs (user 0.156+0.000 sys 2.512+0.000)
time: real 35.272 secs (user 0.250+0.000 sys 2.512+0.000)
time: real 36.569 secs (user 0.203+0.000 sys 2.387+0.000)
(With this patch: hg update from null to default)
127 files updated, 0 files merged, 0 files removed, 0 files unresolved
time: real 17.893 secs (user 0.328+0.000 sys 1.700+0.000)
time: real 18.512 secs (user 0.265+0.000 sys 1.529+0.000)
time: real 20.238 secs (user 0.312+0.000 sys 1.685+0.000)
(With this patch: hg update from default to null)
0 files updated, 0 files merged, 127 files removed, 0 files unresolved
time: real 12.312 secs (user 0.250+0.000 sys 0.811+0.000)
time: real 12.471 secs (user 0.156+0.000 sys 0.889+0.000)
time: real 9.727 secs (user 0.125+0.000 sys 0.858+0.000)
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 18 Feb 2014 15:54:46 -0800] rev 20527
revset: changed mfunc and getset to work with old style revset methods
Now extensions shouldn't break when adding new revsets.
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 03 Feb 2014 10:15:15 -0800] rev 20526
revset: changed revsets to use spanset
Performance Benchmarking:
$ hg perfrevset "first(all())"
! wall 0.304936 comb 0.300000 user 0.280000 sys 0.020000 (best of 33)
$ ./hg perfrevset "first(all())"
! wall 0.175640 comb 0.180000 user 0.160000 sys 0.020000 (best of 56)
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 18 Feb 2014 11:38:03 -0800] rev 20525
revset: changed spanset to take a repo argument
This way, we can have by default the length of the repo as the end argument
and less code has to be aware of hidden revisions.
Matt Mackall <mpm@selenic.com> [Mon, 17 Feb 2014 14:49:56 -0600] rev 20524
journal: report parsing errors on recover/rollback (issue4172)
Yuya Nishihara <yuya@tcha.org> [Sat, 15 Feb 2014 16:19:19 +0900] rev 20523
rebase: do not try to reactivate deleted divergent bookmark
If the currently active bookmark is divergent one, it may be resolved during
rebase. Trying to activate it will raise "KeyError: 'W@diverge'".
Matt Mackall <mpm@selenic.com> [Sat, 15 Feb 2014 22:09:32 -0600] rev 20522
tests: backout 00f2d29308db pid check
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 10 Feb 2014 17:38:43 -0800] rev 20521
revset: changed spanset implementation to take hidden revisions into account
Hidden revisions are now excluded from the spanset.
Now this doesn't break for people using changeset evolution.
Durham Goode <durham@fb.com> [Tue, 11 Feb 2014 21:40:33 -0800] rev 20520
template: add 'current' to scope during {bookmarks % ...}
This adds the keyword 'current' to the template scope when processing a
bookmark list. The 'current' keyword resolves to the name of the currently
active bookmark in the repo. This allows us to apply special labels to the
current bookmark to distinguish it (especially in the case where there are
multiple bookmarks on the same commit).
Example: "{bookmarks % '{bookmark}{ifeq(bookmark, current, \"*\")} '}"
Results in a space separated list of bookmarks where the current bookmark has
an asterix.
Durham Goode <durham@fb.com> [Tue, 11 Feb 2014 21:04:12 -0800] rev 20519
template: add revset() template function
Adds a template function that executes a revset and returns the list of
revisions as the result. It has the signature 'revset(query [, args...])'. The
args are optional and are applied to the query string using the standard
python string.format(args) pattern. This allows things like:
'{revset("parents({0})", rev)}' to produce the parents of each individual
commit in the log output. If no args are specified, the revset result is
cached for the duration of the templater; so it's better to not use args if
performance is a concern.
By itself, revset() can be used to print commit parents, print the common
ancestor of a commit with the main branch, etc.
It can be used with the ifcontains() function to do things like
'{ifcontains(rev, revset('.'), label(...), ...)}' to color the working copy
parent, to color certain branches, to color draft commits, etc.