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.