FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 26 Jul 2012 13:58:43 +0900] rev 17258
revset: use appropriate predicate name in error messages
"extinct" and "unstable" predicates use "obsolete" implementation
internally, but own predicate name should be used in error messages of
them instead of "obsolete".
Adrian Buehlmann <adrian@cadifra.com> [Thu, 26 Jul 2012 23:08:34 +0200] rev 17257
test-histedit-fold: fix for Windows
Fixes 336121088ef1 failing with MSYS.
MSYS sh.exe mangled that path by applying its path magic, which caused the
test to fail on Windows.
Matt Mackall <mpm@selenic.com> [Thu, 26 Jul 2012 17:04:01 -0500] rev 17256
tags: visit new heads in forward order when rebuilding cache
This improves performance of building the tag cache by 4x on a repo
with ~2800 heads.
Patrick Mezard <patrick@mezard.eu> [Fri, 27 Jul 2012 13:56:19 +0200] rev 17255
identity: show trailing '+' for dirty subrepos (issue2839)
Patrick Mezard <patrick@mezard.eu> [Fri, 27 Jul 2012 10:16:20 +0200] rev 17254
discovery: fix invalid comment about extinct being ignored
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 26 Jul 2012 16:21:43 +0200] rev 17253
obsolete: fix decoding error message arguments
Patrick Mezard <patrick@mezard.eu> [Tue, 24 Jul 2012 21:20:56 +0200] rev 17252
push: do not try to push remote obsolete if local has none
Mads Kiilerich <mads@kiilerich.com> [Thu, 26 Jul 2012 02:54:13 +0200] rev 17251
help: fix some instances of 'the the'
Michael Bacarella <mbacarella@janestreet.com> [Fri, 06 Jul 2012 18:06:52 -0400] rev 17250
pager: work around bug in python 2.4's subprocess module (issue3533)
hg v2.2.2 fixed the pager on Windows, but broke it on Python 2.4.
This patch only uses the new behavior if Python >= 2.5 is detected.
Pierre-Yves.David@ens-lyon.org [Wed, 25 Jul 2012 19:02:35 +0200] rev 17249
clone: copy obsolete markers during local clone
This change adds `obsstore` to the list of files copied by local clone,
until now changesets were copied without their obsolete markers.
Note: extinct changesets were and are still included by such clones to
enable hardlinking. There is no obvious reason to prevent their exchange
here.
Rebased by Patrick Mezard <patrick@mezard.eu>
Patrick Mezard <patrick@mezard.eu> [Wed, 25 Jul 2012 19:34:31 +0200] rev 17248
discovery: add extinct changesets to outgoing.excluded
Before this change, push would incorrectly fast-path the bundle
generation when extinct changesets are involved, because they are not
added to outgoing.excluded. The reason to do so are related to
outgoing.excluded being assumed to contain only secret changesets by
scmutil.nochangesfound(), when displaying warnings like:
changes found (ignored 9 secret changesets)
Still, outgoing.excluded seems like a good API to report the extinct
changesets instead of dedicated code and nothing in the docstring
indicates it to be bound to secret changesets. This patch adds extinct
changesets to outgoing.excluded and fixes scmutil.nochangesfound() to
filter the excluded node list.
Original version and test by Pierre-Yves.David@ens-lyon.org
Patrick Mezard <patrick@mezard.eu> [Thu, 26 Jul 2012 12:07:55 +0200] rev 17247
convert/svn: handle non-local svn destination paths (issue3142)
test-convert-svn-sink.t still pass and I tested pushing to an svn+ssh
repository
Adrian Buehlmann <adrian@cadifra.com> [Wed, 25 Jul 2012 16:50:22 +0200] rev 17246
setup: fix build_hgexe for mingw32 compiler
Fixes
python setup.py build_hgexe -i --compiler=mingw32
Matt Harbison <matt_harbison@yahoo.com> [Sun, 22 Jul 2012 23:37:53 -0400] rev 17245
largefiles: fix path handling for cp/mv (issue3516)
Previously, a copy or a move of a largefile only worked if the cwd was the root
of the repository. The first issue was that the destination path passed to
os.mkdirs() chopped the absolute path to the standin after '.hglf/', which
essentially created a path relative to the repository root. Similarly, the
second issue was that the source and dest paths for copyfile() were relative to
the repo root. This converts these three paths to absolute paths.
Some notable issues, regardless of the directory in which the cp/mv is executed:
1) The copy is not being recorded in lfdirstate, but it is in dirstate for the
standins. I'm not sure if this is by design (i.e. minimal info in lfdirstate).
2) status -C doesn't behave as expected. Using the testcase as an example:
# after mv + ci
$ hg status -C -v --rev '.^' # expected to see 'A' and ' ' lines too
R dira\dirb\largefile
$ hg status -C -v --rev '.^' foo/largefile
# no output # expected to see 'A' and ' ' lines only
$ hg status -C -v --rev '.^' foo/
# no output # expected to see 'A', ' ' and 'R' lines
$ hg status -C -v --rev '.^' ./ # expected to see 'A' and ' ' lines too
R dirb\largefile
$ hg status -C -v --rev '.^' ../.hglf/dira/foo/largefile
A ..\.hglf\dira\foo\largefile
..\.hglf\dira\dirb\largefile # no 'R' expected when new file is specified
$ hg status -C -v --rev '.^' ../.hglf # OK
A ..\.hglf\dira\foo\largefile
..\.hglf\dira\dirb\largefile
R ..\.hglf\dira\dirb\largefile
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 25 Jul 2012 16:15:28 +0900] rev 17244
revset: add explanation about difference between 'filelog()' and 'file()'
Matt Mackall <mpm@selenic.com> [Wed, 25 Jul 2012 14:49:53 -0500] rev 17243
hgweb: improve colors for comparison page
delete: red -> red
insert: green -> yellow
change: yellow -> gray
Patrick Mezard <patrick@mezard.eu> [Wed, 25 Jul 2012 16:27:26 +0200] rev 17242
histedit: fix new nodes computation with --continue (issue3534)
When running the following actions:
pick 617f94f13c0f 1 +4
drop 888f9082bf99 2 +5
fold 251d831eeec5 3 +6
if the fold fails, is fixed by the user with a new changeset, --continue
will ignore the new revision when generating the fold changelog. This
was caused by --continue detecting new changesets as descendants of the
parent not descendants of changesets in the initial list. In this case,
dropped changesets must be ignored.
Even with the computation fixed, the 'newchildren' list was always
emptied by the filtering loop and passed empty to finishfold().
Note that changesets dropped and recreated identically will still be
missed. This probably cannot be solved but is unlikely to happen.
Other things, like 'newchildren' having multiple heads, should be
checked as well.
Patrick Mezard <patrick@mezard.eu> [Wed, 25 Jul 2012 11:09:51 +0200] rev 17241
histedit: end folding message with an LF
This is convenient when running tests dumping the editor content, it
avoids the following output line to be mixed with histedit message.
Matt Mackall <mpm@selenic.com> [Tue, 24 Jul 2012 12:36:40 -0500] rev 17240
merge with i18n
Jens Bäckman <jens.backman@gmail.com> [Mon, 23 Jul 2012 20:38:33 +0200] rev 17239
i18n-sv: synchronized with d1b49b02bc16
Bryan O'Sullivan <bryano@fb.com> [Mon, 23 Jul 2012 15:40:19 -0700] rev 17238
merge with crew-stable
Bryan O'Sullivan <bryano@fb.com> [Mon, 23 Jul 2012 15:38:43 -0700] rev 17237
util: delegate seek and tell methods of atomictempfile
Martin Geisler <mg@aragost.com> [Mon, 23 Jul 2012 15:55:26 -0600] rev 17236
encoding: add fast-path for ASCII uppercase.
This copies the performance hack from encoding.lower (c481761033bd).
The case-folding logic that kicks in on case-insensitive filesystems
hits encoding.upper hard: with a repository with 75k files, the
timings went from
hg perfstatus
! wall 3.156000 comb 3.156250 user 1.625000 sys 1.531250 (best of 3)
to
hg perfstatus
! wall 2.390000 comb 2.390625 user 1.078125 sys 1.312500 (best of 5)
This is a 24% decrease. For comparison, Mercurial 2.0 gives:
hg perfstatus
! wall 2.172000 comb 2.171875 user 0.984375 sys 1.187500 (best of 5)
so we're only 10% slower than before we added the extra case-folding
logic.
The same decrease is seen when executing 'hg status' as normal, where
we go from:
hg status --time
time: real 4.322 secs (user 2.219+0.000 sys 2.094+0.000)
to
hg status --time
time: real 3.307 secs (user 1.750+0.000 sys 1.547+0.000)
Martin Geisler <mg@aragost.com> [Mon, 23 Jul 2012 15:55:22 -0600] rev 17235
encoding: use s.decode to trigger UnicodeDecodeError
When calling encode on a str, the string is first decoded using the
default encoding and then encoded. So
s.encode('ascii') == s.decode().encode('ascii')
We don't care about the encode step here -- we're just after the
UnicodeDecodeError raised by decode if it finds a non-ASCII character.
This way is also marginally faster since it saves the construction of
the extra str object.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 22 Jul 2012 13:16:45 +0200] rev 17234
test-largefiles: fix test failing on vfat file systems
The usercache hardlinks files for filesystems that support hardlinks. So when
this test is run on a filesystem that supports hardlinking, we have a link
in r7 and in the usercache, pointing to the same file contents (4cdac4d8...).
vfat does not support hardlinks, the file in the cache and in the store of
r7 are thus independent.
For the test to pass on vfat, we need to corrupt *both* the largefile in the
usercache and in the store of r7. Corrupting only one of them is not sufficient.
Fixes:
--- /home/buildslave/mercurial/vfat_hg_tests__stable_/build/tests/test-largefiles.t
+++ /home/buildslave/mercurial/vfat_hg_tests__stable_/build/tests/test-largefiles.t.err
@@ -997,9 +997,11 @@
$ hg push -R r7 http://localhost:$HGPORT1
pushing to http://localhost:$HGPORT1/
searching for changes
- remote: largefiles: failed to put 4cdac4d8b084d0b599525cf732437fb337d422a8 into store: largefile contents do not match hash
- abort: remotestore: could not put $TESTTMP/r7/.hg/largefiles/4cdac4d8b084d0b599525cf732437fb337d422a8 to remote store http://localhost:$HGPORT1/ (glob)
- [255]
+ searching for changes
+ remote: adding changesets
+ remote: adding manifests
+ remote: adding file changes
+ remote: added 2 changesets with 2 changes to 2 files
$ rm -rf empty
Push a largefiles repository to a served empty repository
Matt Harbison <matt_harbison@yahoo.com> [Fri, 20 Jul 2012 22:10:52 -0400] rev 17233
largefiles: mark as a first party extension
Matt Harbison <matt_harbison@yahoo.com> [Thu, 19 Jul 2012 23:35:13 -0400] rev 17232
largefiles: ensure addlargefiles() doesn't add a standin as a largefile
An easy way to force this (and cause a traceback) prior to the fix for 3507 was
$ touch large
$ hg add --large large
$ hg ci -m "add"
$ hg remove large
$ touch large
$ hg addremove --config largefiles.patterns=**large
This patch also detected (and corrected) a previous test where a standin got
added as a largefile (without a traceback).
Matt Harbison <matt_harbison@yahoo.com> [Thu, 19 Jul 2012 11:12:05 -0400] rev 17231
largefiles: fix a traceback when addremove follows a remove (issue3507)
The problem only occurred if a file was removed with 'hg rm' (as opposed to the
OS utilities), and then addremove was run before a commit. Both normal and
large files were affected.
Ensuring that the file exists prior to an lstat() for size seems like the Right
Thing. But oddly enough, the missing file that was causing lstat() to blow up
was a standin when a largefile was removed, which seems fishy, because a standin
should never be added as a largefile. I was then able to get a standin added as
a largefile (whose name is 'large') with
hg addremove --config largefiles.patterns=**large
which also causes a backtrace. That will be fixed next.
Matt Harbison <matt_harbison@yahoo.com> [Thu, 19 Jul 2012 10:00:15 -0400] rev 17230
largefiles: defer lfdirstate.drop() until after commit (issue3364)
The example in comment #9 of the bug writeup must be run exactly- it was the
commit after the rm and prior to the addremove that screwed things up, because
that commit noticed that the largefile was missing, called drop(), and then the
original commit function did nothing (due to the file in the '!' state). The
addremove command properly put it into the 'R' state, but it remained stuck in
that state (because commit insisted 'nothing changed'). Without the commit
prior to addremove, the problem didn't occur.
Maybe this is an indication that lfdirstate needs to take a few more hints from
the regular dirstate, regardless of what _it_ thinks the state is- similar
inconsistency is probably still possible with this patch if the original commit
succeeds but the lfdirstate write fails.
Matt Harbison <matt_harbison@yahoo.com> [Thu, 19 Jul 2012 06:30:59 -0400] rev 17229
largefiles: fix addremove with -R option
If a file was missing, the missing list contained a path relative to the repo.
When building the matcher from that list, the file name ended up concatenated to
cwd, causing the command to abort with '<file> not under root'. This rebuilds
the missing list with paths relative to cwd.
Thomas Arendsen Hein <thomas@intevation.de> [Thu, 19 Jul 2012 21:20:56 +0200] rev 17228
dispatch: fix traceback when extension was tested with newer versions only
The "worst" extension still is the one tested with the lowest tested version
below the current version of Mercurial, but if an extension with was only
tested with newer versions, it is considered a candidate for a bad extension,
too. In this case extensions which have been tested with higher versions of
Mercurial are considered better. This allows finding the oldest extension if
ct can't be calculated correctly and therefore defaults to an empty tuple, and
it involves less changes to the comparison logic during the current code
freeze.
Thomas Arendsen Hein <thomas@intevation.de> [Thu, 19 Jul 2012 16:50:52 +0200] rev 17227
test-extension.t: use fixed version string instead of current tag
Currently tests break with the current tag being 2.3-rc and tags set by the
user could affect this test, too.
Matt Mackall <mpm@selenic.com> [Wed, 18 Jul 2012 19:09:06 -0500] rev 17226
Added tag 2.3-rc for changeset a06e2681dd17
Matt Mackall <mpm@selenic.com> [Wed, 18 Jul 2012 19:08:25 -0500] rev 17225
merge default into stable for 2.3 code freeze
Matt Mackall <mpm@selenic.com> [Wed, 18 Jul 2012 19:08:11 -0500] rev 17224
merge with crew
Martin Geisler <martin@geisler.net> [Thu, 19 Jul 2012 00:54:33 +0200] rev 17223
merge with stable
Martin Geisler <martin@geisler.net> [Thu, 19 Jul 2012 00:53:27 +0200] rev 17222
windows: removed duplicate termwidth definition
Changeset dbf91976f900 caused this when the "from win32 import *" line
was replaced with explicit import statements: the wildcard import was
at the bottom of the file and so windows.termwidth was overwritten by
win32.termwidth as indented, but the new explicit import statements
were at the top and so win32.termwidth got lost.
With the switch to ctypes, win32 can always be imported and so the
fallback termwidth in windows is no longer needed.
Pierre-Yves.David@ens-lyon.org [Fri, 13 Jul 2012 13:21:20 +0200] rev 17221
httprepo: ensure Content-Type header exists when pushing data
Otherwise the wireprotocol just hangs while trying to send data. (And
nothing is received at the other side)
Pierre-Yves.David@ens-lyon.org [Fri, 13 Jul 2012 22:15:11 +0200] rev 17220
obsolete: obsstore.add now takes a list of markers.
This allow efficient IO and it greatly simplify the merging of markers.
Pierre-Yves.David@ens-lyon.org [Thu, 12 Jul 2012 19:58:07 +0200] rev 17219
obsolete: refactor writemarkers to only encode them
The function is now able to write the version header as necessary. The function
now yield bytes to be written to a stream.
This should ease later use of this function for wireprotocol based exchanged.
Prepare the public use of the writemarker by wireprotocol function.
Adrian Buehlmann <adrian@cadifra.com> [Sat, 14 Jul 2012 18:29:46 +0200] rev 17218
update: put rules for uncommitted changes into verbose help section
Simon Heimberg <simohe@besonet.ch> [Fri, 06 Jul 2012 18:41:25 +0200] rev 17217
hooks: print out more information when loading a python hook fails
When loading a python hook with file syntax fails, there is no
information that this happened while loading a hook. When the python
file does not exist even the file name is not printed. (Only that a
file is missing.)
This patch adds this information and a test for loading a non existing file and
a directory not being a python module.
Joshua Redstone <joshua.redstone@fb.com> [Wed, 18 Jul 2012 07:51:20 -0700] rev 17216
perf: fix perfcca to work with new casecollisionauditor interface
A recent changeset, afd75476939e, modified the caescollisionauditor interface
but did not update perf.py. This changeset remidies that.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 17 Jul 2012 18:21:49 +0200] rev 17215
checkheads: extract branchmap preprocessing
The checkheads function is far too complicated. This extract help to explicite
what part of the preprocessing are reused by the actual check.
This the first step toward a wider refactoring.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 17 Jul 2012 17:59:29 +0200] rev 17214
checkheads: take future obsoleted heads into account
If we push some successors they will likely create a new head on
remote. However as the obsoleted head will disappear after the push we
are not really increasing the number of heads.
There is several case which will lead to extra being actually pushed. But this
first changeset aims to be simple. See the inline comment for details.
Without this change, you need to push --force every time you want to
push a newer version which is very error prone.
The remote side still display +n heads on unbundle because it does not have the
obsolete marker at unbundle time.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 17 Jul 2012 17:31:29 +0200] rev 17213
obsolete: add an any successors function
This function yield every nodes which succeed to a group of nodes.
The first user will be checkheads who need to know if we push successors for
remote extra heads.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 17 Jul 2012 18:14:16 +0200] rev 17212
checkheads: extract bookmark computation from the branch loop
No branch specific data are used in the computation of the bookmarked heads. We
can only compute it once.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 17 Jul 2012 16:30:42 +0200] rev 17211
checkheads: simplify the structure build by preprocessing
All useful data are now gathered in a single dictionnary.
`branchmapsummary` is renamed to `headssummary` and its return value
is greatly simplified.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 17 Jul 2012 16:16:17 +0200] rev 17210
_updatebranchcache: prevent deleting dict key during iteration
We use dict.keys() to fetch all keys before starting to delete some. Otherwise
python complains that the dictionnary is altered during iteration.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 17 Jul 2012 18:21:49 +0200] rev 17209
checkheads: extract branchmap preprocessing
The checkheads function is far too complicated. This extract help to explicite
what part of the preprocessing are reused by the actual check.
This the first step toward a wider refactoring.
Pierre-Yves.David@ens-lyon.org [Mon, 16 Jul 2012 17:56:50 +0200] rev 17208
obsolete: mark unreachable extinct changesets as hidden
The repo.hiddenrevs set is updated with all extinct() changesets which aren't
descendants of either:
- the current working copy,
- a bookmark,
- a tag.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 16 Jul 2012 17:44:46 +0200] rev 17207
hidden: move hiddenrevs set on the repository
This set is always accessed through the repo for now. Having this set
carried by the changelog make it complicated to:
- initialize it, computing hidden set may involve revset call
- lazy compute it, (1) only the changelog can detect someone access it,
(2) only the repo have enought knowledge to compute it.
In later version I expect he changelog to apply filtering itself and the set to
be carried by changelog again.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 13 Jul 2012 14:38:49 +0200] rev 17206
obsolete: do not exchange extinct changesets
Extinct changesets are excluded from all exchange operations. This is a silent
exclusion because the user should not need to be aware of them.
There is no reason to strongly enforce this exclusion except implementation
simplicity. User should be able to explicitly request an extinct changeset in
the future.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 17 Jul 2012 01:22:31 +0200] rev 17205
repo: move visibleheads and visiblebranchmap logic in discovery
They were previously inside the mercurial.phases module, but obsolete
logic will need them to exclude `extinct` changesets from pull and
push.
The proper and planned way to implement such filtering is still to apply a
changelog level filtering. But we are far to late in the cycle to implement and
push such a critical piece of code (changelog filtering). With Matt Mackall
approval I'm extending this quick and dirty mechanism for obsolete purpose.
Changelog level filtering should come during the next release cycle.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 17 Jul 2012 01:04:45 +0200] rev 17204
localpeer: return only visible heads and branchmap
Now that we have localpeer, we can apply filtering on heads and branchmap the
same way it's done for wireprotocol peer.
Adrian Buehlmann <adrian@cadifra.com> [Wed, 18 Jul 2012 14:41:58 +0200] rev 17203
util, posix: eliminate encodinglower and encodingupper
2ebe3d0ce91d claims this was needed "to avoid cyclic dependency", but there is
no cyclic dependency.
windows.py already imports encoding, posix.py can import it too, so we can
simply use encoding.upper in windows.py and in posix.py.
(this is a partial backout of 2ebe3d0ce91d)
wujek srujek [Sun, 08 Jul 2012 17:17:02 +0200] rev 17202
hgweb: side-by-side comparison functionality
Adds new web command to the core, ``comparison``, which enables colorful
side-by-side change display, which for some might be much easier to work with
than the standard line diff output. The idea how to implement comes from the
SonicHq extension.
The web interface gets a new link to call the comparison functionality. It lets
users configure the amount of context lines around change blocks, or to show
full files - check help (also in this changeset) for details and defaults. The
setting in hgrc can be overridden by adding ``context=<value>`` to the request
query string. The comparison creates addressable lines, so as to enable sharing
links to specific lines, just as standard diff does.
Incorporates updates to all web related styles.
Known limitations:
* the column diff is done against the first parent, just as the standard diff
* this change allows examining diffs for single files only (as I am not sure if
examining the whole changeset in this way would be helpful)
* syntax highlighting of the output changes is not performed (enabling the
highlight extension has no influence on it)
Joshua Redstone <joshua.redstone@fb.com> [Fri, 06 Jul 2012 13:56:40 -0700] rev 17201
scmutil: 25% speedup in casecollisionauditor
On a large repository, switching casecollisionauditor to lowercasing all file
names at once rather than one at a time improves hg-add time by 25%.
Adrian Buehlmann <adrian@cadifra.com> [Tue, 17 Jul 2012 00:55:22 +0200] rev 17200
obsolete: os.SEEK_END first appeared in Python 2.5
fixes 48c232873a54 failing for Python 2.4
Matt Harbison <matt_harbison@yahoo.com> [Sun, 15 Jul 2012 12:43:10 -0400] rev 17199
tests: convert a push test to use revsets
Matt Harbison <matt_harbison@yahoo.com> [Sun, 15 Jul 2012 12:43:10 -0400] rev 17198
outgoing: accept revset argument for --rev
There may be a more generic way that would add revset support to more commands
by adding revset support to addbranchrevs(), but given the proximity of the next
code freeze, a minimal change seems like the better choice.
Matt Mackall <mpm@selenic.com> [Mon, 16 Jul 2012 16:19:53 -0500] rev 17197
dirstate: drop assert
Adrian Buehlmann <adrian@cadifra.com> [Wed, 04 Jul 2012 01:31:37 +0200] rev 17196
dirstate: eliminate redundant check parameter on _addpath()
state == 'a' implies check
I fail to see what the point of this check parameter is. Near as I can see,
the only _addpath call where it was set to True was in add(), but there, state
is 'a'.
This is a follow-up to c2016bae3b97.
Adrian Buehlmann <adrian@cadifra.com> [Mon, 16 Jul 2012 22:37:44 +0200] rev 17195
obsolete: add seek to end of file before calling tell (issue3543)
Sune Foldager <cryo@cyanite.org> [Fri, 13 Jul 2012 21:52:37 +0200] rev 17194
peer: remove cancopy from peer api; use directly on repo instead
Sune Foldager <cryo@cyanite.org> [Fri, 13 Jul 2012 21:52:28 +0200] rev 17193
peer: introduce canpush and improve error message
Peter Arrenbrecht <peter.arrenbrecht@gmail.com> [Fri, 13 Jul 2012 21:47:06 +0200] rev 17192
peer: introduce real peer classes
This change separates peer implementations from the repository implementation.
localpeer currently is a simple pass-through to localrepository, except for
legacy calls, which have already been removed from localpeer. This ensures that
the local client code only uses the most modern peer API when talking to local
repos.
Peers have a .local() method which returns either None or the underlying
localrepository (or descendant thereof). Repos have a .peer() method to return
a freshly constructed localpeer. The latter is used by hg.peer(), and also to
allow folks to pass either a peer or a repo to some generic helper methods.
We might want to get rid of .peer() eventually.
The only user of locallegacypeer is debugdiscovery, which uses it to pose as a
pre-setdiscovery client. But we decided to leave the old API defined in
locallegacypeer for clarity and maybe for other uses in the future.
It might be nice to actually define the peer API directly in peer.py as stub
methods. One problem there is, however, that localpeer implements
lock/addchangegroup, whereas the true remote peers implement unbundle.
It might be desireable to get rid of this distinction eventually.
Sune Foldager <cryo@cyanite.org> [Fri, 13 Jul 2012 21:46:53 +0200] rev 17191
peer: introduce peer methods to prepare for peer classes
This introduces a peer method into all repository classes, which currently
simply returns self. It also changes hg.repository so it now raises an
exception if the supplied paths does not resolve to a localrepo or descendant.
Finally, all call sites are changed to use the peer and local methods as
appropriate, where peer is used whenever the code is dealing with a remote
repository (even if it's on local disk).
Augie Fackler <raf@durin42.com> [Fri, 06 Jul 2012 14:12:42 -0500] rev 17190
bookmarks: document behavior of -B/--bookmark in help
Augie Fackler <raf@durin42.com> [Fri, 06 Jul 2012 14:11:58 -0500] rev 17189
test-bookmarks-pushpull.t: verify correct push -B behavior
I wasn't able to find a test that proved this behavior worked, so I
felt obligated to write a quick test so it won't regress in the
future.
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 11:52:42 +0200] rev 17188
debugrevlog: handle numrevs == numfull case (issue3537)
Instead of tracing back with a ZeroDivisionError.
epriestley <hg@yghe.net> [Tue, 10 Jul 2012 09:11:53 -0700] rev 17187
templatekw/help: document the {parents} keyword
The {parents} keyword does not appear in the generated documentation for
templates because it is added by `changeset_templater` (and this is because
its behavior depends on `ui`, so it can't be defined as a normal template
keyword; see comments in `changeset_templater._show()`).
Add it to the documentation synthetically by creating a stub documentation
function.
Test plan: built the docs and examined the man page to verify that this
keyword is now documented. I'm not sure how to test the i18n extraction part,
but assume it will just work given that this patch doesn't do anything too
crazy.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 07 Jul 2012 00:47:55 -0400] rev 17186
revset: add destination() predicate
This predicate is used to find csets that were created because of a graft,
transplant or rebase --keep. An optional revset can be supplied, in which case
the result will be limited to those copies which specified one of the revs as
the source for the command.
hg log -r destination() # csets copied from anywhere
hg log -r destination(branch(default)) # all csets copied from default
hg log -r origin(x) or destination(origin(x)) # all instances of x
This predicate will follow a cset through different types of copies. Given a
repo with a cset 'S' that is grafted to create G(S), which itself is
transplanted to become T(G(S)):
o-S
/
o-o-G(S)
\
o-T(G(S))
hg log -r destination( S ) # { G(S), T(G(S)) }
hg log -r destination( G(S) ) # { T(G(S)) }
The implementation differences between the three different copy commands (see
the origin() predicate) are not intentionally exposed, however if the
transplant was a graft instead:
hg log -r destination( G(S) ) # {}
because the 'extra' field in G(G(S)) is S, not G(S). The implementation cannot
correct this by following sources before G(S) and then select the csets that
reference those sources because the cset provided to the predicate would also
end up selected. If there were more than two copies, sources of the argument
would also get selected.
Note that the convert extension does not currently update the 'extra' map in its
destination csets, and therefore copies made prior to the convert will be
missing from the resulting set.
Instead of the loop over 'subset', the following almost works, but does not
select a transplant of a transplant. That is, 'destination(S)' will only
select T(S).
dests = set([r for r in subset if _getrevsource(repo, r) in args])
Matt Harbison <matt_harbison@yahoo.com> [Sat, 07 Jul 2012 00:47:30 -0400] rev 17185
revset: add origin() predicate
This predicate is used to find the original source of csets created by a graft,
transplant or rebase --keep. If a copied cset is itself copied, only the
source of the original copy is selected.
hg log -r origin() # all src csets, anywhere
hg log -r origin(branch(default)) # all srcs of copies on default
By following through different types of copy commands and only selecting the
original cset, the implementation differences between the copy commands are
hidden. (A graft of a graft preserves the original source in its 'extra' map,
while transplant and rebase use the immediate source specified for the
command).
Given a repo with a cset S that is grafted to create G(S), which itself is
grafted to become G(G(S))
o-S
/
o-o-G(S)
\
o-G(G(S))
hg log -r origin( G(S) ) # { S }
hg log -r origin( G(G(S)) ) # { S }, NOT { G(S) }
Even if the last graft were a transplant
hg log -r origin( T(G(S)) ) # { S }
A rebase without --keep essentially strips the source, so providing the cset
that results to this predicate will yield an empty set.
Note that the convert extension does not currently update the 'extra' map in
its destination csets, and therefore copies made prior to the convert will be
unable to find their source.
Patrick Mezard <patrick@mezard.eu> [Mon, 16 Jul 2012 15:50:19 +0200] rev 17184
convert: remove unused newnames variable in filemap
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Thu, 12 Jul 2012 03:03:19 +0200] rev 17183
push: fix bug in detection of remote obsolete support
Current code check obsolete availability in local repo.
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 18:22:07 +0200] rev 17182
incoming/outgoing: handle --graph in core
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Jul 2012 19:09:22 +0200] rev 17181
log: support --graph without graphlog extension
The glog command is preserved in the extension for backward compatibility.
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Jul 2012 18:55:21 +0200] rev 17180
graphlog: extract revset/support functions into cmdutil
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 17:13:39 +0200] rev 17179
graphlog: extract ascii drawing code into graphmod
Patrick Mezard <patrick@mezard.eu> [Sun, 24 Jun 2012 18:11:52 +0200] rev 17178
patchbomb: rewrite getoutgoing() with revsets
Another version could have returned a revset expression from
getoutgoing(), but we do not know how many times it will be resolved, so
better do it once explicitely.
Patrick Mezard <patrick@mezard.eu> [Sun, 24 Jun 2012 17:39:27 +0200] rev 17177
patchbomb: support --outgoing and revsets
With --outgoing, input revisions were passed to getoutgoing() before
being resolved.
Patrick Mezard <patrick@mezard.eu> [Sat, 14 Jul 2012 19:21:31 +0200] rev 17176
patchbomb: make --outgoing ignore secret changesets
getoutgoing() is just rewritten almost like revset.outgoing(), a
follow-up will make it use revsets after the tests are adjusted.
Matt Mackall <mpm@selenic.com> [Sun, 15 Jul 2012 14:48:50 -0500] rev 17175
merge with stable
Wagner Bruna <wbruna@yahoo.com> [Fri, 06 Jul 2012 01:14:02 -0300] rev 17174
convert: make filemap renames consistently override revision renames
When the source repository had a revision renaming "$new -> $old",
but the filemap a "$old -> $new" rename, the converted revision could
use either $new (deleting the file) or $old (keeping the file) when
getting the file data, depending on the lexicographical order of
those names. So the resulting revision would leave some files
untouched (as expected), but delete others arbitrarely.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 06 Jul 2012 19:34:09 +0200] rev 17173
obsolete: compute extinct changesets
`extinct` changesets are obsolete changesets with obsolete descendants only. They
are of no interest anymore and can be:
- exclude from exchange
- hidden to the user in most situation
- safely garbage collected
This changeset just allows mercurial to detect them.
The implementation is a bit naive, as for unstable changesets. We better use a
simple revset query and a cache, but simple version comes first.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 10 Jul 2012 01:39:03 +0200] rev 17172
push: refuse to push unstable changesets without force
User should resolve unstability locally before pushing the same way we encourage
user to merge locally instead of pushing a new remote head.
If we are to push obsolete changeset, at least one set of the pushed set will be
either obsolete or unstable. The check is narrowed to only heads.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 06 Jul 2012 00:18:09 +0200] rev 17171
obsolete: compute unstable changeset
An unstable changeset is a changeset *not* obsolete but with some obsolete
ancestors.
The current logic to decide if a changeset is unstable is naive and very
inefficient. A better solution is to compute the set of unstable changeset with
a simple revset and to cache the result. But this require cache invalidation
logic. Simpler version goes first.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 06 Jul 2012 19:29:10 +0200] rev 17170
revset: add an `obsolete` symbol
This predicate matches obsolete changesets.
This is a naive implementation to be improved later.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 10 Jul 2012 01:32:18 +0200] rev 17169
push: refuse to push obsolete changesets
This is a first version. Simple but not very efficient.
Note that this changeset introduce the "obsolete" word in the UI.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 05 Jul 2012 19:53:04 +0200] rev 17168
push: accept revset argument for --rev
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 06 Jul 2012 19:48:19 +0200] rev 17167
check-code: recognise %= as an operator
Simon Heimberg <simohe@besonet.ch> [Wed, 04 Jul 2012 08:55:16 +0200] rev 17166
tests: do exclude what is expected
Mads Kiilerich <mads@kiilerich.com> [Fri, 06 Jul 2012 00:48:45 +0200] rev 17165
parsers.c: remove warning: 'size' may be used uninitialized in this function
Some compilers / compiler options (such as gcc 4.7) would emit warnings:
mercurial/parsers.c: In function 'pack_dirstate':
mercurial/parsers.c:306:18: warning: 'size' may be used uninitialized in this function [-Wmaybe-uninitialized]
mercurial/parsers.c:306:12: warning: 'mode' may be used uninitialized in this function [-Wmaybe-uninitialized]
It is apparently not smart enough to figure out how the 'err' arithmetics makes
sure that it can't happen.
'err' is now replaced with simple checks and goto. That might also help the
optimizer when it is inlining getintat().
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 16:47:33 +0200] rev 17164
graphlog: remove unused ASCIIDATA constant
It was introduced by d9acbe7b0049, returned by asciiformat() but never
read anywhere. 20140c249e63 stopped using it completely, and the
graphmod.CHANGESET type is passed through all functions.
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 17:10:21 +0200] rev 17163
graphlog: make functions private, fix names
Patrick Mezard <patrick@mezard.eu> [Wed, 11 Jul 2012 17:05:20 +0200] rev 17162
graphlog: remove unused get_revs() function
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:27 +0900] rev 17161
localrepo: use file API via vfs while ensuring repository directory
As a part of migration to vfs, this patch invokes some file API
indirectly via vfs, while ensuring repository directory in the
constructor of "localrepository" class.
New file API are added to "scmutil.abstractopener" class, because they
are also used via other derived classes than "scmutil.opener".
But "join()" is not yet defined other than "scmutil.opener" class,
because it should not be used via other opener classes yet.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:27 +0900] rev 17160
localrepo: use "vfs" intead of "opener" while ensuring repository directory
As a part of migration to vfs, this patch uses "self.vfs" instead of
"self.opener", while ensuring repository directory in the constructor
of "localrepository" class.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:27 +0900] rev 17159
localrepo: use the path relative to "self.vfs" instead of "path" argument
As a part of migration to vfs, this patch uses "self.root", which can
be recognized as the path relative to "self.vfs", instead of "path"
argument.
This fix allows to make invocations of "util.makedirs()" and
"os.path.exists()" while ensuring repository directory in
"localrepository.__init__()" ones indirectly via vfs.
But this fix also raises issue 2528: "hg clone" with empty destination.
"path" argument is empty in many cases, so this issue can't be fixed
in the view of "localrepository.__init__()".
Before this patch, it is fixed by empty-ness check ("not name") of
exception handler in "util.makedirs()".
try:
os.mkdir(name)
except OSError, err:
if err.errno == errno.EEXIST:
return
if err.errno != errno.ENOENT or not name:
raise
This requires "localrepository.__init__()" to invoke "util.makedirs()"
with "path" instead of "self.root", because empty "path" is treated as
"current directory" and "self.root" becomes valid path.
But "hg clone" with empty destination can be detected also in
"hg.clone()" before "localrepository.__init__()" invocation, so this
patch re-fixes issue2528 by checking it in "hg.clone()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:27 +0900] rev 17158
localrepo: use "self.wvfs.join()" instead of "os.path.join()"
As a part of migration to vfs, this patch uses "self.wvfs.join()"
instead of "os.path.join()", while initialization of fields in the
constructor of "localrepository" class.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:27 +0900] rev 17157
localrepo: use path expansion API via vfs
As a part of migration to vfs, this patch moves path expansion API
invocations in the constructor of "localrepository" to the constructor
of "opener", because the root path to the repository is very important
to handle paths using non-ASCII characters correctly.
This patch also rearrange initialization order of "wvfs" field,
because it is required to initialize "self.root".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 06 Jul 2012 18:45:26 +0900] rev 17156
localrepo: add "vfs" fields to "localrepository" for migration from "opener"
As a part of migration to vfs, this patch adds "vfs" fields to
"localrepository" class.
This allows new codes to access current "opener" objects related to
repositories via "vfs" fields, so patches referring to "vfs" will
replace referring to "opener" in time.
This patch also adds initializations for "vfs" fields to
"statichttprepository" class derived from it, because its constructor
doesn't invoke the constructor of "localrepository", so "vfs" fields
should be initialized explicitly as same as "opener" fields: it has no
working directory, so "wvfs" field is not added.
Na'Tosha Bard <natosha@unity3d.com> [Fri, 13 Jul 2012 14:49:16 +0200] rev 17155
largefiles: optimize status by synchronizing lfdirstate with the largefile on update
This speeds up status on a largefiles repo by synchronizing the largefiles dirstate to the
largefile's mtime upon update, preventing the files from coming back as "unsure" later,
requiring a check of the SHA1 sum.
Bryan O'Sullivan <bryano@fb.com> [Mon, 25 Jun 2012 15:14:06 -0700] rev 17154
store: abstract out how we retrieve a file's size
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 27 Jun 2012 22:03:27 +0900] rev 17153
mq: check subrepo synchronizations against parent of workdir or other appropriate context
Before this patch, MQ checks each subrepo synchronizations against the
working directory context, so ".hgsubstate" updating is not imported
into MQ revision correctly in cases below:
- qrefresh when current ".hgsubstate" is already synchronized with
each subrepos: you can reproduce this easily by just twice or more
qrefresh invocations
- qnew just after rollback of commit which updates ".hgsubstate"
This patch resolves this by checking subrepo states against:
- the parent of "qtop" for qrefresh, or
- the parent of working context otherwise
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 27 Jun 2012 22:03:27 +0900] rev 17152
mq: create patch file after commit to import diff of ".hgsubstate" at qrefresh
Even though the committed revision contains diff of ".hgsubstate", the
patch file created by qrefresh doesn't contain it, because:
- ".hgsubstate" is not listed up as one of target files of the patch
for reasons below, so diff of ".hgsubstate" is not imported into
patch file
- status of ".hgsubstate" in working directory is usually "clean"
- ".hgsubstate" is not specified explicitly by users
- the patch file is created before commit processing which updates
or creates ".hgsubstate" automatically, so there is no diff for it
at that time
This patch resolves this problem by:
- putting ".hgsubstate" into target list of the patch, if needed:
this allows "patch.diff()" to import diff of ".hgsubstate" into
patch file.
- creating the patch file after commit processing:
this updates ".hgsubstate" before "patch.diff()" invocation.
For the former fixing, this patch introduces "putsubstate2changes()"
to share same implementation with qnew. This is invoked only once per
qnew/qrefresh at most, so there is less performance impact.
This patch also omits "match" argument for "patch.diff()" invocation,
because "patch.diff()" ignores "match" if "changes" is specified.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 27 Jun 2012 22:03:22 +0900] rev 17151
mq: add ".hgsubstate" to patch target list only if it is not listed up yet
If ".hgsubstate" is already listed up as one of commit targets, qnew
put diff of ".hgsubstate" twice into the patch file stored under
".hg/patches".
It causes rejections at applying such patches.
Other than the case like in added test script, this can also occur
when qnew is executed just after rolling back the committing updated
".hgsubstate".
This patch checks whether ".hgsubstate" is already listed up as one of
commit targets, and put it into the appropriate list only if it is not
listed up yet.
Matt Mackall <mpm@selenic.com> [Thu, 12 Jul 2012 14:20:34 -0500] rev 17150
backout e7167007c083
This may have allowed unbounded I/O sizes with the current chunk
retrieval code.
Martin Geisler <mg@aragost.com> [Thu, 12 Jul 2012 13:33:53 +0200] rev 17149
merge with crew-stable
Adrian Buehlmann <adrian@cadifra.com> [Mon, 09 Jul 2012 17:51:46 +0200] rev 17148
revert: use term "uncommitted merge" in help text
to make sure users can't possibly be mislead to try this for canceling a
*merge changeset*.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 06 Jul 2012 22:43:10 +0200] rev 17147
histedit: use cmdutil.command decorator
Adrian Buehlmann <adrian@cadifra.com> [Tue, 10 Jul 2012 17:52:43 +0200] rev 17146
hgweb: show help with verbose sections included
This makes sure we see the same help info as with 'hg help <command> --verbose'
on the command line, that is, with verbose sections included.
Martin Geisler <mg@aragost.com> [Thu, 12 Jul 2012 10:41:56 +0200] rev 17145
merge with crew-stable
Adrian Buehlmann <adrian@cadifra.com> [Tue, 10 Jul 2012 21:26:18 +0200] rev 17144
update: mention how update can be used to cancel an uncommitted merge
Adrian Buehlmann <adrian@cadifra.com> [Tue, 10 Jul 2012 11:15:22 +0200] rev 17143
update: move help text about parent revision higher up
emphasizing how important the parent revision is
Adrian Buehlmann <adrian@cadifra.com> [Wed, 11 Jul 2012 09:12:31 +0200] rev 17142
rollback: move examples and --force note in help into verbose section
Plain 'hg help rollback' now looks like this:
$ hg help rollback
hg rollback
roll back the last transaction (dangerous)
This command should be used with care. There is only one level of
rollback, and there is no way to undo a rollback. It will also restore
the dirstate at the time of the last transaction, losing any dirstate
changes since that time. This command does not alter the working
directory.
Transactions are used to encapsulate the effects of all commands that
create new changesets or propagate existing changesets into a repository.
This command is not intended for use on public repositories. Once changes
are visible for pull by other users, rolling a transaction back locally
is ineffective (someone else may already have pulled the changes).
Furthermore, a race is possible with readers of the repository; for
example an in-progress pull from the repository may fail if a rollback is
performed.
Returns 0 on success, 1 if no rollback data is available.
options:
-n --dry-run do not perform actions, just print output
-f --force ignore safety measures
--mq operate on patch repository
use "hg -v help rollback" to show more info
Adrian Buehlmann <adrian@cadifra.com> [Wed, 11 Jul 2012 09:08:26 +0200] rev 17141
rollback: split off command example paragraph in help
Martin Geisler <mg@aragost.com> [Thu, 12 Jul 2012 09:58:40 +0200] rev 17140
subrepo: add missing newline in Git warning message
Martin Geisler <mg@aragost.com> [Thu, 12 Jul 2012 10:03:50 +0200] rev 17139
merge with main
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:39:00 -0700] rev 17138
Merge
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:36:00 -0700] rev 17137
localrepo: make requirements and openerreqs mutable by subclasses
This is necessary for extensions that need to modify a repo's
requirements.
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:34:01 -0700] rev 17136
test-clone: load extensions before doing anything
This makes it possible to run this test using
"--extra-config-opt=extensions.myext=" and have the extension be
loaded as intended.
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:34:32 -0700] rev 17135
test-clone: load extensions before doing anything
This makes it possible to run this test using
"--extra-config-opt=extensions.myext=" and have the extension be
loaded as intended.
Friedrich Kastner-Masilko <kastner_masilko@at.festo.com> [Wed, 11 Jul 2012 12:38:42 +0200] rev 17134
revlog: fix for generaldelta distance calculation
The decision whether or not to store a full snapshot instead of a delta is done
based on the distance value calculated in _addrevision.builddelta(rev).
This calculation traditionally used the fact of deltas only using the previous
revision as base. Generaldelta mechanism is changing this, yet the calculation
still assumes that current-offset minus chainbase-offset equals chain-length.
This appears to be wrong.
This patch corrects the calculation by means of using the chainlength function
if Generaldelta is used.
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:05:06 -0700] rev 17133
Merge
Bryan O'Sullivan <bryano@fb.com> [Wed, 11 Jul 2012 15:03:10 -0700] rev 17132
tests: reduce spurious failures when run with generaldelta
Quite a few tests fail in noisy but meaningless ways when the test suite
is run with generaldelta enabled:
./run-tests.py --extra-config-opt=format.generaldelta=1
This reduces the amount of noise introduced by the debugindex command,
the main source of differences. In my environment, when testing with
generaldelta enabled, this change reduces the number of completely
failing tests from 21 to 8.
Augie Fackler <raf@durin42.com> [Fri, 06 Jul 2012 12:17:53 -0500] rev 17131
histedit: add extension docstring from external README
Made a couple of tweaks to try and fit better with the hg docstring
style and fix up some ReST errors in the README.
Augie Fackler <raf@durin42.com> [Fri, 06 Jul 2012 11:39:02 -0500] rev 17130
histedit: don't crash if the result of fixing up a fold is empty
Augie Fackler <raf@durin42.com> [Fri, 06 Jul 2012 11:06:57 -0500] rev 17129
histedit: replace hexshort lambda with node.short
Bryan O'Sullivan <bryano@fb.com> [Mon, 25 Jun 2012 13:56:13 -0700] rev 17128
revlog: make compress a method
This allows an extension to optionally use a new compression type based
on the options applied by the repo to the revlog's opener.
(decompress doesn't need the same treatment, as it can be replaced using
extensions.wrapfunction, and can figure out which compression algorithm
is in use based on the first byte of the compressed payload.)
Na'Tosha Bard <natosha@unity3d.com> [Sun, 24 Jun 2012 20:36:22 +0200] rev 17127
largefiles: batch statlfile requests when pushing a largefiles repo (issue3386)
This implements a part of issue 3386. It batches the request for the status of
all largefiles in the revisions that are about to be pushed into a single
request, instead of doing N separate requests.
In a real world test case, this change was verified to save 1,116 round-trips to
the server. It only requires a client-side change; it is backwards-compatible
with an older version of the server.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 04 Jul 2012 02:21:04 +0200] rev 17126
obsolete: write obsolete marker inside a transaction
Marker are now written as soon as possible but within a transaction. Using a
transaction ensure a proper behavior on error and rollback compatibility.
Flush logic are not necessary anymore and are dropped from lock release.
With this changeset, the obsstore is open, written and closed for every single
added marker. This is expected to be highly inefficient and batched write should
be implemented "quickly".
Another issue is that every flush of the file will invalidate the obsstore
filecache and trigger a full re instantiation of the repo.obsstore attribute
(including, reading and parsing entry). This is also expected to be highly
inefficient and proper filecache operation should be implemented "quickly" too.
A side benefit of the filecache issue is that repo.obsstore object is properly
invalidated on transaction abortion.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 04 Jul 2012 02:02:48 +0200] rev 17125
obsolete: append new markers to obsstore file instead of rewriting everything
This is the second step toward incremental writing of marker inside a
transaction. The obsstore file is now handled append only.
Header writing have been extracted from _writemarkers.
Because the _writemarkers method have been dropped, the push code
directly reuse the serialised content of local repo `listkeys`. This
is not very pretty, but this part of the protocol still need major
improvement anyway.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 04 Jul 2012 02:00:36 +0200] rev 17124
obsolete: move obsolete markers read/write logic to obsstore object
This is the first step toward incremental writing of obsolete marker within a
transaction.
For this purpose, obsstore is now given its repo sopener. This make it able to
handles read and write to the obsstore file itself. Most IO logic is removed
from localrepo and handled by obsstore object directly.
Matt Mackall <mpm@selenic.com> [Wed, 11 Jul 2012 18:35:14 -0500] rev 17123
debugobsolete: remove spurious ctx from variable name
'contexts' are objects like the ones described in context.py, not
anything that describes a situation.
Bryan O'Sullivan <bryano@fb.com> [Fri, 06 Jul 2012 20:28:32 -0700] rev 17122
Merge
Bryan O'Sullivan <bryano@fb.com> [Fri, 06 Jul 2012 20:19:55 -0700] rev 17121
setup: disable -mno-cygwin if building under mingw32
This gcc option has been deprecated since at least 2009 (gcc 4.4),
and it causes compilations to fail entirely with gcc 4.6.x.
Upstream distutils bug: http://bugs.python.org/issue12641
Mads Kiilerich <mads@kiilerich.com> [Fri, 06 Jul 2012 00:30:18 +0200] rev 17120
graphlog: don't truncate template value at last \n
Most uses of templates requires a trailing newline to get vertical output.
Graphlog with a template without trailing newline did however not just create
horisontal output like other commands would but truncated the output at the
last \n. Template values without any \n were ignored completely.
Graphlog will now only eat one trailing newline before it lets the flow of the
graph add the necessary vertical space.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 04 Jul 2012 17:29:49 +0200] rev 17119
graphlog: display obsolete changeset as "x"
Changeset detected as obsolete will be displayed as "x" instead of 'o':
o new rewritten changeset
|
| x old obsolete changeset
|/
|
o base
This will be useful even when some obsolete changeset will be "hidden" because
not all obsolete changeset can be hidden. If an obsolete changeset have
non-obsolete descendant we can't simply hide it. And having a clear visual hint
that the changeset is obsolete is useful.
The main reason to make this minor change right now is to:
1) introduce an officiel user of the `ctx.obsolete()` method that will detect
breakage earlier than third party code (mutable, hgview)
2) Do not display any vocabulary related to obsolete. Such vocabulary will
require discussion.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 04 Jul 2012 17:26:51 +0200] rev 17118
obsolete: fix context.obsolete() method
- obsstore attribut name changed.
- public changeset can't be obsolete
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 04 Jul 2012 16:37:00 +0200] rev 17117
obsolete: fix error message at marker creation
precursors content where printed for invalid successor.
Adrian Buehlmann <adrian@cadifra.com> [Mon, 02 Jul 2012 00:31:22 +0200] rev 17116
help: explain effect of .hgignore on tracked files
Adrian Buehlmann <adrian@cadifra.com> [Sun, 01 Jul 2012 10:06:16 +0200] rev 17115
hgignore: simply ignore all *.exe's everywhere
it's not like we're going to add any exe anywhere ever
Mads Kiilerich <mads@kiilerich.com> [Thu, 05 Jul 2012 02:25:49 +0200] rev 17114
tests: ignore pax_global_header in test-subrepo-git.t
Failure seen on hgbuildbot 2.4 and 2.5 after 1894dac619de.
Hide '../archive_x/s/pax_global_header' with same strange trick as in
5dda6c708138.
Mads Kiilerich <mads@kiilerich.com> [Thu, 05 Jul 2012 01:47:17 +0200] rev 17113
tests: remove GNU quoting in test-subrepo-deep-nested-change.t
Test failure on non-GNU systems introduced in 1894dac619de.
Mads Kiilerich <mads@kiilerich.com> [Thu, 05 Jul 2012 00:51:05 +0200] rev 17112
tests: add '(glob)' for Windows paths in test-subrepo-deep-nested-change.t
Test failure was introduced in 1894dac619de.
Mads Kiilerich <mads@kiilerich.com> [Thu, 05 Jul 2012 00:49:26 +0200] rev 17111
check-code: verify that 'saved backup bundle to ...' is '(glob)'ed
This is the most frequent trivial reason tests fail on Windows.
Mads Kiilerich <mads@kiilerich.com> [Thu, 05 Jul 2012 00:35:42 +0200] rev 17110
tests: fix test markup in test-merge-types.t
ca5cc2976574 introduced some tests that because of incorrect indentation wasn't
run.
Adrian Buehlmann <adrian@cadifra.com> [Wed, 04 Jul 2012 12:43:13 +0200] rev 17109
test-hgweb-diffs: partially adapt for Windows
Since chmod isn't supported on Windows (or vfat), I'm importing a here-doc
instead (<<EOF ..).
Option --bypass on import of the here-doc is required on Windows (or vfat) to
bypass the working directory (see hg help import). Not using --bypass would
lose the mode changing bits.
I've had to insert a --bypass on the preexisting import call futher down in the
test, because importing a patch with --exact and mode changes will fail on
Windows (and vfat).
As the point of this test is not to test commit, I'm using the import
procedure for all platforms unconditionally, that is, I'm intentionally not
keeping the original sequence of hg and chmod calls for platforms that support
exec either, which saves us having to insert an #if exec ... #else ... #endif.
Matt Harbison <matt_harbison@yahoo.com> [Sat, 16 Jun 2012 22:34:06 -0400] rev 17108
subrepo: propagate matcher to subrepos when archiving
Add a match object to subrepo.archive(). This will allow the -X and -I
options to be honored inside subrepos when archiving. They formerly
only affect the top level repo.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jun 2012 22:45:21 -0400] rev 17107
largefiles: remove a standin check that could never be true
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jun 2012 23:02:51 -0400] rev 17106
largefiles: fix the directory structure when archiving a subrepo in a subrepo
Previously, a repo consisting of main/sub/subsub archived sub and subsub as
siblings under main.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 17 Jun 2012 21:57:48 -0400] rev 17105
largefiles: fix a traceback when archiving a subrepo in a subrepo
This regression was introduced in 43fb170a23bd.
Mads Kiilerich <mads@kiilerich.com> [Thu, 21 Jun 2012 12:50:15 +0200] rev 17104
help: improve hgweb help
The existing help only walked through an example.
Now we first explain the basic rules and then show an example.
The 'collections' example and description only cause confusion and is removed.
Bikeshedded by Patrick Mezard <patrick@mezard.eu>
Patrick Mezard <patrick@mezard.eu> [Mon, 18 Jun 2012 18:19:28 +0200] rev 17103
convert: keep branch switching merges with ancestors (issue3340)
When running convert with a filemap, merge parents which are ancestors
of other parents are ignored. This is hardly a problem when parents
belong to the same branch, but the result could be confusing when named
branches are involved. With:
-o-a1-a2-a3... <- A
\ \
b1-b2-b3...-m- <- B
If all b* revisions are discarded, it is useful to preserve 'm' even if
it is empty after filtering to record the branch switch.
This patch makes filemap preserve "ancestor parents" if there is no
"non-ancestor parent" on the same branch than the merge revision.
Remarks:
- I am not completely convinced by the reasons given above and those
detailed by Matt in this thread:
http://selenic.com/pipermail/mercurial-devel/2012-May/040627.html
The properties we try to preserve are not clearly defined. That said,
I know this patch already helped someone on IRC and the tests output
look reasonable.
- This is a new version of the original "convert: filemap must preserve
fast-forward merges" patch. It has exactly the same output for 2
parents merges, the additional complexity is here to handle more than
two parents.
Angel Ezquerra <angel.ezquerra@gmail.com> [Wed, 13 Jun 2012 23:32:58 +0200] rev 17102
revset: add "diff" field to "matching" keyword
The new "diff" field lets you use the matching revset keyword to find revisions
that apply the same change as the selected revisions.
The match must be exact (i.e. same additions, same deletions, same modified
lines and same change context, same file renames and copies).
Two revisions matching their diff must also match their files. Thus, to match
the diff much faster we will always check that the 'files' match first, and only
then check that the 'diff' matches as well.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 08 Jun 2012 23:27:59 -0400] rev 17101
mq: defer command wrapping to extsetup (API)
mq wraps all commands that are not in commands.norepo, which is now performed in
this second phase of the extensions setup process. This goes against the
current best practices on the wiki [1] as far as where command wrapping is
performed, but follows it regarding where global options are injected.
mq needs to be the first layer called when command dispatching in order to
consistently retarget to the patch repo, regardless of the load order of the
extensions. This means being the last to wrap the command table. Previously,
'hg <extdiff> --mq' would diff the main repo unless mq was enabled after
extdiff.
[1] http://mercurial.selenic.com/wiki/WritingExtensions
Bryan O'Sullivan <bryano@fb.com> [Wed, 04 Jul 2012 09:38:07 -0700] rev 17100
revset: ensure we are reversing a list (issue3530)
Adrian Buehlmann <adrian@cadifra.com> [Tue, 03 Jul 2012 18:02:07 +0200] rev 17099
test-keyword: adapt for Windows
Mads Kiilerich <mads@kiilerich.com> [Wed, 04 Jul 2012 02:04:58 +0200] rev 17098
tests: don't use dates before epoch in test-keyword.t
Timezone offsets of less than a minute is not shown but can cause displayed
dates to be before epoch start - and dates before epoch start is not shown
correctly on Windows (see also 4d5b12a5517b).
These 'negative' dates could be considered undefined behaviour so we don't care
and swap the tests values for timestamp and timezone.
Mads Kiilerich <mads@kiilerich.com> [Wed, 04 Jul 2012 01:45:28 +0200] rev 17097
tests: make test-convert-bzr.t more stable
The test would occasionally fail because datesort don't have sub-second
granularity and thus can't sort commits made in the same second.
The test is made more stable by adding 1 second of sleep to make sure the bzr
commits are done with different timestamps.
Joshua Redstone <joshua.redstone@fb.com> [Wed, 27 Jun 2012 12:37:01 -0700] rev 17096
casecollision: add tests
Add more tests to exercise the case collion detection code
Joshua Redstone <joshua.redstone@fb.com> [Wed, 27 Jun 2012 12:28:26 -0700] rev 17095
dirstate: add dir/file collision test
Add a test exercising collisions in add between files and directories of the
same name.
Joshua Redstone <joshua.redstone@fb.com> [Mon, 18 Jun 2012 08:06:42 -0700] rev 17094
dirstate: factor common update code into _addpath
Factor update code common to all callers of _addpath into _addpath.
By centralizing the update code here, it provides one place to put
updates to new data structures - in a future patch. It also removes
a few lines of duplicate code.
Adrian Buehlmann <adrian@cadifra.com> [Mon, 02 Jul 2012 16:54:01 +0200] rev 17093
test-subrepo-relative-path: partially adapt for Windows
Mads Kiilerich <mads@kiilerich.com> [Tue, 03 Jul 2012 01:49:51 +0200] rev 17092
tests: make rm of usercache in test-largefiles.t more robust
Recursive removal of a different path could be fatal - better avoid recursive
rm completely.
Matt Mackall <mpm@selenic.com> [Sun, 01 Jul 2012 21:20:30 -0500] rev 17091
merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 01 Jul 2012 21:19:57 -0500] rev 17090
merge with crew
Mads Kiilerich <mads@kiilerich.com> [Mon, 02 Jul 2012 01:48:12 +0200] rev 17089
tests: enable test-largefiles.t on Windows MSYS
The 'serve' requirement is moved to the sections that really need it.
$USERCACHE needs quoting.
Adrian Buehlmann <adrian@cadifra.com> [Sat, 30 Jun 2012 19:31:03 +0200] rev 17088
test-largefiles: partially adapt for Windows
The adaption is partial, because "serve" is not yet officially supported in
tests on Windows.
The test passes on Windows with an experimental testbed that supports
hg serve in tests on Windows - except for some USERCACHE issues.
The added (glob)'s are needed because of backslash <-> shlash issues in paths.
Mads Kiilerich <mads@kiilerich.com> [Mon, 02 Jul 2012 01:47:59 +0200] rev 17087
tests: make histedit pass on Windows MSYS
The command file will now be named with $TESTTMP (with '\') instead of `pwd`
(with '/') to avoid wrong path conversions.
Mads Kiilerich <mads@kiilerich.com> [Sat, 30 Jun 2012 03:34:50 +0200] rev 17086
tests: make histedit tests more resilient to filesystem variation
Better quoting of odd filesystem paths and no dependency to execute bit.
Mads Kiilerich <mads@kiilerich.com> [Sat, 30 Jun 2012 03:34:44 +0200] rev 17085
tests: convert histedit tests to .t
Mostly a trivial conversion.
Mads Kiilerich <mads@kiilerich.com> [Sat, 30 Jun 2012 03:34:41 +0200] rev 17084
histedit: use stable iteration order for processing bookmarks
Random dict iteration order caused test failure in
test-histedit-bookmark-motion.t.
Matt Mackall <mpm@selenic.com> [Sun, 01 Jul 2012 21:12:36 -0500] rev 17083
Added signature for changeset b013baa3898e
Matt Mackall <mpm@selenic.com> [Sun, 01 Jul 2012 21:12:31 -0500] rev 17082
Added tag 2.2.3 for changeset b013baa3898e
Matt Mackall <mpm@selenic.com> [Sun, 01 Jul 2012 13:10:54 -0500] rev 17081
record: fix display of non-ASCII names
spotted by Nikolaj Sjujskij
Wagner Bruna <wbruna@yahoo.com> [Sun, 01 Jul 2012 08:09:00 -0300] rev 17080
i18n-pt_BR: synchronized with d63fb1fce977
Wagner Bruna <wbruna@yahoo.com> [Sun, 01 Jul 2012 08:08:37 -0300] rev 17079
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 01 Jul 2012 00:04:46 +0900] rev 17078
i18n-ja: fix some rst syntax problems
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 30 Jun 2012 21:59:16 +0900] rev 17077
i18n-ja: synchronized with 86a3bb9c5f5c
Pierre-Yves.David@ens-lyon.org [Wed, 06 Jun 2012 01:56:58 +0200] rev 17076
obsolete: function and method to access some obsolete data
An `obsolete` boolean property is added to changeset context. Function to get
obsolete marker object from a changeset context are added to the obsolete
module.
Pierre-Yves.David@ens-lyon.org [Thu, 07 Jun 2012 19:21:59 +0200] rev 17075
obsolete: exchange obsolete marker over pushkey
For a version of the exchange, all markers are exchange. This won't
scale and we will need a better protocol later.
Pierre-Yves.David@ens-lyon.org [Thu, 07 Jun 2012 19:20:44 +0200] rev 17074
debugobsolete: list all obsolete marker if no argument are specified
Pierre-Yves.David@ens-lyon.org [Mon, 04 Jun 2012 00:50:19 +0200] rev 17073
obsolete: add easy way to iterate over obsolete marker object
Pierre-Yves.David@ens-lyon.org [Thu, 07 Jun 2012 19:19:58 +0200] rev 17072
obsolete: helper class to access obsolete marker data
Pierre-Yves.David@ens-lyon.org [Thu, 07 Jun 2012 19:15:23 +0200] rev 17071
command: creation of obsolete marker
* add metadata encoding/decoding ability
* add a method to obsstore to help creating marker
* add a debug command to create marker
Pierre-Yves.David@ens-lyon.org [Thu, 07 Jun 2012 19:07:39 +0200] rev 17070
obsolete: introduction of obsolete markers
Markers are stored as binary records in a log structured file in
.hg/store/obsstore.
Augie Fackler <raf@durin42.com> [Thu, 28 Jun 2012 08:45:38 -0500] rev 17069
histedit: mark as a first party extension
Augie Fackler <raf@durin42.com> [Wed, 27 Jun 2012 18:42:48 -0500] rev 17068
histedit: remove use of reduce() builtin spotted by check-code
Augie Fackler <raf@durin42.com> [Wed, 27 Jun 2012 18:41:14 -0500] rev 17067
test-histedit-edit: improve coverage of histedit code
Augie Fackler <raf@durin42.com> [Wed, 27 Jun 2012 18:35:33 -0500] rev 17066
histedit: fix most check-code violations
Augie Fackler <raf@durin42.com> [Wed, 27 Jun 2012 18:34:31 -0500] rev 17065
histedit tests: fix check-code problems
Augie Fackler <raf@durin42.com> [Wed, 27 Jun 2012 17:52:54 -0500] rev 17064
histedit: new extension for interactive history editing
Adrian Buehlmann <adrian@cadifra.com> [Fri, 29 Jun 2012 08:10:43 +0200] rev 17063
exewrapper: use generic term script
The exewrapper doesn't know anything so far about what the script is or does.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 29 Jun 2012 13:12:35 +0200] rev 17062
Makefile: add build_hgexe -i for local
Adrian Buehlmann <adrian@cadifra.com> [Fri, 29 Jun 2012 13:10:48 +0200] rev 17061
setup: compile hg.exe
This implements a new command
$ python setup.py build_hgexe -i
which places the hg.exe in the root of the source tree.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 29 Jun 2012 15:21:35 +0200] rev 17060
test-commit-amend: adapt for Windows after fba17a64fa49
Matt Mackall <mpm@selenic.com> [Fri, 29 Jun 2012 00:40:52 -0500] rev 17059
merge with stable
Adrian Buehlmann <adrian@cadifra.com> [Fri, 29 Jun 2012 00:01:19 +0200] rev 17058
exewrapper: adding new exewrapper.c
Christian Ebert <blacktrash@gmx.net> [Thu, 28 Jun 2012 15:06:41 +0100] rev 17057
keyword: use ui.formatter for kwfiles output
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 22 Jun 2012 12:17:49 +0200] rev 17056
discovery: simplify branchmap construction against legacy server
All necessary data to fire a simple revset query are already known. No call to
ancestors are needed. Such ancestors calculation was already done to compute
outgoing.missing.
Matt Mackall <mpm@selenic.com> [Wed, 27 Jun 2012 13:41:04 -0500] rev 17055
copies: re-include root directory in directory rename detection (issue3511)
Bryan O'Sullivan <bryano@fb.com> [Mon, 25 Jun 2012 15:14:05 -0700] rev 17054
store: sort filenames in place
Mads Kiilerich <mads@kiilerich.com> [Fri, 29 Jun 2012 01:51:48 +0200] rev 17053
convert: check for failed svn import in debugsvnlog and abort cleanly
'hg debugsvnlog' failed with a crash when using the uninitialized transport in
get_log_child if the import of the svn libraries had failed.
'convert' should never get as far as launching 'hg debugsvnlog' if the svn
libraries are missing, but by launching a subprocess there is risk that the
environment is mangled so the second import fails.
It is in principle also possible to launch the command manually.
Mads Kiilerich <mads@kiilerich.com> [Thu, 28 Jun 2012 03:41:37 +0200] rev 17052
convert: accept Subversion 'file:///c%3A/svnrepo' syntax on Windows
Subversion can handle ':' quoted as '%3A' but urllib.url2pathname can't and
Mercurial thus rejected some valid subversions URLs.
This particular case will now be handled by some preprocessing before handing
it over to urllib.url2pathname.
This is tested by 0413f68da85c when test-convert-svn-source.t and
test-convert-svn-move.t can be run on Windows.
Adrian Buehlmann <adrian@cadifra.com> [Mon, 25 Jun 2012 19:26:29 +0200] rev 17051
win32: remove uneeded usage of _STARTF_USESHOWWINDOW
spawndetached() was the only user of _STARTF_USESHOWWINDOW and it creates the
process with _CREATE_NO_WINDOW anyway. If the process has no window, then
there is nothing to hide.
Adrian Buehlmann <adrian@cadifra.com> [Mon, 25 Jun 2012 19:11:29 +0200] rev 17050
win32: specify _CREATE_NO_WINDOW on spawndetached()
Before this change, a console window briefly popped up on "hg serve -d" and
disappeared again, stealing the focus window (which was very annyoing when
running tests).
Specifying _CREATE_NO_WINDOW instead of _DETACHED_PROCESS fixes this (as tested
on Windows 7 x64).
Idan Kamara <idankk86@gmail.com> [Sat, 23 Jun 2012 19:57:29 +0300] rev 17049
amend: disable hooks when creating intermediate commit (issue3501)
Idan Kamara <idankk86@gmail.com> [Sat, 23 Jun 2012 19:57:07 +0300] rev 17048
ui: add a variable to control whether hooks should be called
So hooks can be temporarily disabled.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 28 Jun 2012 18:39:16 +0200] rev 17047
strip: update help to state than you can strip public changeset
Multiple people have been confused by it.
David Schleimer <dschleimer@fb.com> [Fri, 22 Jun 2012 11:40:31 -0700] rev 17046
bookmarks: correctly update current bookmarks on rebase (issue2277)
When you rebased with a currently active bookmark, that bookmark would
always point at the new tip, regardless of what revision it pointed at
before the rebase.
All bookmarks will now point at the equivalent post-rebase commit.
However, the currently active bookmark will cease to be active unless
it points at the new tip post-rebase. Rebase will always leave the
new tip as the working copy parent, which is incompatible with having
an active bookmark that points at some other revision. The common
case should be that the active bookmark will point at the new tip
post-rebase.
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Jun 2012 17:05:55 +0900] rev 17045
graft: don't drop the second parent on unsuccessful merge (issue3498)
This replicates the strategy of rebase, which postpones setparents and
duplicatecopies after checking the merge stats.
Without the second parent, resolve cannot redo merge.
Mads Kiilerich <mads@kiilerich.com> [Wed, 27 Jun 2012 02:34:58 +0200] rev 17044
tests: add missing path globbing for Windows in svn tests
Sune Foldager <cryo@cyanite.org> [Tue, 26 Jun 2012 23:05:25 +0200] rev 17043
fix push of moved bookmark when creating new branch heads
The problem occured when pushing a changeset that at the same time creates a
new named branch head and moves a bookmark. The code invoked methods that only
exist on localrepo instances, so it failed for any other type of remote. The
test suite only tested against local remotes.
Matt Mackall <mpm@selenic.com> [Tue, 26 Jun 2012 15:08:10 -0500] rev 17042
merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 26 Jun 2012 14:50:16 -0500] rev 17041
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Fri, 22 Jun 2012 10:19:56 -0300] rev 17040
i18n-pt_BR: synchronized with f8af57c00a29
Wagner Bruna <wbruna@softwareexpress.com.br> [Fri, 22 Jun 2012 10:14:21 -0300] rev 17039
merge with i18n
Martin Schröder <martinschroeder@vcp-sh.de> [Thu, 21 Jun 2012 18:23:18 +0200] rev 17038
i18n-de: Move policies from header of de.po to http://mercurial.selenic.com/wiki/GermanTranslation
Bryan O'Sullivan <bryano@fb.com> [Fri, 22 Jun 2012 12:00:41 -0700] rev 17037
scmutil: speed up new-style range extension
This improves perfrevset performance by 10% for 2222::33333 on a
kernel repo.
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 26 Jun 2012 14:32:20 +0200] rev 17036
merge with crew-stable
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 26 Jun 2012 14:27:33 +0200] rev 17035
subrepo/svn: make rev number retrieval compatible with svn 1.5 (issue2968)
ae2664ee0223 introduced "svn info TARGET@REV" to determine if a certain
path exists in the specified revision, but in svn 1.5 the error message
"Not a valid URL" yields exit code 0 so the error is not caught.
Use "svn list TARGET@REV" instead which works with svn 1.5 and is even
faster in some situations.
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 26 Jun 2012 12:17:40 +0200] rev 17034
convert/bzr: make tests work with bzr 2.0 again
bzr ci --commit-time was introduced in 2.1
bzr add without -q prints "adding" in 2.1, "added" in 2.0
Mads Kiilerich <mads@kiilerich.com> [Tue, 26 Jun 2012 03:35:22 +0200] rev 17033
tests: cleanup of svn url handling
The subversion tests used different tricks to create properly encoded URLs,
partly due to partial support for different ways of running the tests on
windows. Now we only need/support one way of running the tests on windows.
Windows URLs should look like 'file:///c:/foo%20bar' and on Unix platforms
like 'file:///tmp/baz'.
'pwd' in the test framework will on Windows emit paths like 'c:/foo bar'.
Explicit handling of backslashes in paths is thus no longer needed and is
removed. Paths on windows do however need an extra '/' compared to other
platforms.
This change makes test-subrepo-svn.t pass on windows with msys. Other tests
might need more work.
Eduard-Cristian Stefan <alexandrul.ct@gmail.com> [Sat, 23 Jun 2012 19:54:08 +0300] rev 17032
test-subrepo-svn.t: partially adapt for Windows
hg forget 'notafile*' is changed to use a name that is valid on Windows so we
still get the same error ... but the error message is disabled because it
varies with the Windows version.
Mads Kiilerich <mads@kiilerich.com> [Sun, 24 Jun 2012 17:06:47 +0200] rev 17031
convert: ignore svn:executable for subversion targets without exec bit support
Calling propset/propdel with subversion 1.6 on FAT gave
abort: svn exited with status 256
and made test-convert-hg-svn.t and test-convert-svn-sink.t fail. 1.7 worked.
This is a rework of fdee5d614fcc but ignores the executable bit when it isn't
supported instead of using an approximation.
Mads Kiilerich <mads@kiilerich.com> [Fri, 22 Jun 2012 02:39:52 +0200] rev 17030
tests: add missing 'backup bundle' path glob in test-rebase-collapse.t
Introduced by c8eda7bbdcab.
Mads Kiilerich <mads@kiilerich.com> [Fri, 22 Jun 2012 00:52:14 +0200] rev 17029
tests: add missing 'backup bundle' path glob in test-rebase-scenario-global.t
Introduced by 50f434510da6.
Matt Mackall <mpm@selenic.com> [Thu, 21 Jun 2012 17:37:02 -0500] rev 17028
merge with crew
Martin Geisler <mg@aragost.com> [Thu, 21 Jun 2012 15:10:01 +0200] rev 17027
merge with stable
Dan Villiom Podlaski Christiansen <dan@cabo.dk> [Mon, 18 Jun 2012 11:16:24 +0200] rev 17026
rebase: improve error message on improper phases
The previous error message had two issues: The first issue was that it
wasn't, in fact, an error but a warning, even though it described a
fatal error condition preventing the successful completion of the
command. The second was that it didn't mention the immutable
changesets, leaving the user guessing at the true cause of the error.
The main downside to this change is that we now get an 'abort: can't
abort...' message which technically contradicts itself. In this case,
I blame that on the two uses we have for the word; if it weren't for
backwards compatibility, we could make util.Abort print out 'error:
<whatever>'.
Benjamin Pollack <benjamin@bitquabit.com> [Tue, 12 Jun 2012 09:31:04 -0400] rev 17025
subrepo: support Git being named "git.cmd" on Windows (issue3173)
Popen does not consider "foo.cmd" equivalent to "foo" on Windows.
Unfortunately, the default MSYS Git installation installs only "git.cmd" into
the path by default. This patch probes for both possible names on Windows.
Benjamin Pollack <benjamin@bitquabit.com> [Tue, 12 Jun 2012 09:28:55 -0400] rev 17024
subrepo: warn user if Git is not version 1.6.0 or higher
Adrian Buehlmann <adrian@cadifra.com> [Tue, 19 Jun 2012 19:45:00 +0200] rev 17023
test-http and test-https: partially adapt for Windows
Eduard-Cristian Stefan <alexandrul.ct@gmail.com> [Wed, 20 Jun 2012 02:09:49 +0300] rev 17022
test-subrepo-git.t: adapt for Windows
hg forget 'notafile*' is changed to use a name that is valid on Windows so we
still get the same error ... but the error message is disabled because it
varies with the Windows version.
Adrian Buehlmann <adrian@cadifra.com> [Wed, 20 Jun 2012 18:02:01 +0200] rev 17021
test-bookmarks-pushpull: partially adapt for Windows
The kill call at the end is redundant, as we already have
199: $ hg serve -p $HGPORT -d --pid-file=../hg.pid -E errors.log
200: $ cat ../hg.pid >> $DAEMON_PIDS
So there is nothing left that would not already be killed by the $DAEMON_PIDS
mechanism.
Adrian Buehlmann <adrian@cadifra.com> [Tue, 19 Jun 2012 19:28:55 +0200] rev 17020
test-static-http: partially adapt for Windows
Adrian Buehlmann <adrian@cadifra.com> [Tue, 19 Jun 2012 17:05:04 +0200] rev 17019
test-bad-pull: partially adjust for Windows
On a English Windows 7, the testcase fails with
$ hg clone http://localhost:$HGPORT/ copy
abort: error: No connection could be made because the target machine actively refused it
Since the error message on non-English Windows installs are most likely
different, we have to glob the entire error message away for Windows.
Mads Kiilerich <mads@kiilerich.com> [Thu, 21 Jun 2012 03:05:02 +0200] rev 17018
tests: consistently use printenv.py the same MSYS/Windows-compatible way
This will remove some reasons some tests are disabled on Windows.
Mads Kiilerich <mads@kiilerich.com> [Thu, 21 Jun 2012 03:05:02 +0200] rev 17017
tests: prepare get-with-headers.py for MSYS
get-with-headers.py took the http GET parameter as a command line parameter
that had to start with '/'. MSYS on windows will mangle such paths.
Instead of applying a workaround everywhere (such as an extra '/') we let
get-with-headers.py add the mandatory '/'. That is consistent with the
url path handling in the Mercurial url class.
A few tests sent 'GET ?cmd=...' which is invalid. They will now send 'GET
/?cmd=...'.
This will not enable any tests for being run on windows - only remove one
reason they were disabled.
Mads Kiilerich <mads@kiilerich.com> [Wed, 20 Jun 2012 23:41:21 +0200] rev 17016
tests: hghave outer-repo should be true even if a bad repo is found
Only the abort message 'no repository found' is a reliable indication that
there is no outer repo.
Mads Kiilerich <mads@kiilerich.com> [Wed, 20 Jun 2012 23:41:21 +0200] rev 17015
tests: add missing no-outer-repo requirements
Outer repos (if any) will now never be touched by the tests. But it is better
to run without any repos around the tmp directory.
Mads Kiilerich <mads@kiilerich.com> [Wed, 20 Jun 2012 23:41:21 +0200] rev 17014
tests: convert some 'hghave no-outer-repo' to #if
In some places we instead use 'hg init' to create a well-known outer repo
without any special extensions or other config settings.
Joshua Redstone <joshua.redstone@fb.com> [Fri, 18 May 2012 12:45:47 -0700] rev 17013
strip: incrementally update the branchheads cache after a strip
This function augments strip to incrementally update the branchheads cache
rather than recompute it from scratch. This speeds up the performance of strip
and rebase on repos with long history. The performance optimization only
happens if the revisions stripped are all on the same branch and the parents of
the stripped revisions are also on that same branch.
This adds a few test cases, particularly one that reproduces the extra heads
that mpm observed.
Joshua Redstone <joshua.redstone@fb.com> [Fri, 01 Jun 2012 08:56:17 -0700] rev 17012
localrepo: convert _updatebranchcache from nodespace to revspace
_updatebranchcache used to use revlog.reachable. After the switch to
revlog.ancestors, we can now clean it up a bit and switch the algorithm from
nodes to revs.
Joshua Redstone <joshua.redstone@fb.com> [Fri, 08 Jun 2012 14:23:31 -0700] rev 17011
discovery: convert legacy part of checkheads to revs from nodes
After a recent switch from revlog.reachable to revlog.ancestors,
clean up this old call site, switching it from nodes to revs.
Joshua Redstone <joshua.redstone@fb.com> [Fri, 08 Jun 2012 14:21:32 -0700] rev 17010
transplant: convert applied() algorithm from nodes to revs
After a recent switch from revlog.reachable to revlog.ancestors,
clean up the code a bit to use revs rather than nodes.
Joshua Redstone <joshua.redstone@fb.com> [Fri, 08 Jun 2012 08:39:44 -0700] rev 17009
revlog: remove reachable and switch call sites to ancestors
This change does a trivial conversion of callsites to ancestors.
Followon diffs will switch the callsites over to revs.
Joshua Redstone <joshua.redstone@fb.com> [Fri, 08 Jun 2012 07:59:37 -0700] rev 17008
revlog: add incancestors, a version of ancestors that includes revs listed
ancestors() returns the ancestors of revs provided. This func is like
that except it also includes the revs themselves in the total set of
revs generated.
Adrian Buehlmann <adrian@cadifra.com> [Thu, 14 Jun 2012 11:43:48 +0200] rev 17007
scmutil: change canonpath to use util.samefile (issue2167)
Fixes (on Windows in cmd.exe):
$ hg -R v:\x\a status V:\x\a\bar
abort: V:\x\a\bar not under root
where v:\x\a is a valid repository with a checked-out file "bar"
(Note the difference in casing: "v:\" versus "V:\")
Adrian Buehlmann <adrian@cadifra.com> [Thu, 14 Jun 2012 11:03:20 +0200] rev 17006
win32.py: let samefile and samedevice work on directories too
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Wed, 20 Jun 2012 20:08:57 +0200] rev 17005
rebase: do not add second parent to rebased changeset (drop detach option) (BC)
Rebase now behaves as if --detach was always passed. Non-merges are
rebased as non-merges, regardless of their parent being an ancestor of
the destination. Merges will usually be rebased as merges unless both of
their parents are ancestors of the destination, or one of their parents
is pruned when rebased.
This only alters the behavior of rebase when using the --source/--rev
options. --detach option is deprecated.
All test changes were carefully validated.
Nikolaj Sjujskij <sterkrig@myopera.com> [Wed, 20 Jun 2012 17:40:19 +0400] rev 17004
zsh completion: catch up with 2.2 commands and options
* add completion for phase and graft core commands
* add completion for rebase extension
* add new options for already defined commands:
* commit --amend
* import --bypass
* manifest --all
* merge --tool
* revert -C (short for --no-backup)
* qpush --exact [mq]
* email --body [patchbomb]
Matt Harbison <matt_harbison@yahoo.com> [Tue, 05 Jun 2012 20:35:34 -0400] rev 17003
revset: add a utility for obtaining the source of a given rev
graft, transplant and rebase all embed a different type of source marker in
extra, and each with a different name. The current implementation of each is
such that there will never be more than one of these markers on a node.
Note that the rebase marker can only be resolved if the source is
still present, which excludes the typical rebase usage (without
--keep) from consideration (unless the resulting bundle in
strip-backup is overlayed). There probably isn't any reason to use
rebase --keep as a substitute for transplant or graft at this point,
but maybe there was at one point and there are even a few rebases in
the hg repo, so it may be of historical interest.
Matt Harbison <matt_harbison@yahoo.com> [Sun, 13 May 2012 01:12:26 -0400] rev 17002
revset: add a predicate for finding converted changesets
This selects changesets added because of repo conversions. For example
hg log -r "converted()" # all csets created by a convertion
hg log -r "converted(rev)" # the cset converted from rev in the src repo
The converted(rev) form is analogous to remote(id), where the remote repo is
the source of the conversion. This can be useful for cross referencing an old
repository into the current one.
The source revision may be the short changeset hash or the full hash from the
source repository. The local identifier isn't useful. An interesting
ramification of this is if a short revision is specified, it may cause more
than one changeset to be selected. (e.g. converted(6) matches changesets with
a convert_revision field of 6e..e and 67..0)
The convert.hg.saverev option must have been specified when converting the hg
source repository for this to work. The other sources automatically embed the
converted marker.
Matt Mackall <mpm@selenic.com> [Wed, 20 Jun 2012 12:30:16 -0500] rev 17001
merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 20 Jun 2012 12:29:08 -0500] rev 17000
merge with i18n
Martin Schröder <martinschroeder@vcp-sh.de> [Mon, 18 Jun 2012 20:07:25 +0200] rev 16999
i18n-de: More corrections for translation of default, and other translations
Martin Schröder <martinschroeder@vcp-sh.de> [Fri, 15 Jun 2012 22:07:07 +0200] rev 16998
i18n-de: translate default as Vorgabe
Martin Schröder <martinschroeder@vcp-sh.de> [Fri, 15 Jun 2012 19:17:35 +0200] rev 16997
i18n-de: Update strings, translated many fuzzy strings
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 18 Jun 2012 16:42:52 -0300] rev 16996
i18n-pt_BR: synchronized with 0fdd8193c8b5
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 18 Jun 2012 16:21:31 -0300] rev 16995
merge with i18n
Martin Schröder <martinschroeder@vcp-sh.de> [Mon, 18 Jun 2012 20:07:25 +0200] rev 16994
i18n-de: More corrections for translation of default, and other translations
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 20 Jun 2012 17:04:30 +0200] rev 16993
tests: remove execute permission from two unified test files
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 20 Jun 2012 17:02:43 +0200] rev 16992
graft: allow -r to specify revisions
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 20 Jun 2012 16:49:04 +0200] rev 16991
consistency: use REV instead of REVISION
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 20 Jun 2012 16:46:10 +0200] rev 16990
export: add optional -r to synopsis
It is not already covered by [OPTION]..., because in this case REV... would
need to be marked optional.
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 20 Jun 2012 16:44:21 +0200] rev 16989
strip: add optional -r to synopsis
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 20 Jun 2012 16:43:09 +0200] rev 16988
qimport: use [FILE]... because if -r is used no file is needed
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 20 Jun 2012 16:22:58 +0200] rev 16987
mq: abort if no files or revisions are specified for qimport
Mads Kiilerich <mads@kiilerich.com> [Tue, 19 Jun 2012 01:43:41 +0200] rev 16986
tests: convert some hghave unix-permissions to #if
Mads Kiilerich <mads@kiilerich.com> [Tue, 19 Jun 2012 00:20:38 +0200] rev 16985
tests: run test-walk.t on windows
A couple of detours and changed paths are used to work around msys path conversion.
Mads Kiilerich <mads@kiilerich.com> [Mon, 18 Jun 2012 23:44:11 +0200] rev 16984
tests: better testing of 'glob:glob' in test-walk.t
Mads Kiilerich <mads@kiilerich.com> [Mon, 18 Jun 2012 23:44:11 +0200] rev 16983
tests: move tests in test-walk.t using ':' in filenames to conditional section
eol-in-paths will also protect against testing ':' in filenames on FAT.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 17 Jun 2012 00:27:31 +0200] rev 16982
tests/printenv.py: eliminate trailing spaces on output
Mads Kiilerich <mads@kiilerich.com> [Mon, 18 Jun 2012 23:28:56 +0200] rev 16981
tests: fix test-i18n.t after translation update
Matt Mackall <mpm@selenic.com> [Mon, 18 Jun 2012 13:01:12 -0500] rev 16980
merge with i18n
Martin Schröder <martinschroeder@vcp-sh.de> [Sun, 17 Jun 2012 15:57:35 +0200] rev 16979
Corrected hyphenation, translated subrepo help and other strings
Martin Schröder <martinschroeder@vcp-sh.de> [Fri, 15 Jun 2012 22:07:07 +0200] rev 16978
i18n-de: translate default as Vorgabe
Martin Schröder <martinschroeder@vcp-sh.de> [Fri, 15 Jun 2012 19:17:35 +0200] rev 16977
i18n-de: Update strings, translated many fuzzy strings
Alexander Sauta <demosito@gmail.com> [Fri, 15 Jun 2012 07:47:52 +0100] rev 16976
i18n-ru: synchronized with 2255950e1f76
Mads Kiilerich <mads@kiilerich.com> [Mon, 18 Jun 2012 03:42:28 +0200] rev 16975
tests: remove hghave system-sh from test-pending.t
The alternative would have been to add a unix-permissions requirement.
Mads Kiilerich <mads@kiilerich.com> [Fri, 15 Jun 2012 00:02:27 +0200] rev 16974
tests: use hghave eol-in-paths to test for support for ':' in filenames and " "
It is an approximation but seems to work ok ... and testing that 'foo:bar'
creates a real file and not just a resource fork is not completely trivial.
Mads Kiilerich <mads@kiilerich.com> [Fri, 15 Jun 2012 00:02:27 +0200] rev 16973
tests: use a different evil name in test-hgweb-raw.t
The test used a filename with ':' which prevented the test from running on
Windows and FAT.
It now uses a filename with space and '%' and will thus still exercise proper
url escaping.
Mads Kiilerich <mads@kiilerich.com> [Fri, 15 Jun 2012 00:02:27 +0200] rev 16972
tests: add some missing #if's / hghave requirements
Seen on Linux with FAT.
Mads Kiilerich <mads@kiilerich.com> [Fri, 15 Jun 2012 00:02:27 +0200] rev 16971
tests: introduce hghave hardlinks
Some tests can't be run on FAT filesystems because it doesn't support
hardlinks.
Mads Kiilerich <mads@kiilerich.com> [Fri, 15 Jun 2012 00:02:27 +0200] rev 16970
tests/hghave: test that the inotify unix socket actually can be created
Inotify do not work on FAT filesystems.
Mads Kiilerich <mads@kiilerich.com> [Fri, 15 Jun 2012 00:02:27 +0200] rev 16969
tests/hghave: test that a fifo actually can be created on the filesystem
Some tests were failing on FAT filesystems.
Mads Kiilerich <mads@kiilerich.com> [Fri, 15 Jun 2012 00:02:27 +0200] rev 16968
tests/hghave: consistently use dir='.', prefix=tempprefix for tempfiles
Some feature tests were done in the wrong directory and could thus give the
wrong result.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 15 Jun 2012 17:32:33 +0200] rev 16967
test-merge-tools: adapt for Windows
Adrian Buehlmann <adrian@cadifra.com> [Thu, 14 Jun 2012 12:54:54 +0200] rev 16966
tests/hghave: extract hghave.py
hghave is degraded to a bare script, moving the functions to hghave.py
so they can be shared later on.
Mads Kiilerich <mads@kiilerich.com> [Sat, 16 Jun 2012 21:57:42 +0200] rev 16965
test-alias: adapt for Windows
The test used 'echo' to test '!' style aliases. On Windows 'echo' is handled
by cmd and thus behaves very differently from the 'normal' echo command.
The simple workaround used here for using the same alias on all platforms
is to use 'printf' instead. Msys 'printf' will also handle sh quoting and
escaping in cmd.
Environment variable expansion with sh syntax is handled by launching sh.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 15 Jun 2012 21:42:47 +0200] rev 16964
test-hook: adapt for Windows
Adrian Buehlmann <adrian@cadifra.com> [Fri, 15 Jun 2012 19:59:36 +0200] rev 16963
tests/printenv.py: replace \ with / in output
saves us quite a bunch of (glob)'s
Adrian Buehlmann <adrian@cadifra.com> [Fri, 15 Jun 2012 18:56:16 +0200] rev 16962
test-clone-pull-corruption: adapt for Windows
Adrian Buehlmann <adrian@cadifra.com> [Fri, 15 Jun 2012 15:10:19 +0200] rev 16961
test-merge-tools: inline pointless domerge function
This also uncovers the exit codes of the 'hg merge' calls
Adrian Buehlmann <adrian@cadifra.com> [Fri, 15 Jun 2012 01:02:44 +0200] rev 16960
test-bisect: adapt for Windows
Adrian Buehlmann <adrian@cadifra.com> [Fri, 15 Jun 2012 00:39:21 +0200] rev 16959
test-journal-exists: use #if
Matt Mackall <mpm@selenic.com> [Thu, 14 Jun 2012 15:13:16 -0500] rev 16958
merge with stable
Elifarley Callado Coelho Cruz [Wed, 30 May 2012 21:47:51 -0300] rev 16957
acl: user docs for the "!" prefix in user or group names
Elifarley Callado Coelho Cruz [Mon, 28 May 2012 19:45:15 -0300] rev 16956
acl: use of "!" prefix in user or group names
The "!" prefix allows you to prevent anyone except a given user or group to push
changesets in a given branch or path.
This patch enables a use case suggested by a user (Julien Bonnet):
There's a branch that only a given user (or group) should be able to push to,
and you don't want to restrict access to any other branch that may be created.
With the "!" prefix, you simply deny access to "!givenuser" (or "!@givengroup").
Bryan O'Sullivan <bryano@fb.com> [Wed, 30 May 2012 12:55:33 -0700] rev 16955
parsers: add a C function to pack the dirstate
This is about 9 times faster than the Python dirstate packing code.
The relatively small speedup is due to the poor locality and memory
access patterns caused by traversing dicts and other boxed Python
values.
Eduard-Cristian Stefan <alexandrul.ct@gmail.com> [Fri, 08 Jun 2012 05:31:28 +0300] rev 16954
test-convert: disable autocrlf for git
Adrian Buehlmann <adrian@cadifra.com> [Mon, 11 Jun 2012 11:15:14 +0200] rev 16953
debugwalk: observe ui.slash config option
Adrian Buehlmann <adrian@cadifra.com> [Sat, 09 Jun 2012 14:20:25 +0200] rev 16952
test-commit: remove extra cd ..
This specific cd .. leaves the base directory of the test ($TESTTMP).
Removing it avoids that test artifacts (e.g. files) are created
outside of the base directory.
Martin Geisler <martin@geisler.net> [Wed, 13 Jun 2012 20:14:28 +0200] rev 16951
merge with stable
David Champion <dgc@uchicago.edu> [Tue, 29 May 2012 07:07:10 -0500] rev 16950
notify: various fixes to docstring
Typo corrections, grammar adjustments, clarity improvements.
Mads Kiilerich <mads@kiilerich.com> [Wed, 13 Jun 2012 02:44:46 +0200] rev 16949
help: sort results from keyword search
Mads Kiilerich <mads@kiilerich.com> [Wed, 13 Jun 2012 02:29:47 +0200] rev 16948
tests: reintroduce globs in test-convert-authormap.t
They are needed on windows and were accidentally removed in eaf6a6d7f015.
Matt Mackall <mpm@selenic.com> [Tue, 12 Jun 2012 16:20:38 -0500] rev 16947
merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 12 Jun 2012 16:20:20 -0500] rev 16946
merge with crew
Elifarley Callado Coelho Cruz [Fri, 01 Jun 2012 11:15:00 -0300] rev 16945
tests: removed unneeded section in acl configuration: 'extensions'
Declaring 'acl' in the [extensions] section doesn't change anything.
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 15:26:46 -0700] rev 16944
config: use util.compilere to compile regexps
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 15:26:20 -0700] rev 16943
matcher: use re2 bindings if available
There are two sets of Python re2 bindings available on the internet;
this code works with both.
Using re2 can greatly improve "hg status" performance when a .hgignore
file becomes even modestly complex.
Example: "hg status" on a clean tree with 134K files, where "hg
debugignore" reports a regexp 4256 bytes in size.
no .hgignore: 1.76 sec
Python re: 2.79
re2: 1.82
The overhead of regexp matching drops from 1.03 seconds with stock
re to 0.06 with re2.
(For comparison, a git repo with the same contents and .gitignore
file runs "git status -s" in 1.71 seconds, i.e. only slightly faster
than hg with re2.)
Olav Reinert <seroton10@gmail.com> [Thu, 07 Jun 2012 01:42:50 +0200] rev 16942
help: fix extension commands help in keyword search
This patch fixes the synopsis shown for extension commands in keyword search
results. A previous patch erroneously caused the extension synopsis to be shown
instead.
Test cases for keyword search are missing, so I added a one.
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16941
localrepo: lowercase "unexpected response" message
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16940
ui: lowercase "no username" warning
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16939
ui: lowercase "not trusting file" warning message
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16938
ui: lowercase ConfigError warning message
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16937
cmdutil: lowercase finddate status message
This message is output by 'hg revert -d DATE' and 'hg update -d DATE'.
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16936
bisect: lowercase status message
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16935
serve: lowercase "no repo here" message
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16934
debuginstall: lowercase status messages
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16933
dispatch: lowercase --time message
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16932
win32text: lowercase warning message
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16931
patchbomb: lowercase status messages
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16930
purge: lowercase messages
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16929
mq: lowercase warning messages
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16928
largefiles: lowercase messages
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16927
gpg: lowercase messages
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16926
fetch: lowercase abort message
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16925
convert: lowercase status and abort messages
Martin Geisler <mg@aragost.com> [Tue, 12 Jun 2012 14:18:18 +0200] rev 16924
churn: lowercase message
Martin Geisler <mg@aragost.com> [Mon, 11 Jun 2012 17:45:36 +0200] rev 16923
test-parse-date: move remaining date parsing tests from test-log
Martin Geisler <mg@aragost.com> [Mon, 11 Jun 2012 17:41:55 +0200] rev 16922
test-log: removed tests already covered by test-parse-date
Martin Geisler <mg@aragost.com> [Mon, 11 Jun 2012 17:40:18 +0200] rev 16921
test-parse-date: remove cruft from 8c6f823efcc9
The test contained what looks like a copy-paste mistake.
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 12 Jun 2012 12:10:47 +0200] rev 16920
merge with stable
Thomas Arendsen Hein <thomas@intevation.de> [Tue, 12 Jun 2012 12:05:52 +0200] rev 16919
archive: make progress only show files that are actually archived
Before this, files that are excluded (or not included) were shown when
using progress bar or --debug.
Reported by Andrew Shadura.
Adrian Buehlmann <adrian@cadifra.com> [Mon, 11 Jun 2012 19:57:25 +0200] rev 16918
test-hardlinks: enable for Windows
Adrian Buehlmann <adrian@cadifra.com> [Mon, 11 Jun 2012 19:18:36 +0200] rev 16917
test-command-template: enable for Windows
Adrian Buehlmann <adrian@cadifra.com> [Mon, 11 Jun 2012 19:04:18 +0200] rev 16916
test-rollback: enable for Windows
but without the part that needs serve
Adrian Buehlmann <adrian@cadifra.com> [Mon, 11 Jun 2012 13:41:02 +0200] rev 16915
test-init: enable for Windows
On Windows, we can't create a directory with the name " ", as that is
not a valid name for a directory.
Adrian Buehlmann <adrian@cadifra.com> [Mon, 11 Jun 2012 14:09:35 +0200] rev 16914
test-run-tests: add tests for "#if no-false" and no-true
Mads Kiilerich <mads@kiilerich.com> [Mon, 11 Jun 2012 01:40:51 +0200] rev 16913
tests: add missing trailing 'cd ..'
Many tests didn't change back from subdirectories at the end of the tests ...
and they don't have to. The missing 'cd ..' could always be added when another
test case is added to the test file.
This change do that tests (99.5%) consistently end up in $TESTDIR where they
started, thus making it simpler to extend them or move them around.
Mads Kiilerich <mads@kiilerich.com> [Mon, 11 Jun 2012 01:38:32 +0200] rev 16912
tests: cleanup of tests that got lost in their own nested directories
Some tests ended up in a directory several directories deeper than $TESTTMP,
usually because some 'cd ..' had been forgotten between different test cases.
Add 'cd ..' where they are missing so the tests get back where they started.
Mads Kiilerich <mads@kiilerich.com> [Mon, 11 Jun 2012 01:08:39 +0200] rev 16911
tests: cleanup of tests that ended up outside $TESTTMP
No harm done, but it might confuse later on.
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Jun 2012 18:59:51 +0200] rev 16910
tests: remove 'hghave symlink' from test-import-git.t
The test had a long chain of commits depending on execbits in some of first
commits. The hashes are checked throughout the file, so there was no elegant
way to make it pass both with and without execbits.
We now rollback the execbits-or-not commits and make a stable change instead.
The hash chain is thus updated once but is now a bit more stable. The test
coverage should be unaltered.
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Jun 2012 18:59:13 +0200] rev 16909
tests: remove 'hghave symlink' from test-convert-svn-sink.t
The symlink was present all over the test and could not easily be guarded with
#if.
Symlink testing is now moved to a separate #if section. All the relevant test
coverage should unaltered.
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Jun 2012 18:50:42 +0200] rev 16908
tests: convert some 'hghave symlink' to #if
This will enable some tests for windows.
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Jun 2012 18:50:42 +0200] rev 16907
tests: drop a couple of unnecessary 'hghave symlink'
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Jun 2012 18:50:42 +0200] rev 16906
tests: use the right directory for running hghave from run-tests.py
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Jun 2012 18:50:42 +0200] rev 16905
tests: make .t tests stop immediately if a cd fails
This prevents tests from escaping from TESTTMP as a consequence of a failing
directory creation.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 10 Jun 2012 18:28:42 +0200] rev 16904
test-remove-new: integrate into test-remove.t
Adrian Buehlmann <adrian@cadifra.com> [Sun, 10 Jun 2012 17:35:09 +0200] rev 16903
test-bundle: enable for Windows
Adrian Buehlmann <adrian@cadifra.com> [Sun, 10 Jun 2012 17:10:53 +0200] rev 16902
test-rename.t: enable for Windows
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Jun 2012 14:41:14 +0200] rev 16901
tests: consistently use a HGEDITOR pattern that works with msys on windows
Removing the need for an executable sh script that can be run from a native
windows application enables some tests for running on windows.
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Jun 2012 14:14:52 +0200] rev 16900
tests: glob the remaining 'saved backup bundle to' to prepare for windows
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Jun 2012 14:14:05 +0200] rev 16899
tests: convert some 'hghave execbit' to #if
This enables some new tests for running on windows.
Mads Kiilerich <mads@kiilerich.com> [Sun, 10 Jun 2012 13:01:40 +0200] rev 16898
tests: change odd uses of 'if hghave' to #if
Adrian Buehlmann <adrian@cadifra.com> [Sun, 10 Jun 2012 03:05:59 +0200] rev 16897
tests/run-tests: avoid C:/ in arguments
MSYS replaces C:/... in arguments with C;... as it interprets the C:/ as a
colon separated POSIX path list. The colon is replaced with ; (path separator
on Windows) according to
http://www.mingw.org/wiki/Posix_path_conversion
So we must not replace \ with / for neither $TESTTMP nor $TESTDIR, but we
have to keep replacing \ with / for the Popen4 call of function hghave. If we
don't do the latter, test-run-tests.t will fail with
$ python run-tests.py --local test-run-tests.t
--- C:\Users\adi\hgrepos\hg-main\tests\test-run-tests.t
+++ C:\Users\adi\hgrepos\hg-main\tests\test-run-tests.t.err
@@ -70,6 +70,7 @@
tested
#else
$ echo skipped
+ skipped
#endif
#if false
An additional tweak in test-ssh.t is needed that globs away an encoded path,
as it can't be translated back to $TESTTMP, because the backslashes in the
output have been already encoded as %5C.
This patch makes test-ssh.t pass in MSYS on Windows.
Adrian Buehlmann <adrian@cadifra.com> [Sat, 09 Jun 2012 14:20:25 +0200] rev 16896
test-commit: remove extra cd ..
This specific cd .. leaves the base directory of the test ($TESTTMP).
Removing it avoids that test artifacts (e.g. files) are created
outside of the base directory.
Olav Reinert <seroton10@gmail.com> [Fri, 08 Jun 2012 23:37:11 +0200] rev 16895
help: test keyword search in translated text.
Tests that help keyword search is able to search the translated help text when
using a non-English language.
Eduard-Cristian Stefan <alexandrul.ct@gmail.com> [Fri, 08 Jun 2012 05:49:50 +0300] rev 16894
test-mq-subrepo-svn: enable for Windows
Eduard-Cristian Stefan <alexandrul.ct@gmail.com> [Fri, 08 Jun 2012 05:37:06 +0300] rev 16893
test-convert-git: remove the read-only attribute of repository files
Git object files are stored read-only in the filesystem. Trying to remove a
read-only file on windows will fail with access denied, so we have to make them
writeable before they can be removed.
Eduard-Cristian Stefan <alexandrul.ct@gmail.com> [Fri, 08 Jun 2012 05:31:28 +0300] rev 16892
test-convert: disable autocrlf for git
Git might have autocrlf=true as a global or default setting, especially on
windows. That is not expected in the tests and can cause
+ warning: LF will be replaced by CRLF in d/b.
+ The file will have its original line endings in your working directory.
Explicitly setting it false will make the test pass in some setups - but still
not out of the box.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 08 Jun 2012 15:11:05 +0200] rev 16891
tests/hghave: implement #if true / #if false
For unconditionally testing / skipping a section. Useful for testing the test
infrastructure in test-run-tests.t and for debugging/developing tests.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 08 Jun 2012 15:11:05 +0200] rev 16890
tests/run-tests: use $TMP on Windows (issue3490)
This is just a short-term workaround for that issue. More work needs to be
done on scmutil.canonpath & friends.
$TMP on Windows is specified to be defined, and it has correct casing, so we
can use that as the default dir for tempfile.mkdtemp on Windows.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 08 Jun 2012 15:11:05 +0200] rev 16889
test-import: enable for Windows
Adrian Buehlmann <adrian@cadifra.com> [Fri, 08 Jun 2012 15:11:05 +0200] rev 16888
test-import: remove unneeded chmod call
As pointed out by Mads, setting the x bit on dummypatch.py is unneeded, because
it is called with 'python ../dummypatch.py'.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 08 Jun 2012 15:11:05 +0200] rev 16887
test-log: enable for Windows
Adrian Buehlmann <adrian@cadifra.com> [Fri, 08 Jun 2012 15:11:05 +0200] rev 16886
test-revert: enable for Windows
Thomas Arendsen Hein <thomas@intevation.de> [Thu, 07 Jun 2012 15:55:12 +0200] rev 16885
merge heads
Thomas Arendsen Hein <thomas@intevation.de> [Thu, 07 Jun 2012 15:54:40 +0200] rev 16884
help: fix 'hg help -k' matching an extension without docs
getattr is not needed, __doc__ always exists and defaults to None
Brad Hall <bhall@fb.com> [Mon, 04 Jun 2012 14:46:42 -0700] rev 16883
revlog: zlib.error sent to the user (issue3424)
Give the user the zlib error message instead of a backtrace when decompression
fails.
Alexander Boyd <alex@opengroove.org> [Sat, 09 Jun 2012 19:13:24 -0600] rev 16882
statichttprepo: don't send Range header when requesting entire file
When requesting files using statichttprepo.httprangereader, a request for the
entire file is sent with a Range: bytes=0- header. This causes problems with
web servers such as Cherokee that return an HTTP 416 when an empty file is
requested in this way, which in turn cause some repository clone attempts to
fail. This patch omits the Range header when the entire file is being
requested, which fixes the problem.
Matt Mackall <mpm@selenic.com> [Wed, 06 Jun 2012 21:17:33 -0500] rev 16881
merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 06 Jun 2012 21:17:20 -0500] rev 16880
merge with i18n
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 05 Jun 2012 10:09:17 -0300] rev 16879
merge with i18n
Alexander Sauta <demosito@gmail.com> [Tue, 05 Jun 2012 07:57:04 +0100] rev 16878
i18n-ru: synchronized with 4cf41c333e74
Kevin Bullock <kbullock@ringworld.org> [Tue, 05 Jun 2012 13:33:52 -0500] rev 16877
update: fix help regarding update to ancestor
As pointed out on the user mailing list, hg will update just as happily
to an ancestor if there are uncommitted changes as to a descendant.
Jim Hague <jim.hague@acm.org> [Wed, 06 Jun 2012 16:44:17 +0100] rev 16876
bugzilla: stop bugs always being marked as fixed in xmlrpc (issue3484)
Bugs should only be marked fixed if the comment parser gives them the
fixed state. xmlrpc+email got this right, xmlrpc screwed it up.
Adrian Buehlmann <adrian@cadifra.com> [Tue, 05 Jun 2012 22:46:14 +0200] rev 16875
test-add: enable for Windows
Adrian Buehlmann <adrian@cadifra.com> [Tue, 05 Jun 2012 23:13:45 +0200] rev 16874
test-addremove: remove bits about con.xml
Windows reserved filename warnings are already enough tested in test-add.t.
This enables the test for Windows.
Bryan O'Sullivan <bryano@fb.com> [Tue, 05 Jun 2012 16:52:20 -0700] rev 16873
util: simplify queue management in chunkbuffer
This also fixes a small wire protocol performance regression.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 27 May 2012 18:25:04 +0200] rev 16872
hghave: wrap command in 'sh -c "..."' for has_pyflakes()
Without this, the has_pyflakes() check always fails in MSYS on Windows.
Matt Mackall <mpm@selenic.com> [Mon, 04 Jun 2012 17:57:57 -0500] rev 16871
merge with stable
Olav Reinert <seroton10@gmail.com> [Tue, 05 Jun 2012 00:32:18 +0200] rev 16870
help: fix keyword search result formatting
This patch fixes the broken formatting of keyword search results. Some blank
lines were missing from the RST markup, which caused markup to be printed.
Matt Mackall <mpm@selenic.com> [Mon, 04 Jun 2012 17:22:09 -0500] rev 16869
help: drop -a from heads syntax summary (issue3483)
Joshua Redstone <joshua.redstone@fb.com> [Fri, 01 Jun 2012 15:44:13 -0700] rev 16868
revlog: add optional stoprev arg to revlog.ancestors()
This will be used as a step in removing reachable() in a future diff.
Doing it now because bryano is in the process of rewriting ancestors in
C. This depends on bryano's patch to replace *revs with revs in the
declaration of revlog.ancestors.
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 12:45:16 -0700] rev 16867
revlog: descendants(*revs) becomes descendants(revs) (API)
Once again making the API more rational, as with ancestors.
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 12:37:18 -0700] rev 16866
revlog: ancestors(*revs) becomes ancestors(revs) (API)
Accepting a variable number of arguments as the old API did is
deeply ugly, particularly as it means the API can't be extended
with new arguments. Partly as a result, we have at least three
different implementations of the same ancestors algorithm (!?).
Most callers were forced to call ancestors(*somelist), adding to
both inefficiency and ugliness.
Angel Ezquerra <angel.ezquerra@gmail.com> [Tue, 29 May 2012 23:26:55 +0200] rev 16865
config: make sortdict keys() and iterkeys() methods respect the item order
The config.sortdict class is a simple "sorted dictionary" container
class, based on python's regular dict container. The main difference
compared to regular dicts is that sortdicts remember the order in
which items have been added to it.
Without this patch the items() method returns the sortdict elements in
the right order. However, getting the list of keys by using the keys()
or iterkeys() methods, and consequencly, looping through the container
elements in a for loop does not respect that order. This patch fixes
this problem.
Matt Mackall <mpm@selenic.com> [Mon, 04 Jun 2012 16:59:57 -0500] rev 16864
merge with stable
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 15:19:08 -0700] rev 16863
parsers: replace magic number 64 with symbolic constant
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 15:50:22 -0700] rev 16862
revset: introduce and use _revsbetween
This is similar in spirit to revlog.nodesbetween, but less ambitious,
much simpler, and ~2x faster.
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 15:50:22 -0700] rev 16861
revset: implement dagrange directly
This is much faster than the older implementation (~8x).
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 15:50:22 -0700] rev 16860
revset: turn dagrange into a function
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 15:50:22 -0700] rev 16859
revset: drop unreachable code
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 15:50:22 -0700] rev 16858
perf: add a benchmark for revrange
Adrian Buehlmann <adrian@cadifra.com> [Mon, 04 Jun 2012 21:40:38 +0200] rev 16857
test-tags: enable for Windows
It turns out that MSYS does have a chmod.exe, but it has no effect. So, the
inserted "#if unix-permissions" is somewhat redundant, as the test would pass
without it as well: it would simply write the tag cache, despite what the
comment says.
But I'm actually in favor of inserting the #if, as it makes it clearer what's
going on.
Adrian Buehlmann <adrian@cadifra.com> [Mon, 04 Jun 2012 21:09:54 +0200] rev 16856
tests: roll test-copy2.t into test-copy.t
Olav Reinert <seroton10@gmail.com> [Sun, 03 Jun 2012 17:49:04 +0200] rev 16855
help: fix keyword search output for extension commands
This patch fixes the help keyword search "hg help -k" to show correct results
in the section listing extension commands.
Olav Reinert <seroton10@gmail.com> [Sat, 02 Jun 2012 11:28:43 +0200] rev 16854
help: format all output using RST
This change is the last patch needed to implement help text generation based
only on formatting a single text object marked up with RST.
Olav Reinert <seroton10@gmail.com> [Sat, 02 Jun 2012 11:25:40 +0200] rev 16853
help: format command and option list help using RST
This patch changes the function which generates help text about commands and
options to use RST formatting. Tables describing options have been formatted
using RST table markup for some time already, so their appearance does not
change. Command lists, however, change appearance.
To format non-verbose command lists, RST field list markup was chosen, because
it resembles the old format:
<http://docutils.sourceforge.net/docs/user/rst/quickref.html#field-lists>
In the old (hand-coded) format of non-verbose command lists, the left column is
12 characters wide. Our minirst implementation formats field lists with a left
column 14 characters wide, so this patch changes the appearance of help output
correspondingly:
<http://markmail.org/message/krl4cxopsnii7s6z?q=mercurial+reinert+from:%22Olav+Reinert%22&page=2>
The minirst markup most closely resembling the old verbose command lists is
definition lists. But using it would cause a blank line to be inserted between
each command definition, making the output excessively long, and no more
useful than before. To avoid this, I chose to use field lists also for verbose
command help, resulting in output like this example:
add add the specified files on the next commit
annotate, blame
show changeset information by line for each file
clone make a copy of an existing repository
commit, ci commit the specified files or all outstanding changes
diff diff repository (or selected files)
export dump the header and diffs for one or more changesets
forget forget the specified files on the next commit
init create a new repository in the given directory
log, history show revision history of entire repository or files
merge merge working directory with another revision
phase set or show the current phase name
pull pull changes from the specified source
push push changes to the specified destination
qdiff diff of the current patch and subsequent modifications
qinit init a new queue repository (DEPRECATED)
qnew create a new patch
qpop pop the current patch off the stack
qpush push the next patch onto the stack
qrefresh update the current patch
remove, rm remove the specified files on the next commit
serve start stand-alone webserver
status, st show changed files in the working directory
summary, sum summarize working directory state
update, up, checkout, co
update working directory (or switch revisions)
This change is a move towards generating all help text as a list of strings
marked up with RST.
Olav Reinert <seroton10@gmail.com> [Sat, 02 Jun 2012 11:22:33 +0200] rev 16852
help: format extension lists using RST
This change is a move towards generating all help text as a list of strings
marked up with RST.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 03 Jun 2012 09:06:15 +0200] rev 16851
test-revset: enable for Windows
In MSYS, the test fails like this if the hghave exit at the beginning is
removed:
--- C:\Users\adi\hgrepos\hg-main\tests\test-revset.t
+++ C:\Users\adi\hgrepos\hg-main\tests\test-revset.t.err
@@ -58,7 +58,7 @@
$ hg co 3
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg branch /a/b/c/
- marked working directory as branch /a/b/c/
+ marked working directory as branch a:/b/c/
(branches are permanent and global, did you want a bookmark?)
$ hg ci -Aqm"5 bug"
@@ -252,7 +252,7 @@
2 a-b-c-
3 +a+b+c+
4 -a-b-c-
- 5 /a/b/c/
+ 5 a:/b/c/
6 _a_b_c_
7 .a.b.c.
$ log 'children(ancestor(4,5))'
due to the posix path conversion done by MSYS globally, as explained here
http://www.mingw.org/wiki/Posix_path_conversion
The solution is a bit lame, but it is simple and works: don't use strings that
look like '/a/b', in order not to trigger the path magic done by MSYS.
So, if we can agree not to insist on testing branch names starting with '/',
then this relatively simple patch makes the test pass both on Windows with MSYS
and Linux.
Idan Kamara <idankk86@gmail.com> [Mon, 04 Jun 2012 15:43:16 +0300] rev 16850
graft: restore config option on correct ui
Adrian Buehlmann <adrian@cadifra.com> [Mon, 04 Jun 2012 18:40:31 +0200] rev 16849
tests: roll test-commit-copy.t into test-commit.t
Adrian Buehlmann <adrian@cadifra.com> [Mon, 04 Jun 2012 16:59:34 +0200] rev 16848
base85: cast Py_ssize_t values to int (issue3481)
If it outputs a nonsense value, no harm done, it was nonsense to start with.
Adrian Buehlmann <adrian@cadifra.com> [Mon, 04 Jun 2012 19:05:22 +0200] rev 16847
tests: roll test-clone-failure.t into test-clone.t
Adrian Buehlmann <adrian@cadifra.com> [Fri, 01 Jun 2012 13:38:18 +0200] rev 16846
test-clone-failure: enable for Windows using #if
Nikolaj Sjujskij <sterkrig@myopera.com> [Mon, 04 Jun 2012 10:45:56 +0400] rev 16845
help: fix search with `-k` option in non-ASCII locales
Keyword search in help (introduced in 497deec204d1 and a17983680f12 by Augie
Fackler) tries to translate already translated strings, which results in
Unicode errors in gettext when non-ASCII locale is used. Also command
descriptions should be translated before searching there (thanks to FUJIWARA
Katsunori for pointing this out and actual fix), (issue3482).
wujek srujek <wujek.srujek@googlemail.com> [Mon, 04 Jun 2012 18:03:23 +0200] rev 16844
hgweb: fixes linebreak location in gitweb filediff.tmpl view
It is consistent with other templates now and doesn't cause the help link to
(incorrectly) appear on the next line.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 03 Jun 2012 19:35:45 +0200] rev 16843
test-paths.t: enable for Windows using #if
If the no-msys exit at the beginning is removed, the test fails on Windows with
MSYS with:
--- C:\Users\adi\hgrepos\hg-main\tests\test-paths.t
+++ C:\Users\adi\hgrepos\hg-main\tests\test-paths.t.err
@@ -24,7 +24,7 @@
expand = $TESTTMP/a/foo/bar (glob)
$ SOMETHING=/foo hg paths
dupe = $TESTTMP/b (glob)
- expand = /foo/bar
+ expand = c:/MinGW/msys/1.0/foo/bar
$ hg paths -q
dupe
expand
caused by http://www.mingw.org/wiki/Posix_path_conversion .
Mads Kiilerich <mads@kiilerich.com> [Fri, 01 Jun 2012 02:25:12 +0200] rev 16842
tests: introduce c-style conditional sections in .t tests
This makes it possible to have conditional sections like:
#if windows
$ echo foo
foo
#else
$ echo bar
bar
#endif
The directives and skipped sections are treated like comments, so don't
interleave them with commands and their output.
The parameters to #if are evaluated while preparing the test by passing them
over to hghave. Requirements can thus be negated with 'no-' prefix, and
multiple requirements must all be true to return true.
Adrian Buehlmann <adrian@cadifra.com> [Wed, 30 May 2012 14:28:57 +0200] rev 16841
run-tests: don't add python lines to expected dict
For test input lines of *.t files starting with ' >>> ', the code block for
' >>> '
609: if l.startswith(' >>> '): # python inlines
610: after.setdefault(pos, []).append(l)
was (unsurprisingly) executed, but because there was an "if" instead of an
"elif" on the condition "l.startswith(' ... ')", program execution proceeded
to line 636
635: elif l.startswith(' '): # results
636: # queue up a list of expected results
637: expected.setdefault(pos, []).append(l[2:])
due to the fact that if l starts with ' >>> ' it also starts with ' '.
The net effect was that python command lines in *.t files were (surprisingly)
also added to the "expected" dict.
This caused no externally observable bad behavior, as the "expected" dict was
not consulted for these lines.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 03 Jun 2012 19:35:23 +0200] rev 16840
run-test: replace backslashes in TESTDIR
This may cause troubles in MSYS on Windows.
Adrian Buehlmann <adrian@cadifra.com> [Fri, 25 May 2012 14:24:07 +0200] rev 16839
dispatch: tolerate non-standard version strings in tuplever() (issue3470)
When developing, we may see non-standard version strings of the form
5d64306f39bb+20120525
which caused tuplever() to raise
ValueError: invalid literal for int() with base 10: '5d64306f39bb'
and shadowing the real traceback.
Patrick Mezard <patrick@mezard.eu> [Thu, 24 May 2012 13:05:06 +0200] rev 16838
revset: cache alias expansions
Caching has no performance effect on the revset aliases which triggered
the recent recursive evaluation bug. I wrote it not to feel bad about
expanding several times the same complicated expression.
Adrian Buehlmann <adrian@cadifra.com> [Thu, 24 May 2012 01:30:12 +0200] rev 16837
base85: use Py_ssize_t for string lengths
David Schleimer <dschleimer@fb.com> [Tue, 22 May 2012 15:17:37 -0700] rev 16836
hg-ssh: read-only flag
Allows you to restrict a ssh key to have read-only access to a set of
repos by passing the --read-only flag to hg-ssh.
This is useful in an environment where the number of unix users you
can or are willing to create is limited. In such an environment,
multiple users or applications will share a single unix account. Some
of those applications will likely need read-only access to the
repository. This change makes it possible to grant them such access
without requiring that they use a separate unix account.
Levi Bard <levi@unity3d.com> [Sun, 13 May 2012 10:21:27 +0200] rev 16835
bookmarks: allow existing remote bookmarks to become heads when pushing
Bryan O'Sullivan <bryano@fb.com> [Fri, 01 Jun 2012 17:05:31 -0700] rev 16834
util: subclass deque for Python 2.4 backwards compatibility
It turns out that Python 2.4's deque type is lacking a remove method.
We can't implement remove in terms of find, because it doesn't have
find either.
Matt Mackall <mpm@selenic.com> [Sat, 02 Jun 2012 15:35:53 -0500] rev 16833
merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 01 Jun 2012 23:48:27 -0500] rev 16832
Added signature for changeset 85a358df5bbb
Matt Mackall <mpm@selenic.com> [Fri, 01 Jun 2012 23:48:22 -0500] rev 16831
Added tag 2.2.2 for changeset 85a358df5bbb
Matt Mackall <mpm@selenic.com> [Fri, 01 Jun 2012 23:44:10 -0500] rev 16830
localrepo: move filecache clearing into invalidate
Moving from self.destroy to _rollback fixed rollback fixed rollback
but broke mq. Move it lower rather than sideways.
Matt Mackall <mpm@selenic.com> [Fri, 01 Jun 2012 23:42:27 -0500] rev 16829
strip: move bookmark deletion before strip to deal with filecache invalidation
Matt Mackall <mpm@selenic.com> [Fri, 01 Jun 2012 15:14:29 -0500] rev 16828
merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 01 Jun 2012 15:14:13 -0500] rev 16827
merge with i18n
Wagner Bruna <wbruna@yahoo.com> [Thu, 31 May 2012 21:47:40 -0300] rev 16826
i18n-pt_BR: synchronized with 2a0efa1112ac
Matt Mackall <mpm@selenic.com> [Fri, 01 Jun 2012 15:13:05 -0500] rev 16825
revset: avoid validating all tag nodes for tag(x)
This generally causes the entire node->rev table to get built when
we're only interested in one node.
Simon King <simon@simonking.org.uk> [Wed, 30 May 2012 23:14:04 +0100] rev 16824
revset: add pattern matching to 'extra' revset expression
Simon King <simon@simonking.org.uk> [Wed, 30 May 2012 23:13:58 +0100] rev 16823
revset: add pattern matching to the 'user' revset expression
Simon King <simon@simonking.org.uk> [Wed, 30 May 2012 23:13:33 +0100] rev 16822
revset: add pattern matching to 'bookmarks' revset expression
Simon King <simon@simonking.org.uk> [Wed, 30 May 2012 23:13:33 +0100] rev 16821
revset: add pattern matching to 'branch' revset expression
Simon King <simon@simonking.org.uk> [Wed, 30 May 2012 23:13:33 +0100] rev 16820
revset: add pattern matching to 'tag' revset expression
If the string provided to the 'tag' predicate starts with 're:', the rest
of the string will be treated as a regular expression and matched against
all tags in the repository.
There is a slight backwards-compatibility problem for people who actually
have tags that start with 're:'. As a workaround, these tags can be matched
using a 'literal:' prefix.
If no tags match the pattern, an error is raised. This matches the behaviour
of the previous exact-match code.
Simon King <simon@simonking.org.uk> [Wed, 30 May 2012 23:13:33 +0100] rev 16819
revset: add helper function for matching strings to patterns
Olav Reinert <seroton10@gmail.com> [Fri, 01 Jun 2012 12:35:30 +0200] rev 16818
help: format command help using RST
Olav Reinert <seroton10@gmail.com> [Fri, 01 Jun 2012 12:15:45 +0200] rev 16817
help: format topic help using RST
Olav Reinert <seroton10@gmail.com> [Fri, 01 Jun 2012 12:01:33 +0200] rev 16816
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com> [Fri, 01 Jun 2012 11:58:23 +0200] rev 16815
minirst: generate tables as a list of joined lines
Bryan O'Sullivan <bryano@fb.com> [Thu, 31 May 2012 20:55:30 -0700] rev 16814
scmutil: seen.union should be seen.update (issue3476)
Patrick Mezard <patrick@mezard.eu> [Fri, 01 Jun 2012 17:37:56 +0200] rev 16813
patch: keep patching after missing copy source (issue3480)
When applying a patch renaming/copying 'a' to 'b' on a revision where
'a' does not exist, the patching process would abort immediately,
without processing the remaining hunks and without reporting it. This
patch makes the patching no longer abort and possible hunks applied on
the copied/renamed file be written in reject files.
Christian Ebert <blacktrash@gmx.net> [Sat, 26 May 2012 20:49:51 +0200] rev 16812
keyword: update copyleft
Christian Ebert <blacktrash@gmx.net> [Sat, 26 May 2012 20:49:44 +0200] rev 16811
keyword: wlock cmdutil.copy wrapper
Expanding/shrinking happens outside the wrapped copy function;
therefore write lock the repo.
Christian Ebert <blacktrash@gmx.net> [Sat, 26 May 2012 20:46:12 +0200] rev 16810
keyword: support commit --amend (issue3471)
Include a test as well.
Christian Ebert <blacktrash@gmx.net> [Fri, 25 May 2012 19:32:29 +0200] rev 16809
keyword: rename kwt.record attribute to kwt.postcommit
A more general descriptive name, as the attribute will be used
for commit --amend as well.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 27 May 2012 11:30:03 +0200] rev 16808
scmutil: use _winreg.HKEY_LOCAL_MACHINE
Adrian Buehlmann <adrian@cadifra.com> [Sun, 27 May 2012 11:29:52 +0200] rev 16807
win32: move lookupreg() to windows.py
lookupreg() doesn't use the win32 API directly any more, it uses the Python
standard library module _winreg.
Adrian Buehlmann <adrian@cadifra.com> [Sun, 27 May 2012 11:29:45 +0200] rev 16806
win32: use Python's _winreg again
This is a partial backout of f1fa8f481c7c.
f1fa8f481c7c switched win32.py to using ctypes with the intention to get rid
of the dependency on the pywin32 package.
But f1fa8f481c7c replaced the usage of the Python standard module _winreg in
lookup_reg as well, which was uneeded (note that lookup_reg was later renamed
into lookupreg).
Basically, we're switching back to the previous _winreg-based implementation,
which uses _winreg.QueryValueEx(). QueryValueEx returns a unicode code string.
See also: issue3467
Idan Kamara <idankk86@gmail.com> [Tue, 29 May 2012 18:27:12 +0300] rev 16805
localrepo: clear _filecache earlier to really force reloading (issue3462)
ce0ad184f489 attempted to force the filecaches in localrepo to reload
everything after a rollback. But simply clearing _filecache isn't enough,
invalidate() needs to be called before/after. localrepo._rollback calls
invalidate() already, so we clear the map right afterwards which ensures
everything will be reread.
Bryan O'Sullivan <bryano@fb.com> [Wed, 30 May 2012 13:57:41 -0700] rev 16804
lsprof: report units correctly
Bryan O'Sullivan <bryano@fb.com> [Tue, 15 May 2012 10:46:23 -0700] rev 16803
cleanup: use the deque type where appropriate
There have been quite a few places where we pop elements off the
front of a list. This can turn O(n) algorithms into something more
like O(n**2). Python has provided a deque type that can do this
efficiently since at least 2.4.
As an example of the difference a deque can make, it improves
perfancestors performance on a Linux repo from 0.50 seconds to 0.36.
Bryan O'Sullivan <bryano@fb.com> [Tue, 15 May 2012 10:44:17 -0700] rev 16802
perf: add a perfancestors benchmark
Matt Mackall <mpm@selenic.com> [Wed, 30 May 2012 14:31:51 -0500] rev 16801
merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 30 May 2012 14:31:39 -0500] rev 16800
merge with crew
Matt Mackall <mpm@selenic.com> [Wed, 30 May 2012 14:31:29 -0500] rev 16799
merge with i18n
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 29 May 2012 21:32:50 +0900] rev 16798
i18n-ja: synchronized with 2478594b37c2
Alexander Sauta <demosito@gmail.com> [Sun, 27 May 2012 15:37:36 +0100] rev 16797
i1n-ru:synchronized with b748106fe616
Wagner Bruna <wbruna@yahoo.com> [Sun, 27 May 2012 09:52:25 -0300] rev 16796
i18n-pt_BR: synchronized with 0a730d3c5aae
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 23 May 2012 21:34:29 +0200] rev 16795
merge: show renamed on one and deleted on the other side in debug output
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 23 May 2012 20:50:16 +0200] rev 16794
merge: warn about file deleted in one branch and renamed in other (issue3074)
For divergent renames the following message is printed during merge:
note: possible conflict - file was renamed multiple times to:
newfile
file2
When a file is renamed in one branch and deleted in the other, the file still
exists after a merge. With this change a similar message is printed for mv+rm:
note: possible conflict - file was deleted and renamed to:
newfile
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 23 May 2012 17:33:19 +0200] rev 16793
tests: do not create repos inside repos in test-rename-merge1.t
This is no actual problem, but I when adding more tests to this file,
the directory structure would become t/repo2089/repoXXXX/repoYYYY/...
Thomas Arendsen Hein <thomas@intevation.de> [Wed, 23 May 2012 17:25:48 +0200] rev 16792
merge: do not warn about copy and rename in the same transaction (issue2113)
Matt Mackall <mpm@selenic.com> [Wed, 30 May 2012 14:21:58 -0500] rev 16791
merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 30 May 2012 14:13:57 -0500] rev 16790
revpair: handle odd ranges (issue3474)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 23 May 2012 00:25:29 +0900] rev 16789
match: make 'match.files()' return list object always
'exact' match objects are sometimes created with a non-list 'pattern'
argument:
- using 'set' in queue.refresh():hgext/mq.py
match = scmutil.matchfiles(repo, set(c[0] + c[1] + c[2] + inclsubs))
- using 'dict' in revert():mercurial/cmdutil.py (names = {})
m = scmutil.matchfiles(repo, names)
'exact' match objects return specified 'pattern' to callers of
'match.files()' as it is, so it is a non-list object.
but almost all implementations expect 'match.files()' to return a list
object, so this may causes problems: e.g. exception for "+" with
another list object.
this patch ensures that '_files' of 'exact' match objects is a list
object.
for non 'exact' match objects, parsing specified 'pattern' already
ensures that it it a list one.
Bryan O'Sullivan <bryano@fb.com> [Wed, 16 May 2012 13:45:46 -0700] rev 16788
perf: add a perfdirstatewrite benchmark
Bryan O'Sullivan <bryano@fb.com> [Sat, 19 May 2012 20:21:48 -0700] rev 16787
parsers: cache the result of index_headrevs
Although index_headrevs is much faster than its Python counterpart,
it's still somewhat expensive when history is large. Since headrevs
is called several times when the tag cache is stale or missing (e.g.
after a strip or rebase), there's a win to be gained from caching
the result, which we do here.
Bryan O'Sullivan <bryano@fb.com> [Sat, 19 May 2012 19:44:58 -0700] rev 16786
revlog: switch to a C version of headrevs
The C implementation is more than 100 times faster than the Python
version (which is still available as a fallback).
In a repo with 330,000 revs and a stale .hg/cache/tags file, this
patch improves the performance of "hg tip" from 2.2 to 1.6 seconds.
Bryan O'Sullivan <bryano@fb.com> [Sat, 19 May 2012 19:44:23 -0700] rev 16785
perf: rework perfheads and perftags to clear caches
The cache clearing makes numbers more reproducible.
Bryan O'Sullivan <bryano@fb.com> [Sat, 19 May 2012 19:44:18 -0700] rev 16784
parsers: reduce raw_length when truncating
When stripping revs, we now update raw_length to correctly reflect
the new end of the index.
Olav Reinert <seroton10@gmail.com> [Tue, 22 May 2012 22:08:41 +0200] rev 16783
help: inline helper function used once only
Olav Reinert <seroton10@gmail.com> [Tue, 22 May 2012 22:08:41 +0200] rev 16782
help: remove redundant parameter
Olav Reinert <seroton10@gmail.com> [Tue, 22 May 2012 22:08:41 +0200] rev 16781
help: move some helper functions to help.py
Olav Reinert <seroton10@gmail.com> [Tue, 22 May 2012 22:08:41 +0200] rev 16780
help: remove dependency on ui from some helper functions
David Schleimer <dschleimer@fb.com> [Mon, 21 May 2012 16:19:30 -0700] rev 16779
hg-ssh: refactor to have main() method
Refactor hg-ssh to have a main() function instead of a bunch of
top-level statements.