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.