Idan Kamara <idankk86@gmail.com> [Tue, 28 Feb 2012 01:07:55 +0200] rev 16189
update: don't move the active bookmark if a rev is specified with -r
Patrick Mezard <patrick@mezard.eu> [Mon, 27 Feb 2012 18:23:18 +0100] rev 16188
mq: fix qapplied --last and qprev documentation (
issue3282)
qapplied --last is qprev not qtop.
v2:
- Replace "previous" with "preceding" as suggested here and there
Greg Ward <greg@gerg.ca> [Mon, 27 Feb 2012 08:54:26 -0500] rev 16187
setup: handle output from Apple's Xcode 4.3 better (
issue3277)
Apparently, it prints nothing at all if the user installed only the
command-line tools. In that case, don't try to parse the empty output
-- just assume they have Xcode >= 4.
Patrick Mezard <patrick@mezard.eu> [Sun, 26 Feb 2012 17:12:15 +0100] rev 16186
graphlog: apply file filters --patch/--stat output
When passing --patch/--stat, file filters have to be applied to generate the
correct diff or stat output:
- Without --follow, the static match object can be reused
- With --follow, the files displayed at revision X are the ancestors of
selected files at parent revision. To do this, we reproduce the ancestry
calculations done by --follow, lazily.
test-glog.t changes show that --patch output is not satisfying because renames
are reported as copies. This can probably be fixed by:
- Without --follow: compute files to display, look for renames sources and
extend the matcher to include them.
- With --follow: detect .path() transitions between parent/child filectx,
filter them using the linked changectx .removed() field and extend fcache
with them.
Patrick Mezard <patrick@mezard.eu> [Sun, 26 Feb 2012 17:10:57 +0100] rev 16185
context: add followfirst arg to filectx and workingfilectx
When _followfirst() revset was introduced it seemed to be the sole user of such
an argument, so filectx.ancestors() was duplicated and modified instead. It now
appears this argument could be used when computing the set of files to be
considered when --patch or --stat are passed along with --follow FILE.
Patrick Mezard <patrick@mezard.eu> [Sun, 26 Feb 2012 17:10:57 +0100] rev 16184
graphlog: fix --removed
"hg log --removed FILE" does not return changesets where FILE was removed, but
ones where FILE was changed and possibly removed. The flag is really here to
disable walkchangerevs() fast path, which cannot see file removals by scanning
filelogs.
Patrick Mezard <patrick@mezard.eu> [Sun, 26 Feb 2012 17:10:56 +0100] rev 16183
test-glog: rewrite more tests using testlog() function
Patrick Mezard <patrick@mezard.eu> [Sun, 26 Feb 2012 17:10:55 +0100] rev 16182
match: consider filesets as "anypats"
Matt suggested this on IRC, I do not think the choice is obvious, but this one
makes things simpler because while filesets are turned into a list of files
into the match objects, it would more be difficult to tell invalid files passed
in pats from those expanded from filesets.
Patrick Mezard <patrick@mezard.eu> [Sun, 26 Feb 2012 17:10:51 +0100] rev 16181
graphlog: evaluate FILE/-I/-X filesets on the working dir
This subtlety is not documented yet but:
- pats/--include/--exclude filesets are evaluated against the working directory
- --rev filesets are reevaluated against every revisions
Patrick Mezard <patrick@mezard.eu> [Sun, 26 Feb 2012 16:56:32 +0100] rev 16180
graphlog: implement --copies
Greg Ward <greg@gerg.ca> [Sat, 18 Feb 2012 16:30:17 -0500] rev 16179
test-check-code-hg: skip test if not in a working dir (
issue3248).
Matt Mackall <mpm@selenic.com> [Sun, 26 Feb 2012 16:45:59 -0600] rev 16178
copies: use ctx.dirs() for directory rename detection
Matt Mackall <mpm@selenic.com> [Sun, 26 Feb 2012 15:51:56 -0600] rev 16177
copies: fix mergecopies doc mapping direction
Matt Mackall <mpm@selenic.com> [Sat, 25 Feb 2012 16:48:07 -0600] rev 16176
merge with stable
Patrick Mezard <patrick@mezard.eu> [Sat, 25 Feb 2012 19:39:55 +0100] rev 16175
log: restore cache used by --copies
The {filelog -> linkrev -> copyfrom} cache was refactored and broken by:
changeset: 10060:
f780b1098efc
user: Patrick Mezard <pmezard@gmail.com>
date: Sun Dec 13 18:06:24 2009 +0100
summary: templatekw: change {file_copies} behaviour, add
{file_copies_switch}
With --copies, this cache is accessed for every touched file of every revision.
Unfortunately it is recreated for every revision, which means filelogs are
parsed again. This patch makes the cache global again for all revisions.
A couple of indicative timings of "hg log --copies", before and after:
hg: 44s / 5s
mozilla --limit 10000: 3m51s / 2m32s
mozilla: 23m46s / 12m23s
I do not know any good tool to trace memory consumption of these runs for
comparisons. Watching the full mozilla run in top, the process did not seem to
misbehave.
Patrick Mezard <patrick@mezard.eu> [Sat, 25 Feb 2012 22:11:36 +0100] rev 16174
graphlog: implement --follow-first
log --graph --follow-first FILE cannot be compared with the regular version
because it never worked: --follow-first is not taken in account in
walkchangerevs() fast path and is explicitely bypassed in FILE case in
walkchangerevs() nested iterate() function.
Patrick Mezard <patrick@mezard.eu> [Sat, 25 Feb 2012 22:11:36 +0100] rev 16173
graphlog: implement --follow with file arguments
Patrick Mezard <patrick@mezard.eu> [Sat, 25 Feb 2012 22:11:35 +0100] rev 16172
test-glog: test multiple --prune values
Patrick Mezard <patrick@mezard.eu> [Sat, 25 Feb 2012 22:11:34 +0100] rev 16171
graphlog: restore FILE glob expansion on Windows
On platforms not supporting shell expansion, scmutil.match() performs glob
expansion on 'pats' arguments. But _matchfiles() revset calls match.match()
directly, bypassing this behaviour. To avoid duplicating scmutil.match(), a
secondary scmutil.matchandpats() is introduced returning both the match object
and the expanded inputs. Note the expanded pats are also needed in the fast
path, and will be used by --follow code path.
Patrick Mezard <patrick@mezard.eu> [Sat, 25 Feb 2012 21:51:13 +0100] rev 16170
glog: restore multiple --rev test lost in rebasing
Matt Mackall <mpm@selenic.com> [Sat, 25 Feb 2012 14:22:58 -0600] rev 16169
copies: remove checkdirs options
This removes the undocumented merge.followdirs option, which has
always been true.
Matt Mackall <mpm@selenic.com> [Fri, 24 Feb 2012 18:21:06 -0600] rev 16168
copies: add docstring for mergecopies
Matt Mackall <mpm@selenic.com> [Fri, 24 Feb 2012 16:52:32 -0600] rev 16167
addremove: return 1 if we failed to handle any explicit files
Matt Mackall <mpm@selenic.com> [Fri, 24 Feb 2012 16:16:48 -0600] rev 16166
merge with stable
Patrick Mezard <patrick@mezard.eu> [Fri, 24 Feb 2012 20:57:59 +0100] rev 16165
log: fix --follow FILE ancestry calculation
Currently, --follow FILE looks for a FILE filelog, scans it and collects
linkrevs and renames, then filters them. The problem is the filelog scan does
not start at FILE filenode in parent revision but at the last filelog revision.
So:
- Files not in the parent revision can be followed, the starting node is
unexpected
- Files in the parent revision can be followed from an incorrect starting
node.
This patch makes log --follow FILE fail if FILE is not in parent revision, and
computes ancestors of the parent revision FILE filenode.
Patrick Mezard <patrick@mezard.eu> [Fri, 24 Feb 2012 20:56:18 +0100] rev 16164
test-glog: extend a test before fixing --follow issues
The changes add a lot of noise to the test output, I prefer to separate it from
the changes which are to be introduced by --follow fixes.
Matt Mackall <mpm@selenic.com> [Fri, 24 Feb 2012 16:09:15 -0600] rev 16163
graft: use proper revisions for copy detection (
issue3265)
Wagner Bruna <wbruna@softwareexpress.com.br> [Fri, 24 Feb 2012 19:11:35 -0200] rev 16162
convert: fix typos in error messages
Patrick Mezard <patrick@mezard.eu> [Thu, 23 Feb 2012 18:05:20 +0100] rev 16161
graphlog: paths/-I/-X handling requires a new revset
The filtering logic of match objects cannot be reproduced with the existing
revsets as it operates at changeset files level. A changeset touching "a" and
"b" is matched by "-I a -X b" but not by "file(a) and not file(b)".
To solve this, a new internal "_matchfiles(...)" revset is introduced. It works
like "file(x)" but accepts more than one argument and its arguments are
prefixed with "p:", "i:" and "x:" to be used as patterns, include patterns or
exclude patterns respectively.
The _matchfiles revset is kept private for now:
- There are probably smarter ways to pass the arguments in a user-friendly way
- A "rev:" argument is likely appear at some point to emulate log command
behaviour with regard to filesets: they are evaluated for the parent revision
and applied everywhere instead of being reevaluated for each revision.
Patrick Mezard <patrick@mezard.eu> [Thu, 23 Feb 2012 17:55:07 +0100] rev 16160
graphlog: imitate log slowpath when inputs are explicit files
Patrick Mezard <patrick@mezard.eu> [Thu, 23 Feb 2012 17:54:42 +0100] rev 16159
graphlog: paths arguments must be or'ed
Patrick Mezard <patrick@mezard.eu> [Thu, 23 Feb 2012 11:21:30 +0100] rev 16158
graphlog: rewrite --rev like all other options
Patrick Mezard <patrick@mezard.eu> [Thu, 23 Feb 2012 11:21:04 +0100] rev 16157
graphlog: --branch and --only-branch are the same
Handling the aliasing in fancyopts would be cleaner but I do not want to make
this change for stable.
Patrick Mezard <patrick@mezard.eu> [Thu, 23 Feb 2012 17:46:57 +0100] rev 16156
test-check-code-hg: fix xargs exit status on OSX
When xargs subcommand invocation fails in a normal way, GNU xargs returns 123
and BSD one returns 1.
Martin Geisler <mg@aragost.com> [Thu, 23 Feb 2012 13:37:10 +0100] rev 16155
largefiles: respect store.createmode and avoid extra file copy
Before, a tempfile was used to create a temp file was created with 600
permissions and the uploaded data was written into it. This file was
then *copied* to .hg/largefiles/<hash>.
We now simply use atomictempfile to write the data to a temp file with
the right permissions and then rename that into place.
Martin Geisler <mg@aragost.com> [Thu, 23 Feb 2012 13:37:10 +0100] rev 16154
largefiles: respect store.createmode in basestore.get
This replaces another use of tempfile with atomictempfile. The problem
with tempfile is that it creates files with 600 permissions instead of
respecting repo.store.createmode.
Martin Geisler <mg@aragost.com> [Thu, 23 Feb 2012 13:22:55 +0100] rev 16153
largefiles: use repo.store.createmode for new files in .hg/largefiles
Before, the mode was copied from the file in the working copy. This is
inconsistent with how Mercurial normally creates files inside the .hg
folder. This can lead to a situation where you can read the files
under .hg/store but not under .hg/largefiles and so a clone will fail
if it needs to access a largefile.
Matt Mackall <mpm@selenic.com> [Wed, 22 Feb 2012 17:41:22 -0600] rev 16152
mq: expand qimport summary
Matt Mackall <mpm@selenic.com> [Wed, 22 Feb 2012 17:36:33 -0600] rev 16151
merge with stable
Patrick Mezard <patrick@mezard.eu> [Wed, 22 Feb 2012 12:30:15 +0100] rev 16150
graphlog: multiple --keyword must be or'ed
Patrick Mezard <patrick@mezard.eu> [Wed, 22 Feb 2012 12:30:15 +0100] rev 16149
graphlog: multiple --branch must be or'ed
Patrick Mezard <patrick@mezard.eu> [Wed, 22 Feb 2012 12:30:15 +0100] rev 16148
graphlog: multiple --user must be or'ed
Patrick Mezard <patrick@mezard.eu> [Wed, 22 Feb 2012 12:30:15 +0100] rev 16147
graphlog: explicitely join multivalue parameters
This will let use override the "join" value (and/or) depending on the option
considered. The option revset arity is now deduced from the revset and the
option value type, to simplify opt2revset definition.
Patrick Mezard <patrick@mezard.eu> [Wed, 22 Feb 2012 12:30:14 +0100] rev 16146
test-glog.t: use printrevset extension to trace rewritten revsets
Using "hg log -G --print-revset" prints the revset generated by graphlog and
exits. This helps debugging and writing shorter tests.
It has been suggested to handle these tests with doctests. I think the
extension approach is better because:
- It tests the actual parameter set passed to graphlog.revset(), not what we
expect it to be. 'branch' and 'only-branch' are currently distinct options
but nothing prevents fancyopts to grow a notion of option aliasing one day,
where both options would be merged before reaching the command.
- It can be used as debug output interleaved with real log calls.
v2:
- Use a test extension instead of a global deprecated new option
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 23 Feb 2012 00:07:54 +0900] rev 16145
context: use 'changectx.dirs()' in 'walk()' for directory patterns
this patch uses 'changectx.dirs()' instead of nested loop, to examine
whether specified pattern is related to the context as a directory or not.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 23 Feb 2012 00:07:54 +0900] rev 16144
localrepository: use 'changectx.dirs()' in 'status()' for directory patterns
when pattern which does not match against any files in working context
is specified, current implementation of 'localrepository.status()'
decides whether warning message about it should be shown or not by
'f not in context'
this works correctly for 'file pattern', but not for 'directory
pattern', because 'f not in context' always returns True for
directories, even if they are related to the context.
this patch uses 'changectx.dirs()' to examine whether specified
pattern is related to the context as a directory or not.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Thu, 23 Feb 2012 00:07:54 +0900] rev 16143
context: add 'dirs()' to changectx/workingctx for directory patterns
this patch adds 'dirs()' to changectx/workingctx, which returns map of
all directories deduced from manifest, to examine whether specified
pattern is related to the context as directory or not quickly.
'workingctx.dirs()' uses 'dirstate.dirs()' rather than building
another copy of it.
Matt Mackall <mpm@selenic.com> [Wed, 22 Feb 2012 15:22:12 -0600] rev 16142
status: fix format field thinko
Dan Villiom Podlaski Christiansen <danchr@gmail.com> [Mon, 20 Feb 2012 17:59:48 +0100] rev 16141
largefiles: don't break filesets
Michal Sznajder <michalsznajder@gmail.com> [Sat, 18 Feb 2012 14:27:57 +0100] rev 16140
help: sort hgrc related "Sections" chapters alphabetically
Patrick Mezard <patrick@mezard.eu> [Sat, 18 Feb 2012 12:30:24 +0100] rev 16139
doc: minor fixes to [graph] section documentation
Patrick Mezard <patrick@mezard.eu> [Sun, 22 Jan 2012 19:35:26 +0700] rev 16138
hgweb: refactor graph customization javascript
- Avoid flipping lineWidth state around the edge() call, pass it to the
function instead.
- Pass the line width and color appended to the other parameters instead of in
a dictionary. The javascript code is simpler, no need to check for all
containers existence, and the JSON output is smaller.
- Reindent setColor() comments and fix code spacing.
Patrick Mezard <patrick@mezard.eu> [Fri, 17 Feb 2012 16:49:43 +0100] rev 16137
templates: move Graph.edge() implementation in mercurial.js
All implementation in graph.tmpl are the same. It can still be overriden if
necessary. There is no clear reason to keep it separated from mercurial.js.
Matt Mackall <mpm@selenic.com> [Mon, 20 Feb 2012 16:42:51 -0600] rev 16136
formatter: convert status command
Matt Mackall <mpm@selenic.com> [Mon, 20 Feb 2012 16:42:48 -0600] rev 16135
ui: add formatter method
Matt Mackall <mpm@selenic.com> [Mon, 20 Feb 2012 16:42:47 -0600] rev 16134
formatter: add basic formatters
Matt Mackall <mpm@selenic.com> [Mon, 20 Feb 2012 16:42:45 -0600] rev 16133
encoding: introduce utf8-b helpers
Matt Mackall <mpm@selenic.com> [Fri, 17 Feb 2012 13:53:41 -0600] rev 16132
graphmod: add config cache
Before, we'd lookup the branch for every edge segment in the entire
graph: extremely expensive. This happened even when no per-branch
settings existed.
Now we define a revision -> config cache function that's LRU-cached
and is a no-op when no configuration exists. Still not terribly fast,
but hopefully only one real branch lookup per revision. This might
degenerate for wide graphs as the LRU is hard-coded to 20 elements.
Matt Mackall <mpm@selenic.com> [Fri, 17 Feb 2012 13:53:19 -0600] rev 16131
graphmod: rewrite graph config validation
Our goal is not to strictly disallow _invalid_ input, simply disallow _hostile_ input.
Avoid using re
Avoid creating empty dicts when no branch parameters are recognized
Constantine Linnick <theaspect@gmail.com> [Sun, 22 Jan 2012 19:47:03 +0700] rev 16130
graph: in hgrc specify line color for main branch
You can specify color to visually distinguish main branch (trunk)
on hgweb's graph page. If color specified, all branch heads will share
same color. Settings format is branch_name.color = value, where color
is six hexadecimal digits e.g.:
[graph]
default.color = FF0000
Constantine Linnick <theaspect@gmail.com> [Sun, 22 Jan 2012 19:35:26 +0700] rev 16129
graph: in hgrc specify line width for main branch
You can specify width to visually distinguish main branch (trunk)
on hgweb's graph page. Settings format is branch_name.width = value,
where width in px e.g.:
[graph]
default.width = 3
Matt Mackall <mpm@selenic.com> [Thu, 16 Feb 2012 16:40:29 -0600] rev 16128
merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 16 Feb 2012 15:58:51 -0600] rev 16127
filemerge: remove some redundancy in decorators/docstrings
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 12 Feb 2012 21:38:12 +0900] rev 16126
filemerge: create detail of internal merge tools from documentation string
this patch introduces 'internaltoolsmarker' which creates detail of
each internal merge tools from documentation string for 'hg help merge-tools'.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 12 Feb 2012 21:38:12 +0900] rev 16125
filemerge: refactoring of 'filemerge()'
current 'filemerge.filemerge()' implementation is verfy complicated.
- it is not easy to add new internal merge tools
(only by patching on 'filemerge()', or replacing it completely)
- cleanup of temporary files is unsatisfactory
('internal:dump' does not, in fact)
this is patch for refactoring of 'filemerge()' to isolate each
internal merge tool implementations from 'filemerge()', and clean up
common part in it.
Patrick Mezard <patrick@mezard.eu> [Mon, 13 Feb 2012 17:22:35 +0100] rev 16124
patch: fuzz more aggressively to match patch(1) behaviour
The previous code was assuming a default context of 3 lines. When fuzzing, it
would take this value in account to reduce the amount of removed line from
hunks top or bottom. For instance, if a hunk has only 2 lines of bottom
context, fuzzing with fuzz=1 would do nothing and with fuzz=2 it would remove
one of those lines. A hunk with one line of bottom context could not be fuzzed
at all. patch(1) has apparently no such restrictions and takes the fuzz level
at face value.
- test-import.t: fuzz/offset changes at the beginning of file are explained by
the new fuzzing behaviour and match patch(1) ones. Patching locations are
different but those of my patch(1) do not make a lot of sense right now
(patched output are the same)
- test-import-bypass.t: more agressive fuzzing makes a patching supposed to
fail because of context, succeed. Change the diff to avoid this.
- test-mq-merge.t: more agressive fuzzing would allow the merged patch to apply
with fuzz, but fortunately we disallow this behaviour. The new output is
kept.
I have not enough experience with patch(1) fuzzing to know whether aligning our
implementation on it is a good or bad idea. Until now, it has been the
implementation reference. For instance, "qpush" tolerates fuzz (test-mq-merge.t
runs the special case of pushing merge revisions where fuzzing is forbidden).
Patrick Mezard <patrick@mezard.eu> [Mon, 13 Feb 2012 16:47:31 +0100] rev 16123
patch: fix fuzzing of hunks without previous lines (
issue3264)
When applying hunks such as:
@@ -2,1 +2,2 @@
context
+change
fuzzing would empty the "old" block and make patchfile.apply() traceback.
Instead, we apply the new block at specified location without testing.
The "bottom hunk" test was removed as patch(1) has no problem applying hunk
with no context in the middle of a file.
Patrick Mezard <patrick@mezard.eu> [Mon, 13 Feb 2012 13:51:38 +0100] rev 16122
patch: make hunk.fuzzit() compute the fuzzed start locations
- It moves hunks processing weirdness where it belongs
- It helps reusing said weirdness whenever fuzzit() is called, like during the
actual hunk fuzzing.
Patrick Mezard <patrick@mezard.eu> [Mon, 13 Feb 2012 13:21:00 +0100] rev 16121
patch: fuzz old and new lines at the same time
In theory, the fuzzed offsets for old and new lines should be exactly the same
as they are based on hunk parsing. Make it true in practice.
Na'Tosha Bard <natosha@unity3d.com> [Mon, 13 Feb 2012 18:37:07 +0100] rev 16120
largefiles: optimize update speed by only updating changed largefiles
Historically, during 'hg update', every largefile in the working copy was
hashed (which is a very expensive operation on big files) and any
largefiles that did not have a hash that matched their standin were
updated.
This patch optimizes 'hg update' by keeping track of what standins have
changed between the old and new revisions, and only updating the largefiles
that have changed. This saves a lot of time by avoiding the unecessary
calculation of a list of sha1 hashes for big files.
With this patch, the time 'hg update' takes to complete is a function of
how many largefiles need to be updated and what their size is.
Performance tests on a repository with about 80 largefiles ranging from
a few MB to about 97 MB are shown below. The tests show how long it takes
to run 'hg update' with no changes actually being updated.
Mercurial 2.1 release:
$ time hg update
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
getting changed largefiles
0 largefiles updated, 0 removed
real 0m10.045s
user 0m9.367s
sys 0m0.674s
With this patch:
$ time hg update
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
real 0m0.965s
user 0m0.845s
sys 0m0.115s
The same repsoitory, without the largefiles extension enabled:
$ time hg update
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
real 0m0.799s
user 0m0.684s
sys 0m0.111s
So before the patch, 'hg update' with no changes was approximately 9.25s
slower with largefiles enabled. With this patch, it is approximately 0.165s
slower.
Patrick Mezard <patrick@mezard.eu> [Tue, 14 Feb 2012 14:31:40 +0100] rev 16119
mq: make qimport --push push all imported patches (
issue3130)
Only the first imported one was pushed.
Patrick Mezard <patrick@mezard.eu> [Wed, 15 Feb 2012 11:21:24 +0100] rev 16118
convert: tolerate spaces between splicemap parent ids (
issue3203)
Splicemap lines are documented in hg help convert like:
key parent1, parent2
but parsed like:
key, parents = line.strip().rsplit(' ', 1)
parents = parents.replace(',', ' ').split()
The rsplit() call was introduced to handle spaces in keys for the generic
mapfile format. Spaces can appear in svn identifiers since they contain path
components. This logic makes less sense with splicemap since svn identifiers
can also appear on the right side, even if it is a bit less likely. Given the
parsing is theorically broken, I would rather follow what is documented already
and is correct in the main case where all identifiers are hg hashes. Also,
using svn identifiers in a splicemap sounds difficult as they are not easily
accessible.
Idan Kamara <idankk86@gmail.com> [Thu, 16 Feb 2012 01:23:45 +0200] rev 16117
test-commandserver: flush stdout
Idan Kamara <idankk86@gmail.com> [Thu, 16 Feb 2012 01:21:34 +0200] rev 16116
localrepo: clear _filecache on rollback (
issue3261)
Files are being replaced by rollback but the corresponding data in localrepo
isn't actually updated for things like bookmarks, phases, etc. Then when
rollback is done, the cache is updated thinking it has the most up-to-date
data, where in fact it is still pre-rollback.
We clear _filecache to force everything to be recreated.
Idan Kamara <idankk86@gmail.com> [Wed, 15 Feb 2012 20:02:35 +0200] rev 16115
scmutil: update cached copy when filecached attribute is assigned (
issue3263)
When assigning a new object to filecached properties, the cached object that
was kept in the _filecache map was still holding the old object.
By implementing __set__, we track these changes too and update the cached
copy as well.
Idan Kamara <idankk86@gmail.com> [Wed, 15 Feb 2012 23:44:10 +0200] rev 16114
cmdserver: invalidate the dirstate when running commands (
issue3271)
The dirstate is invalidated separately outside of invalidate() which is
already being called (other callers of invalidate() seems to suggest the
separation is there for a reason).
Idan Kamara <idankk86@gmail.com> [Wed, 15 Feb 2012 23:49:15 +0200] rev 16113
localrepo: reset _phasesdirty flag after writing
Patrick Mezard <patrick@mezard.eu> [Thu, 16 Feb 2012 13:03:42 +0100] rev 16112
import: handle git renames and --similarity (
issue3187)
There is no reason to discard copy sources from the set of files considered by
addremove(). It was done to handle the case where a first patch would create
'a' and a second one would move 'a' to 'b'. If these patches were applied with
--no-commit, 'a' would first be marked as added, then unlinked and dropped from
the dirstate but still passed to addremove(). A better fix is thus to exclude
removed files which ends being dropped from the dirstate instead of removed.
Reported by Jason Harris <jason@jasonfharris.com>
Patrick Mezard <patrick@mezard.eu> [Thu, 16 Feb 2012 12:56:48 +0100] rev 16111
context: make workingctx.forget() really warn about untracked files
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Wed, 15 Feb 2012 23:01:09 +0900] rev 16110
largefiles: check whether specified patterns are related to largefiles strictly
current 'lfiles_repo.status()' implementation examines whether
specified patterns are related to largefiles in working directory (not
to STANDIN) or not by NOT-EMPTY-NESS of below list:
[f for f in match.files() if f in lfdirstate]
but it can not be assumed that all in 'match.files()' are file itself
exactly, because user may only specify part of path to match whole
under subdirectories recursively.
above examination will mis-recognize such pattern as 'not related to
largefiles', and executes normal 'status()' procedure. so, 'hg status'
shows '?'(unknown) status for largefiles in working directory unexpectedly.
this patch examines relation of pattern to largefiles by applying
'match()' on each entries in lfdirstate and checking wheter there is
no matched entry.
it may increase cost of examination, because it causes of full scan of
entries in lfdirstate.
so this patch uses normal for-loop instead of list comprehensions, to
decrease cost when matching is found.
Matt Mackall <mpm@selenic.com> [Fri, 10 Feb 2012 17:09:23 -0600] rev 16109
merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 10 Feb 2012 16:52:32 -0600] rev 16108
log: remove caching of all visited revisions (
issue3253)
Not only does this eat all available memory for some users, it's slower.
Matt Mackall <mpm@selenic.com> [Fri, 10 Feb 2012 16:09:30 -0600] rev 16107
pull: backout change to return code
This bit a number of people.
Patrick Mezard <patrick@mezard.eu> [Fri, 10 Feb 2012 22:34:13 +0100] rev 16106
convert: use splicemap entries when sorting revisions (
issue1748)
When sorting revisions before converting them, we have to edit the revision
graph using splicemap entries. Otherwise, a spliced revision may be converted
before its synthetic parents. Invalid splicemap revisions are now detected
before starting the conversion.
Patrick Mezard <patrick@mezard.eu> [Fri, 10 Feb 2012 22:25:49 +0100] rev 16105
convert: turn splicemap into a simple dictionary
Parsing the splicemap as a mapfile was a pain because map does not let us
override its parsing code and splicemap entries are not key/values. Besides we
had no need for mapfiles extra features. Just parse the splicemap and return a
dictionary.
Patrick Mezard <patrick@mezard.eu> [Fri, 10 Feb 2012 13:50:13 +0100] rev 16104
debugrevspec: mention --verbose to print the parsed tree
Na'Tosha Bard <natosha@unity3d.com> [Fri, 10 Feb 2012 14:46:09 +0100] rev 16103
largefiles: only cache largefiles in new heads
This fixes a serious performance regression in largefiles introduced in
Mercurial 2.1. Caching new largefiles on pull is necessary, because
otherwise largefiles will be missing (and unable to be downloaded) when
the user tries to merge or rebase a new head with an old one. But this
is an expensive operation and should only be done for heads that are new
from the pull, rather than on all heads in the repository.
Matt Mackall <mpm@selenic.com> [Fri, 10 Feb 2012 13:47:57 -0600] rev 16102
merge with stable
Patrick Mezard <patrick@mezard.eu> [Tue, 07 Feb 2012 18:47:16 +0100] rev 16101
mq: restore _branchtags() fast path (
issue3223)
Since
a5917346c72e, mq saves the nodeid of the first applied patch to
cache/branchheads, which breaks the optimized cache handling introduced in
fbf8320f25c8. The problem is the revision being committed is appended to
mqrepo.applied after the commit succeeds, which means mqrepo._branchtags()
performs a regular update and write the first applied patch to the branch
cache.
One solution is to set a context variable _committingpatch on the mqrepo while
it is committing a patch and to take it in account when deciding to fast-path
mqrepo._branchtags(). Not really elegant but it works.
The changes to test-mq-caches.t reverse changes introduced by
a5917346c72e. The
cache should not have been updated with mq records.
The changes to test-keyword.t are indirectly caused by
a5917346c72e.
Reported and analyzed by Yuya Nishihara <yuya@tcha.org>
Notes:
- qpush still makes a slow path _branchtags() call when checking heads. Maybe
this can be optimized.
- be careful when merging this patch in default as secretcommit() was renamed
newcommit() right after the end of the code freeze.
Patrick Mezard <patrick@mezard.eu> [Tue, 07 Feb 2012 18:47:13 +0100] rev 16100
mq: ensure all mq commits are made with secretcommit()
Having a common code path helps fixing things globally.
Patrick Mezard <patrick@mezard.eu> [Wed, 08 Feb 2012 17:45:10 +0100] rev 16099
convert/bzr: ignore nested repos when listing branches (
issue3254)
Reported by A.S. Budden <abudden@gmail.com>
Jim Hague <jim.hague@acm.org> [Wed, 08 Feb 2012 16:56:00 +0000] rev 16098
tests: tighten checks for octal escapes in shell printf.
printf on AIX default shell ksh (89) says \1 is an invalid escape. It insists
on at least 2 digits. This causes failures in test-keyword.t and test-status.t.
check-code.py already looks out for \NNN and recommends using Python
for outputting octal values. Extend the check to \NN and \N and fix up
resulting failures.
Patrick Mezard <patrick@mezard.eu> [Wed, 08 Feb 2012 20:00:52 +0100] rev 16097
phase: when phase cannot be reduced, hint at --force and return 1 (BC)
Before, trying to change the phase of a "public" node to "draft" would result
in:
$ hg phase --draft .
no phases changed
[0]
With this patch:
$ hg phase --draft .
cannot move 1 changesets to a more permissive phase, use --force
no phases changed
[1]
On partial failures, the exit status is now 1 instead of 0 and the number of
changed nodes is displayed while it was only with --verbose. It seems useful to
tell the user that despite the apparent failure, something changed.
$ hg phase --draft '5 or 7'
cannot move 1 changesets to a more permissive phase, use --force
phase changed for 1 changesets
[1]
Patrick Mezard <patrick@mezard.eu> [Thu, 09 Feb 2012 21:03:07 +0100] rev 16096
revset: fix alias substitution recursion (
issue3240)
The revset aliases expansion worked like:
expr = "some revset"
for alias in aliases:
expr = alias.process(expr)
where "process" was replacing the alias with its *unexpanded* substitution,
recursively. So it only worked when aliases were applied in proper dependency
order.
This patch rewrites the expansion process so all aliases are expanded
recursively at every tree level, after parent alias rewriting and variable
expansion.
Matt Mackall <mpm@selenic.com> [Thu, 09 Feb 2012 17:54:47 -0600] rev 16095
update: just merge unknown file collisions
The unknown file collision rule was introduced as an extension of the
"should be clean when merging" rule. Unfortunately, it got applied to
the normal update path, which should be happy to merge local changes.
This patch gives us merges for unknown file collisions on update,
while preserving abort for merge and update -c.
Matt Mackall <mpm@selenic.com> [Thu, 09 Feb 2012 17:04:17 -0600] rev 16094
merge: don't use unknown()
This removes use of unknown files for building the synthetic working
directory manifest used by manifestmerge. Instead, we adopt the
strategy used by _checkunknown.
Side-effect: unknown files are no longer moved by remote directory
renames, and now are left alone like ignored files.
Matt Mackall <mpm@selenic.com> [Thu, 09 Feb 2012 16:50:19 -0600] rev 16093
merge: refactor unknown file conflict checking
Previously, we would do a full working directory walk including
unknown files to perform a merge. In many cases, this was painful
because unknown files greatly outnumbered tracked files and generally
had no useful effect on the merge.
Here we instead wait until we find a file in the destination that's
not tracked locally and detect if it exists and is not ignored. This
is usually cheaper but can be -more- expensive in the case where we're
adding a huge number of files. On the other hand, the cost of statting
the new files should be dwarfed by the cost of eventually writing
them.
In this version, case collisions are detected implicitly by
os.path.exists and wctx[f] lookup.
Matt Mackall <mpm@selenic.com> [Thu, 09 Feb 2012 13:16:20 -0600] rev 16092
update: use normal update path with --check (
issue2450)
This avoids clobbering unknown files on update by not using overwrite mode.
Matt Mackall <mpm@selenic.com> [Mon, 06 Feb 2012 16:35:14 -0600] rev 16091
fetch: use update rather than clean when updating (
issue3246)
We already verify the working directory is "clean" before starting so
there's no advantage to clobbering the working directory.
Matt Mackall <mpm@selenic.com> [Mon, 06 Feb 2012 15:36:44 -0600] rev 16090
merge with stable
Patrick Mezard <patrick@mezard.eu> [Mon, 06 Feb 2012 21:17:50 +0100] rev 16089
mdiff: adjust hunk offsets with --ignore-blank-lines (
issue3234)
When diffing the following documents with --ignore-blank-lines (-B):
$ cat > a <<EOF
>
>
>
> b
> x
> d
> EOF
and:
$ cat > b <<EOF
> b
> y
> d
> EOF
the context lines are taken from the first document, even if the lines differ
(with -w or -b) or if the number of lines differ (with -B). In the second case,
we have to adjust the hunk new lines offsets or we end with inconsistent diffs
like (see the @@ offsets):
diff -r
0e66aa54f318 a
--- a/a
+++ b/a
@@ -1,4 +1,3 @@
b
-x
+y
d
Note that having different context lines in a and b means the diff can be
applied but is not invertible.
Reported by Nicholas Riley <com-selenic@sabi.net>
Matt Mackall <mpm@selenic.com> [Mon, 06 Feb 2012 15:22:43 -0600] rev 16088
merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 06 Feb 2012 15:22:34 -0600] rev 16087
merge with i18n
Matt Mackall <mpm@selenic.com> [Mon, 06 Feb 2012 15:22:27 -0600] rev 16086
merge with i18n
Wagner Bruna <wbruna@yahoo.com> [Mon, 06 Feb 2012 08:10:32 -0200] rev 16085
i18n-de: fix rst markup in command output (
issue3247)
Wagner Bruna <wbruna@yahoo.com> [Mon, 06 Feb 2012 08:06:42 -0200] rev 16084
merge with i18n stable
Wagner Bruna <wbruna@yahoo.com> [Mon, 06 Feb 2012 08:04:16 -0200] rev 16083
i18n-ru: fix hg command rst markup
Wagner Bruna <wbruna@yahoo.com> [Mon, 06 Feb 2012 08:03:34 -0200] rev 16082
i18n-ja: fix rst markup in hg command output
Wagner Bruna <wbruna@yahoo.com> [Mon, 06 Feb 2012 08:02:05 -0200] rev 16081
i18n-de: fix rst markup in command output (
issue3247)
Wagner Bruna <wbruna@yahoo.com> [Sat, 04 Feb 2012 11:34:44 -0200] rev 16080
merge with i18n stable
Wagner Bruna <wbruna@yahoo.com> [Sat, 04 Feb 2012 11:22:01 -0200] rev 16079
i18n-de: fix hg command rst markup and quoting (
issue3247)
Wagner Bruna <wbruna@yahoo.com> [Sat, 04 Feb 2012 10:59:36 -0200] rev 16078
merge with i18n stable
Wagner Bruna <wbruna@yahoo.com> [Sat, 04 Feb 2012 10:55:58 -0200] rev 16077
i18n-de: fix rst markup in command output (
issue3247)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 05 Feb 2012 22:58:31 +0900] rev 16076
windows: use 'str.replace()' instead of combination of split() and join()
'str.replace()' is twice (or more) as fast as combination of split()
and join().
combination of split() and join() in current 'util.pconvert()'
implementation comes only from historical reason when win32mbcs
extension was introduced.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 06 Feb 2012 12:16:29 +0900] rev 16075
largefiles: reduce redundant splitstandin/standin combination
assumptions:
- 'lfutil.splitstandin(f)' strips 'f' of '.hglf/', if it can
- 'lfile(f)' examines 'lfutil.standin(f) in manifest'
- 'lfutil.standin(f)' adds '.hglf/' to 'f'
and
- 'f' should start with '.hglf/' there, because it is already
examined by 'lfutil.isstandin(f)'
then:
lfile(lfutil.splitstandin(f))
=> lfile(<f without '.hglf/'>)
=> lfutil.standin(<f without '.hglf/'>) in manifest
=> <<f without '.hglf/'> with '.hglf/'> in manifest
=> f in manifest
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 06 Feb 2012 12:16:29 +0900] rev 16074
largefiles: reduce OR-ing of same conditions
Matt Mackall <mpm@selenic.com> [Mon, 06 Feb 2012 15:10:01 -0600] rev 16073
subrepo: rewrite handling of subrepo state at commit (
issue2403)
When the contents of .hgsubstate are stale (either because they've
manually been tweaked or partial updates have confused it), we get
confused about whether it actually needs committing.
So instead, we actively consult the parent's substate and compare it
the actual current state when deciding whether it needs committing.
Side effect: lots of "committing subrepo" messages that didn't
correspond with real commits disappear.
This change is fairly invasive for a fairly obscure condition, so it's
kept on the default branch.
Matt Mackall <mpm@selenic.com> [Mon, 06 Feb 2012 15:00:08 -0600] rev 16072
subrepo: add basestate method
This will allow us to sort out what's going on with state .hgsubstate
files more precisely.
Jim Hague <jim.hague@acm.org> [Fri, 03 Feb 2012 23:27:17 +0000] rev 16071
bdiff: fix malloc(0) issue in fixws()
If fixws() is called on a zero-length string, malloc(0) is called and
expected to return a pointer. Which it does on e.g. Linux. AIX returns
NULL, which it is also legal, but the malloc() is then assumed to have
failed. So ensure a valid pointer is always returned.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 06 Feb 2012 14:37:49 +0900] rev 16070
forget: show warning messages for forgetting in subrepo correctly
in 'cmdutil.forget()':
for f in match.files():
if match.exact(f) or not explicitonly:
....
is equal to:
for f in match.files():
if True:
....
because 'f' from 'match.files()' should 'match.exact(f)':
- 'match.files()' returns 'self._files'
- 'match.exact(f)' examines 'f in self._fmap',
- 'self._fmap' of match is 'set(self._files)'
then, 'explicitonly' wants to suppress warning messges, if it is true
(= 'cmdutil.forget()' is invoked from 'subrepo.forget()').
so, current code should be fixed as:
if not explicitonly:
for f in match.files():
....
Jim Hague <jim.hague@acm.org> [Sat, 04 Feb 2012 00:02:05 +0000] rev 16069
tests: fix command line overflow on ksh
"<command> `hg manifest`" overflows the puny 1024 byte command line length
limit on AIX default shell ksh. Replace with "hg manifest | xargs <command>".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 05 Feb 2012 22:58:31 +0900] rev 16068
use util.localpath() instead of 'str.replace()' to unify path conversion
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 05 Feb 2012 22:58:31 +0900] rev 16067
i18n: use util.pconvert() instead of 'str.replace()' for problematic encoding
some problematic encodings use backslash as part of multi-byte characters.
util.pconvert() can treat strings in such encodings correctly, if
win32mbcs is enabled, but str.replace() can not.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 05 Feb 2012 22:58:31 +0900] rev 16066
i18n: use util.pconvert() instead of 'str.replace()' for problematic encoding
some problematic encodings use backslash as part of multi-byte characters.
util.pconvert() can treat strings in such encodings correctly, if
win32mbcs is enabled, but str.replace() can not.
Matt Mackall <mpm@selenic.com> [Fri, 03 Feb 2012 15:45:13 -0600] rev 16065
merge with stable
Patrick Mezard <pmezard@gmail.com> [Fri, 03 Feb 2012 19:47:09 +0100] rev 16064
mq: make qprev return the previous applied patch (
issue3245)
The current behaviour is to return the previous one in the series but at the
same time the implementation is buggy because it does not take guarded patches
in account.
Patrick Mezard <pmezard@gmail.com> [Fri, 03 Feb 2012 19:38:31 +0100] rev 16063
mq: fix qnext when all remaining patches are guarded
When all remaining patches are guarded, qnext used to return the last of the
queue anyway.
Patrick Mezard <pmezard@gmail.com> [Thu, 02 Feb 2012 10:15:13 +0100] rev 16062
convert/bzr: test tags conversion
Patrick Mezard <pmezard@gmail.com> [Thu, 02 Feb 2012 10:15:13 +0100] rev 16061
convert/bzr: handle empty bzr repositories (
issue3233)
Patrick Mezard <pmezard@gmail.com> [Thu, 02 Feb 2012 10:15:12 +0100] rev 16060
convert/bzr: convert all branches (
issue3229) (BC)
Instead of opening the target bzr checkout as a single branch, we try to open
it as a repository. This has the following effects:
- All branches are now converted
- bzr branch names are preserved. Previously, the selected branch was always
converted as 'default'. Branches without a name or 'trunk' are mapped to
'default branch.
- Lightweight checkouts are no longer supported. Maybe they can be, I did not
try to fix that at all.
Implementation notes:
- This was a quick fix, I have no knowledge of bzr API besides browsing 2.0.3
sources.
- The fix was only tested on OSX against bzr 2.4.2.
- Tags discovery does not handle collisions. I have no idea how tags work in
bzr so maybe such collisions are not possible.
Patrick Mezard <pmezard@gmail.com> [Thu, 02 Feb 2012 10:15:04 +0100] rev 16059
convert/bzr: expect unicode metadata, encode in UTF-8 (
issue3232)
Before this patch, metadata and file names were interpreted like:
- unicode objects were converted to UTF-8
- non unicode objects were left unchanged
Looking at the code and bzr being known for transcoding filenames, we expect
everything to be returned as unicode objects, and we want to encode them in
UTF-8, like the subversion source does. To do that, we just remove the custom
implementation of .recode().
Patrick Mezard <pmezard@gmail.com> [Fri, 03 Feb 2012 19:23:13 +0100] rev 16058
test-mq: fix sed call on OSX
- The regular sed on OSX wants: -i "" not -i""
- GNU sed wants: -i"" not -i ""
Backups are fine.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 30 Jan 2012 00:05:28 +0100] rev 16057
mq: rename secretcommit to newcommit
This function create secret changeset only when mq.secret is true
Matt Mackall <mpm@selenic.com> [Wed, 01 Feb 2012 16:28:35 -0600] rev 16056
merge with stable
Fabian Kreutz <fabian.kreutz@qvantel.com> [Sat, 21 Jan 2012 15:17:39 +0200] rev 16055
i18n-de: update po and remove fuzzies
Fabian Kreutz <fabian.kreutz@qvantel.com> [Sat, 21 Jan 2012 13:49:46 +0200] rev 16054
i18n-de: Rework and fixes continued
Matt Mackall <mpm@selenic.com> [Wed, 01 Feb 2012 14:23:58 -0600] rev 16053
Added signature for changeset
2aa5b51f310f
Matt Mackall <mpm@selenic.com> [Wed, 01 Feb 2012 14:23:55 -0600] rev 16052
Added tag 2.1 for changeset
2aa5b51f310f
Matt Mackall <mpm@selenic.com> [Wed, 01 Feb 2012 14:17:26 -0600] rev 16051
phases: don't complain if cset is already public on pushkey (
issue3230)
Wagner Bruna <wbruna@softwareexpress.com.br> [Wed, 01 Feb 2012 17:59:51 -0200] rev 16050
i18n-pt_BR: synchronized with
140b6282ac79
Matt Mackall <mpm@selenic.com> [Wed, 01 Feb 2012 13:50:45 -0600] rev 16049
merge with i18n
Pierre-Yves David <pierre-yves.david@logilab.fr> [Wed, 01 Feb 2012 12:20:10 +0100] rev 16048
mq: prevent rewriting operation on public changeset
The following operation are denied if the mq changeset is public
* qrefresh
* qpop
* qfold
note: qimport was already denied.
Wagner Bruna <wbruna@softwareexpress.com.br> [Tue, 31 Jan 2012 18:11:08 -0200] rev 16047
i18n-pt_BR: miscellaneous spelling and wording fixes
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Tue, 31 Jan 2012 19:44:09 +0900] rev 16046
i18n-ja: synchronized with
0f99e709ce08
Alexander Sauta <demosito@gmail.com> [Tue, 31 Jan 2012 12:30:54 +0400] rev 16045
i18n-ru: synchronized with
c0b2986b37b8; public phase name changed
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 30 Jan 2012 20:17:59 -0200] rev 16044
i18n-pt_BR: synchronized with
c0b2986b37b8
Matt Mackall <mpm@selenic.com> [Tue, 31 Jan 2012 23:13:04 -0600] rev 16043
qpush: avoid trying to manage existing history (
issue2218)
Matt Mackall <mpm@selenic.com> [Tue, 31 Jan 2012 17:25:37 -0600] rev 16042
bundlerepo: try to find containing repo on creation (
issue1812)
Matt Mackall <mpm@selenic.com> [Mon, 30 Jan 2012 16:37:15 -0600] rev 16041
phases: add resync example to help topic
Matt Mackall <mpm@selenic.com> [Mon, 30 Jan 2012 16:04:14 -0600] rev 16040
mq: fix secret description in help
Matt Mackall <mpm@selenic.com> [Mon, 30 Jan 2012 16:01:54 -0600] rev 16039
pull: return 1 when no changes found (BC)
Currently we have the following return codes if nothing is found:
commit incoming outgoing pull push
intended 1 1 1 1 1
documented 1 1 1 0 1
actual 1 1 1 0 1
This makes pull agree with the rest of the table and makes it easy to
detect "nothing was pulled" in scripts.
Matt Mackall <mpm@selenic.com> [Mon, 30 Jan 2012 15:56:35 -0600] rev 16038
push: don't treat bookmark as a found change
Treating bookmarks as a found change results in confusing
documentation or output and is less useful for scripting.
Matt Mackall <mpm@selenic.com> [Mon, 30 Jan 2012 14:44:01 -0600] rev 16037
glossary: add phase terms
Matt Mackall <mpm@selenic.com> [Mon, 30 Jan 2012 14:14:18 -0600] rev 16036
merge with i18n
Jens Bäckman <jens.backman@gmail.com> [Mon, 30 Jan 2012 16:28:27 +0100] rev 16035
i18n-sv: snchronized with
ed9f40bc346f
Alexander Sauta <demosito@gmail.com> [Mon, 30 Jan 2012 13:04:13 +0400] rev 16034
i18n-ru: phases help translated
Alexander Sauta <demosito@gmail.com> [Mon, 30 Jan 2012 11:52:38 +0400] rev 16033
i18n-ru: minor corrections on unclear strings
Andrei Polushin <polushin@gmail.com> [Mon, 30 Jan 2012 02:48:03 +0700] rev 16032
i18n-ru: synchronized with
2605fc990725
Andrei Polushin <polushin@gmail.com> [Mon, 30 Jan 2012 02:07:04 +0700] rev 16031
i18n-ru: verifying uncertain translations.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 30 Jan 2012 17:46:15 +0100] rev 16030
phases: allow phase name in phases.new-commit settings
Before this commit only phase index where accepted
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 30 Jan 2012 15:17:08 +0100] rev 16029
qfinish: do not set secret changeset to draft if mq.secret=false
If mq.secret=false, mq should not touch phase
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 30 Jan 2012 17:39:05 +0100] rev 16028
mq: take mq.secret configuration into account when picking the default phase
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 30 Jan 2012 17:37:45 +0100] rev 16027
qimport: when mq.secret=True set qimported revision as secret
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 30 Jan 2012 17:36:30 +0100] rev 16026
qrefresh: keep changeset phase during refresh
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 30 Jan 2012 17:33:09 +0100] rev 16025
phases: write default phase data as soon as possible.
Marks phase data as dirty when computing default phase. Actual writing is done
when the lock is released. So, read only operation don't write phase data
because they don't lock the repo.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Mon, 30 Jan 2012 18:06:57 +0100] rev 16024
phase: accept old style revision specification
Matt Mackall <mpm@selenic.com> [Mon, 30 Jan 2012 11:32:09 -0600] rev 16023
push: return 1 if no changes found (
issue3228)
Currently we have the following return codes if nothing is found:
commit incoming outgoing pull push
intended 1 1 1 1 1
documented 1 1 1 0 1
actual 1 1 1 0 0
This fixes the lower-right entry.
Matt Mackall <mpm@selenic.com> [Mon, 30 Jan 2012 11:26:20 -0600] rev 16022
push: more precise failure check on subrepo push
This will let us distinguish between nothing to push and push failed
Matt Mackall <mpm@selenic.com> [Mon, 30 Jan 2012 11:23:17 -0600] rev 16021
push: return 0 when updating bookmarks
Matt Mackall <mpm@selenic.com> [Mon, 30 Jan 2012 11:15:34 -0600] rev 16020
push: fix coding errors in unused branch
This branch will get re-enabled in a subsequent fix
Matt Mackall <mpm@selenic.com> [Sun, 29 Jan 2012 14:07:45 -0600] rev 16019
bookmarks: move current bookmark on update -u and bare pull -u (
issue3222)
Currently, this won't update when a #branch spec is in the URL
Matt Mackall <mpm@selenic.com> [Sun, 29 Jan 2012 13:36:10 -0600] rev 16018
phases: fix verify with secret csets
Verify uses repo.cancopy() to detect whether a repo is a plain old
local repo, so it was giving a confusing error message when secret
changesets were present.
Matt Mackall <mpm@selenic.com> [Sun, 29 Jan 2012 12:59:21 -0600] rev 16017
mq: add secret setting
Matt Mackall <mpm@selenic.com> [Sun, 29 Jan 2012 12:59:11 -0600] rev 16016
merge with i18n
Wagner Bruna <wbruna@yahoo.com> [Sat, 28 Jan 2012 09:05:08 -0200] rev 16015
i18n-pt_BR: synchronized with
f2c49d9dee57
Mads Kiilerich <mads@kiilerich.com> [Fri, 27 Jan 2012 03:00:32 +0100] rev 16014
tests: don't rely on 'false' exit code in test-run-tests.t
On Solaris:
$ sh -c 'false ; echo $?'
255
Mads Kiilerich <mads@kiilerich.com> [Fri, 27 Jan 2012 03:00:03 +0100] rev 16013
tests: don't use alias
alias doesn't work in Solaris sh.
Mads Kiilerich <mads@kiilerich.com> [Fri, 27 Jan 2012 02:59:59 +0100] rev 16012
tests: don't include plain 'diff -U0' content in test-diff-unified.t
The only purpose of 'diff -U0' was to show that 'hg diff -U0' did almost the same.
Unfortunately 'diff -U0' on Solaris gives incorrect line numbers. Masking it
with globs wouldn't it make sense, so removing it is the best solution.
Matt Mackall <mpm@selenic.com> [Fri, 27 Jan 2012 18:43:41 -0600] rev 16011
help: add examples to phases topic
Kevin Bullock <kbullock@ringworld.org> [Fri, 27 Jan 2012 13:12:56 -0600] rev 16010
update: note updated bookmark
This brings update in line with pull: we notify the user when an action
indirectly updates a bookmark.
Augie Fackler <durin42@gmail.com> [Fri, 27 Jan 2012 14:19:32 -0600] rev 16009
resolve: mention merge-tools topic in help
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 27 Jan 2012 22:29:58 +0900] rev 16008
revset: add tests for 'remote()' predicate
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 27 Jan 2012 22:29:58 +0900] rev 16007
revset: fix documentation for 'remote()' predicate
current documentation for 'remote()' predicate is wrong about
specification of parameters.
there are 3 patterns:
# of
param: id: remote:
- 0 current branch "defult" remote
- 1 specified "defult" remote
- 2 specified specified
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 27 Jan 2012 22:29:58 +0900] rev 16006
revset: fix 'remote()' failure when remote repo has more revs than local
current 'remote()' implementation uses 'r' variable, even if it is not
initialized when 'if n in repo' is not true.
this causes unexpected exception.
Wagner Bruna <wbruna@softwareexpress.com.br> [Fri, 27 Jan 2012 12:52:13 -0200] rev 16005
help/config: fix help command markup
Matt Mackall <mpm@selenic.com> [Fri, 27 Jan 2012 18:43:31 -0600] rev 16004
merge with i18n
Alexander Sauta <demosito@gmail.com> [Fri, 27 Jan 2012 12:25:02 +0400] rev 16003
i18n-ru: synchronized with
bf502ccc46d7; fuzzies removed
Nikolaj Sjujskij <sterkrig@myopera.com> [Thu, 26 Jan 2012 16:56:11 +0400] rev 16002
i18n-ru: fix typos in `resolve` help
* help entry is called 'merge-tools', not 'merge-tool';
* envvar is called HGMERGE, not HGEMERGT.
Matt Mackall <mpm@selenic.com> [Thu, 26 Jan 2012 20:34:57 -0600] rev 16001
merge: defer symlink flag merging to filemerge (
issue3200)
Previously, we could change a normal file into a corrupt symlink when
trying to merge a symlink flag. Now, we leave the flag alone and let
filemerge deal with it (usually by a prompt).
We also drop a redundant flag setting after filemerge (now dealt with
by ms.resolve) that would cause similar corruption.
Matt Mackall <mpm@selenic.com> [Thu, 26 Jan 2012 17:54:52 -0600] rev 16000
help: fix publish option spelling in phases topic
Matt Mackall <mpm@selenic.com> [Thu, 26 Jan 2012 17:54:22 -0600] rev 15999
help: add missing phase config items to config topic
Wagner Bruna <wbruna@softwareexpress.com.br> [Thu, 26 Jan 2012 17:23:43 -0200] rev 15998
help/phases: remove trailing whitespace
Matt Mackall <mpm@selenic.com> [Thu, 26 Jan 2012 11:23:15 -0600] rev 15997
sslutil: more helpful fingerprint mismatch message
This will aid debugging for users of sites that renew certs.
Matt Mackall <mpm@selenic.com> [Thu, 26 Jan 2012 11:23:14 -0600] rev 15996
help: add phases topic
Wagner Bruna <wbruna@softwareexpress.com.br> [Thu, 26 Jan 2012 12:09:14 -0200] rev 15995
i18n-pt_BR: synchronized with
0b05e0bfdc1c
Matt Mackall <mpm@selenic.com> [Wed, 25 Jan 2012 17:14:10 -0600] rev 15994
copies: remove stray print
Matt Mackall <mpm@selenic.com> [Wed, 25 Jan 2012 17:14:08 -0600] rev 15993
scmutil: unify some 'no changes found' messages
This keeps the wording more consistent for secret csets
Alain Leufroy <alain.leufroyATgmailMYDOTcom> [Wed, 25 Jan 2012 19:41:34 +0100] rev 15992
outgoing: display info about secret changets while no sharable changeset found
Alain Leufroy <alain.leufroyATgmailMYDOTcom> [Wed, 25 Jan 2012 19:05:16 +0100] rev 15991
bundle: display info about secret changets while no sharable changeset found
Augie Fackler <durin42@gmail.com> [Mon, 23 Jan 2012 12:26:01 -0600] rev 15990
test-rebase-collapse: Add test for rebase regression introduced in
12309c09d19a
Idan Kamara <idankk86@gmail.com> [Thu, 26 Jan 2012 00:21:55 +0200] rev 15989
test-commandserver: test that phase data is being refreshed
Idan Kamara <idankk86@gmail.com> [Thu, 26 Jan 2012 00:21:54 +0200] rev 15988
localrepo: delete _phaserev when invalidating caches
Idan Kamara <idankk86@gmail.com> [Thu, 26 Jan 2012 00:21:53 +0200] rev 15987
localrepo: fix phaseroots filecache definition
it's in .hg/store
Pierre-Yves David <pierre-yves.david@logilab.fr> [Tue, 24 Jan 2012 19:49:30 +0100] rev 15986
discovery: fix regression when checking heads for pre 1.4 client (
issue3218)
This code is not run by the test suite and silly name error were lurking here.
Jens Bäckman <jens.backman@gmail.com> [Wed, 25 Jan 2012 14:06:04 -0600] rev 15985
help: mark strings for translation
David Soria Parra <dsp@php.net> [Wed, 25 Jan 2012 20:03:46 +0100] rev 15984
bookmarks: respect --debug during incoming/outgoing
Na'Tosha Bard <natosha@unity3d.com> [Wed, 25 Jan 2012 16:52:16 +0100] rev 15983
largefiles: fix revert on missing largefile (
issue3217)
Na'Tosha Bard <natosha@unity3d.com> [Wed, 25 Jan 2012 14:10:01 +0100] rev 15982
largefiles: fix transplant for all cases (
issue3192)
Andrei Polushin <polushin@gmail.com> [Wed, 25 Jan 2012 03:01:19 +0700] rev 15981
i18n-ru: synchronized with
9f2ed48f8cda
Jens Bäckman <jens.backman@gmail.com> [Wed, 25 Jan 2012 10:13:06 +0100] rev 15980
i18n-sv: translated phase
Jens Bäckman <jens.backman@gmail.com> [Wed, 25 Jan 2012 09:33:48 +0100] rev 15979
i18n-sv: translating strings for add, annotate, debuginstall
Jens Bäckman <jens.backman@gmail.com> [Wed, 25 Jan 2012 08:48:52 +0100] rev 15978
i18n-sv: synchronized with
c2e6c5ef4555
Matt Mackall <mpm@selenic.com> [Tue, 24 Jan 2012 17:17:37 -0600] rev 15977
merge with i18n
Matt Mackall <mpm@selenic.com> [Tue, 24 Jan 2012 17:16:29 -0600] rev 15976
copies: eliminate criss-crosses when chaining
Before the copies refactoring, we declared that if a and b were
present in source and destination, we ignored copies between them. The
refactored code could however report b was a copy of a and vice versa
in a situation where we looked for differences between two identical
changesets that copy a to b.
y
/
x
\
y'
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 23 Jan 2012 16:12:32 -0200] rev 15975
i18n-pt_BR: synchronized with
f7c8d6ee6056
Wagner Bruna <wbruna@softwareexpress.com.br> [Mon, 23 Jan 2012 16:11:37 -0200] rev 15974
merge with i18n
Jens Bäckman <jens.backman@gmail.com> [Fri, 20 Jan 2012 11:11:36 +0100] rev 15973
i18n-sv: synchronized with
7ed056f1e97d
Augie Fackler <durin42@gmail.com> [Sat, 21 Jan 2012 21:39:27 -0600] rev 15972
mq: pass qbase node instead of mq statusentry in phasedefaults
This was breaking my remotebranches extension in a completely
mystifying way, because repo.lookup was failing to resolve the
statusentry. I'm not sure how this works absent my remotebranches
extension, but doing it this way looks more correct and doesn't break
anything.
Jesus Espino Garcia <jesus.espino@kaleidos.net> [Sat, 21 Jan 2012 23:50:58 +0100] rev 15971
patch: a little bit more robust line counting on diff --stat (
issue3183)
Jesus Espino Garcia <jesus.espino@kaleidos.net> [Sat, 21 Jan 2012 13:31:41 +0100] rev 15970
convert: subversion convert abort on revision not found (issue 3205)
Jesus Espino Garcia <jesus.espino@kaleidos.net> [Sat, 21 Jan 2012 00:40:18 +0100] rev 15969
bash_completion: added -o filename option to _hg_status (
issue3101)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 22 Jan 2012 21:30:09 +0100] rev 15968
phase: alway return a value
With the previous code, the phase command was returning None when displaying
phase and 0 or 1 when moving them.
This seemed an bit odd and displaying phase return 0 too now.
Na'Tosha Bard <natosha@unity3d.com> [Mon, 23 Jan 2012 13:24:32 +0100] rev 15967
largefiles: fix addremove when no largefiles are specified
Matt Mackall <mpm@selenic.com> [Fri, 20 Jan 2012 23:52:31 -0600] rev 15966
revset: include the correct first ancestor change for follow(file)
Previously we always included '.', which may not touch a file.
Instead, find the file revision present in '.' and add its linkrev.
This matches the results of 'hg log --follow file'.
Matt Mackall <mpm@selenic.com> [Fri, 20 Jan 2012 23:10:13 -0600] rev 15965
revset: remove unreferenced followfile function
Matt Mackall <mpm@selenic.com> [Fri, 20 Jan 2012 23:05:04 -0600] rev 15964
revsets: provide contexts for filesets
Before this change, revsets containing fileset patterns failed. This
allows queries like:
hg log -r "contains('set: added() and symlink()')"
Matt Mackall <mpm@selenic.com> [Fri, 20 Jan 2012 22:19:40 -0600] rev 15963
fileset: don't attempt to check data predicates against removed files
Matt Mackall <mpm@selenic.com> [Fri, 20 Jan 2012 19:22:09 -0600] rev 15962
revset: simplify help not about quoting
Matt Mackall <mpm@selenic.com> [Fri, 20 Jan 2012 15:30:28 -0600] rev 15961
Added signature for changeset
db33555eafea
Matt Mackall <mpm@selenic.com> [Fri, 20 Jan 2012 15:30:25 -0600] rev 15960
Added tag 2.1-rc for changeset
db33555eafea
Matt Mackall <mpm@selenic.com> [Fri, 20 Jan 2012 15:25:39 -0600] rev 15959
bookmarks: correct correction of -i
Idan Kamara <idankk86@gmail.com> [Fri, 20 Jan 2012 23:05:14 +0200] rev 15958
commands: drop exclamation mark in abort message
Kevin Bullock <kbullock@ringworld.org> [Thu, 19 Jan 2012 16:10:26 -0600] rev 15957
update: note ways to avoid moving bookmark
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 20 Jan 2012 21:21:13 +0100] rev 15956
push: prevent moving phases outside of the pushed subset
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 20 Jan 2012 19:41:18 +0100] rev 15955
discovery: ensure that missingheads are always heads of everything we tried
This only alter the third block executed when:
* repo have secret changeset
* onlyheads is not None
In other case findcommonoutgoing already had this behavior
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 20 Jan 2012 19:23:53 +0100] rev 15954
phase: extracts heads computation logics from analyzeremotephases
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 20 Jan 2012 19:18:09 +0100] rev 15953
phase: fix warning text from invalid remote phase
add missing end of line and substitution.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 20 Jan 2012 18:45:29 +0100] rev 15952
mq-safety: don't apply safety on non-outgoing changeset
When mq changeset are secret, they don't appear in outgoing and won't be
pushed. So it's not necessary to abort the push.
The checkpush call is protected by lock to prevent race on phase.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Fri, 20 Jan 2012 00:27:11 +0100] rev 15951
phases: properly register excluded changeset when revision are specified
There was no other drawback than a bad UI message for now.
Matt Mackall <mpm@selenic.com> [Fri, 20 Jan 2012 14:19:13 -0600] rev 15950
bookmarks: make -i summary simpler and more accurate