Commit Graph

5002 Commits

Author SHA1 Message Date
Eli Carter
479903f19c largefiles: fix test typo 2011-10-18 11:09:11 -05:00
Eli Carter
bad1c40c51 convert: fix typo 2011-10-18 10:32:12 -05:00
Na'Tosha Bard
9de02791d2 largefiles: test that merging does not result in wrong versions of largefiles 2011-10-19 17:40:27 +02:00
Na'Tosha Bard
96e8daf828 largefiles: expand test suite some more (test rebasing, rollback, update --clean, and verify --large) 2011-10-19 17:02:59 +02:00
Mads Kiilerich
06d30b903b grep: correct handling of matching lines without line ending (issue3050)
Matching lines without trailing '\n' was missing the last character.

That seems to have been an unintended side effect of 8abe3f27975c.
The test in c21748e4cd4d documents the bad behaviour.
2011-10-16 01:26:06 +02:00
Martin Geisler
c49aaff90e subrepo: abort in hgsubrepo._get if the destination is obstructed
Before, we deleted foo when we determined that there were zero
changesets in the foo subrepo. Any files in foo was deleted too. We
now delete foo/.hg instead, and the normal checks in hg.clone will
then abort if there are untracked files in foo.
2011-10-17 18:01:38 +02:00
Martin Geisler
ebc547d4c7 subrepo: pull revisions on demand when archiving hg subrepos
Before, running 'hg archive -S' could result in

 abort: unknown revision '65903cebad86f1a84bd4f1134f62fa7dcb7a1c98'!

if a subrepo was missing completely or had missing changesets. Now,
the missing changesets will be pulled or cloned as appropriate.

This make Mercurial subrepos match Git subrepos which already took
care to fetch any missing commits before starting the archive.
2011-10-17 16:45:19 +02:00
Thomas Arendsen Hein
ca6afcfc64 test-check-code.t: test matching try/except/finally introduced in d7e08f92afab 2011-10-17 14:27:34 +02:00
Matt Mackall
e1cab56645 merge with crew 2011-10-16 22:15:43 -05:00
Matt Mackall
db1431fe95 check-code: support multiline matches like try/except/finally
- match one pattern at a time against entire file
- find line containing match
- sort matches by line number
2011-10-16 20:26:20 -05:00
Mads Kiilerich
4578a9a76b tests: don't use 'test -e'
On Solaris 10:

  $ test -e f
  test: argument expected
2011-10-17 00:11:56 +02:00
Pierre-Yves David
adb2912b0c rebase: add --rev option to rebase
This option allow a strict set of revision to be specified instead of using -s
or -b. Rebase will refuse start if striping  rebased changeset will strip non
rebased changeset. Rebase will refuse to work on set with multiple root.
2011-10-15 20:12:32 +02:00
Pierre-Yves David
92a70ff8aa rebase: use revset as soon as possible in internal logic
The buildstate function now take a set of revs. Logic related to --source and
--base option have been moved in the main rebase function.

In the process this fixes a bug where the wrong source changeset might be pick.
This explain the changes in hgext/rebase.py
2011-10-15 19:07:51 +02:00
Angel Ezquerra
16f9562667 revert: warn that subrepos cannot be reverted
(tests added by mpm)
2011-10-15 01:06:52 +02:00
Greg Ward
aeec456986 merge: expand environment variables and ~/ in tool.executable
hgrc(5) already implies that this works, so we might as well support it.

Another approach would be to implement this in util.findexe(): that
would benefit other callers of findexe(), e.g. convert and anyone
calling the user's editor. But findexe() is really implemented in
both posix.py and windows.py, so this would make both of those modules
depend on util.py: not good. So keep it narrow and only for merge
tools.
2011-10-12 21:45:58 -04:00
Matt Mackall
3e9b4998db minirst: improve test harness 2011-10-15 00:39:06 -05:00
Matt Mackall
7791d14df5 minirst: add style flag to format 2011-10-15 00:39:04 -05:00
Matt Mackall
cdd258d4fd minirst: add basic HTML formatting support 2011-10-15 00:39:01 -05:00
Pierre-Yves David
1415969654 phases: prevent mq to qimport immutable change. 2011-12-21 23:47:18 +01:00
Pierre-Yves David
6284fc8c91 phases: add a bit more test for local phase movement. 2011-12-18 23:15:12 +01:00
Matt Mackall
7cf4e6eacb merge with stable 2011-12-16 19:05:59 -06:00
Pierre-Yves David
f9b3764a1f phases: change publish behavior to only alter behavior when server.
Older publish=True was:

  1) Content of Publishing server are seen as public by client.
  2) Any changegroup *added* to a publish=True server is public.

New definition are:

  1) Content of Publishing server are seen as public by client.
  2) Any changegroup *pushed* to a publish=True server is public.

See mercurial/phase.py documentation for exact final behavior
2011-12-15 23:08:09 +01:00
Nikolaus Schueler
efb688abc6 notify: change behavior of "changegroup" hook
Change the behavior so that the sender (the "From" header in the notification
mail) in case of the "changegroup" hook is the user that did the first commit
in the changegroup.  The option is configurable, if you set "notify.fromauthor"
to "True" in your config, the new behavior is activated.  If you do not set the
option, the behavior is as before.  The commit adds to an existing test to show
various aspects of the changed behavior.
2011-12-15 13:57:54 +01:00
Pierre-Yves David
0d9927b223 phases: exchange phase boundaries on push
For now phase sync is tried even if push fails with some know pathological
case. The exact behavior is to be discussed and implemented later.
2011-12-15 11:45:01 +01:00
Pierre-Yves David
c8f1983f55 phases: exchange phase boundaries on pull
Add an extra argument to addchangegroup to all phase code to execute before the
lock is released.
2011-12-15 11:28:42 +01:00
Pierre-Yves David
a6373d74dc phases: add basic pushkey support 2011-12-15 11:24:26 +01:00
Pierre-Yves David
01ab70718a phases: update exchange test to include node hash.
This will be easier for exchange test.
2011-10-26 14:30:43 +02:00
Pierre-Yves David
ca1e55e405 phases: add a phases.publish option
What is a "publishing repository"?
==================================

Setting a repository as "publishing" alter its behavior **when used as a
server**: all changesets are **seen** as public changesets by clients.

So, pushing to a "publishing" repository is the most common way to make
changesets public: pushed changesets are seen as public on the remote side and
marked as such on local side.

Note: the "publishing" property have no effects for local operations.

Old repository are publishing
=============================

Phase is the first step of a series of features aiming at handling mutable
history within mercurial. Old client do not support such feature and are unable
to hold phase data. The safest solution is to consider as public any changeset
going through an old client.

Moreover, most hosting solution will not support phase from the beginning.
Having old clients seen as public repositories will not change their usage:
public repositories where you push *immutable* public changesets *shared* with
others.

Why is "publishing" the default?
================================

We discussed above that any changeset from a non-phase aware repository should
be seen as public.  This means that in the following scenario, X is pulled as
public::

  ~/A$ old-hg init
  ~/A$ echo 'babar' > jungle
  ~/A$ old-hg commit -mA 'X'
  ~/A$ cd ../B
  ~/B$ new-hg pull ../A # let's pretend A is served by old-hg
  ~/B$ new-hg log -r tip
     summary:     X
     phase:       public

We want to keep this behavior while creating/serving the A repository with
``new-hg``. Although committing with any ``new-hg`` creates a draft changeset.
To stay backward compatible, the pull must see the new commit as public.
Non-publishing server will advertise them as draft. Having publishing repository
the default is thus necessary to ensure this backward compatibility.

This default value can also be expressed with the following sentence: "By
default, without any configuration, everything you exchange with the outside is
immutable.". This behaviour seems sane.

Why allow draft changeset in publishing repository
=====================================================

Note: The publish option is aimed at controlling the behavior of *server*.
Changeset in any state on a publishing server will **always*** be seen as public
by other client. "Passive" repository which are only used as server for pull and
push operation are not "affected" by this section.

As in the choice for default, the main reason to allow draft changeset in
publishing server is backward compatibility. With an old client, the following
scenario is valid::

  ~/A$ old-hg init
  ~/A$ echo 'babar' > jungle
  ~/A$ old-hg commit -mA 'X'
  ~/A$ old-hg qimport -r . # or any other mutable operation on X

If the default is publishing and new commits in such repository are "public" The
following operation will be denied as X will be an **immutable** public
changeset. However as other clients see X as public, any pull//push (or event
pull//pull) will mark X as public in repo A.

Allowing enforcement of public changeset only repository through config is
probably something to do. This could be done with another "strict" option or a
third value config for phase related option (mode=public, publishing(default),
mutable)
2011-12-15 11:57:33 +01:00
Martin Geisler
d6b9b24fa1 merge with stable 2011-12-15 16:26:33 +01:00
Martin Geisler
f89c093d08 merge with stable 2011-12-09 17:58:12 +01:00
Martin Geisler
ae8ca6aff5 merge: make debug output easier to read
I always found it hard to figure out what the debug code meant without
the separators.
2011-12-09 17:34:53 +01:00
Matt Mackall
a968007692 merge with stable 2011-12-08 16:01:44 -06:00
Mads Kiilerich
2ee0e99705 sshrepo: don't quote obviously safe strings (issue2983)
This restores compatibility with hg-over-ssh servers that don't parse
commandlines as sh does but works ok in the most common cases.
2011-12-08 16:39:00 +01:00
Kevin Bullock
4b1f198355 merge: make 'nothing to merge' aborts consistent
Makes the 'nothing to merge' abort messages in commands.py consistent with
those in merge.py. Also makes commands.merge() and merge.update() use hints.
The tests show the changes.
2011-12-07 11:23:01 -06:00
Matt Mackall
239b73ab8c bookmarks: mark divergent bookmarks with book@pathalias when source in [paths] 2011-12-07 16:19:39 -06:00
Matt Mackall
395e8d3f93 bookmarks: shadow divergent bookmarks of foo with foo@n 2011-12-06 14:17:33 -06:00
Matt Mackall
e82c2e671f merge with stable 2011-12-05 17:48:40 -06:00
Matt Mackall
9e27ec8fc4 merge with stable 2011-12-01 15:57:10 -06:00
Matt Mackall
3d60dfdd1c merge with stable 2011-11-30 17:15:39 -06:00
Arne Babenhauserheide
eaac554b05 clone: get all bookmarks before updating 2011-11-04 10:18:40 +01:00
Mads Kiilerich
c4feda7dd3 ssh: quote remote paths (issue2983) 2011-11-26 00:10:31 +01:00
Mads Kiilerich
498fe2dc88 id: add command line options for handling ssh and https urls 2011-11-26 00:10:12 +01:00
Patrick Mezard
a50918f3cf status: support revsets with --change 2011-11-24 11:38:16 +01:00
Mads Kiilerich
ae8c3f9869 merge with stable 2011-11-25 02:11:12 +01:00
Martin Geisler
af430ebf31 merge with stable 2011-11-24 18:22:44 +01:00
Mads Kiilerich
210dda88ee tests: use an alias to make msys 'pwd' return paths with forward slashes 2011-11-21 01:49:20 +01:00
Mads Kiilerich
b2aa8c5ab5 tests: skip cvs tests with msys on windows
They will fail with weird 'ssh' errors.
2011-11-21 01:49:20 +01:00
Mads Kiilerich
c9c5f0a2ca tests: introduce 'hghave msys' to skip tests that would fail because of msys 2011-11-21 01:49:20 +01:00
Matt Mackall
bd2719486e merge with stable 2011-11-23 16:35:17 -06:00
Mads Kiilerich
1961772a73 mail: use quoted-printable for mime encoding to avoid too long lines (issue3075)
Quoted-printable was already used for the more critical patch mails, so it
should be fine for everything else as well.
2011-11-23 02:44:11 +01:00
Mads Kiilerich
ae4bd7a809 notify: add option for writing to mbox
This makes it possible to test how the mails that are sent _really_ look like.
2011-11-23 02:36:33 +01:00
Mads Kiilerich
6127ae9b6d patchbomb: minor refactoring of mbox functionality, preparing for move
This allows reuse of the mbox functionality but causes minor changes in the
patchbomb console output when writing to a mbox.
2011-11-23 02:09:38 +01:00
Mads Kiilerich
1815af81fb tests: run check-code with warnings and maintain a whitelist
check-code has fine warning checks, but they are a bit noisy and nobody used
them.

Now the warnings will be run in the test suite, where a list of accepted
warnings will be maintained.

Those who introduce or touch a line with a warning will now have to update the
whitelist ... or fix the warning.
2011-11-23 03:14:24 +01:00
Mads Kiilerich
d3deba7af8 tests: convert test-check-code-hg.py to .t 2011-11-23 02:50:58 +01:00
Christian Ebert
b72bed62b1 test-keyword: use inline doctest syntax 2011-11-23 01:20:32 +00:00
Matt Mackall
5bbf1ec751 merge with stable 2011-11-22 17:34:22 -06:00
Martin Geisler
7ea03decd6 merge with stable 2011-11-22 18:16:59 +01:00
Mads Kiilerich
b9221232de tests: test-patchbomb.t cleanup
Let commit messages and file names describe the facts without making incorrect
guess of the actual handling of it.
2011-11-22 01:37:26 +01:00
Mads Kiilerich
ec9ee31267 tests: show actual output in test-patchbomb.t
Drop fixheader and decode base64 encoded content and show non-ascii content.
2011-11-22 01:37:26 +01:00
Mads Kiilerich
04220c92b7 tests: test findexe() access check fixed in 82cdeeb526c1 2011-11-22 01:37:26 +01:00
Matt Mackall
d3ba23d77e merge with stable 2011-11-21 13:11:17 -06:00
Mads Kiilerich
df6c03ed7a tests: make test-commandserver.py independent of line ending and slash direction 2011-11-21 00:39:32 +01:00
Mads Kiilerich
a71b0e4d4e tests: make test-commandserver.py output readable 2011-11-21 00:39:32 +01:00
Mads Kiilerich
dd70310a2a tests: 'hghave unix-permissions' for test-import.t
'hg import' of a patch with mode changes requires unix permissions support in
the file system.
2011-11-21 00:39:32 +01:00
Mads Kiilerich
bd64c64dd6 tests: skip color test on platforms without tic 2011-11-21 00:39:32 +01:00
Matt Mackall
6c076151bb merge with stable 2011-11-20 16:06:18 -06:00
Patrick Mezard
c4cef76e25 mdiff: replace wscleanup() regexps with C loops
On my system it reduces:

  hg annotate -w mercurial/commands.py

from 36s to less than 8s, to be compared with 6.3s when run without whitespace
options.
2011-11-18 14:23:03 +01:00
Patrick Mezard
cc3315778f annotate: support diff whitespace filtering flags (issue3030)
splitblock() was added to handle blocks returned by bdiff.blocks() which differ
only by blank lines but are not made only of blank lines. I do not know exactly
how it could happen but mdiff.blocks() threshold behaviour makes me think it
can if those blocks are made of very popular lines mixed with popular blank
lines. If it is proven to be wrong, the function can be dropped.

The first implementation made annotate share diff configuration entries. But it
looks like users will user -w/b for annotate but not for diff, on both the
command line and hgweb. Since the latter cannot use command line entries, we
introduce a new [annotate] section duplicating the diff whitespace options.
2011-11-18 12:04:31 +01:00
Matt Mackall
309d28f3f5 merge with crew 2011-11-17 23:02:18 -06:00
Matt Mackall
75db0d196a merge with stable 2011-11-17 16:53:17 -06:00
Mads Kiilerich
786be21bbb tests: don't use stdout redirection for test data
Stdout redirection is not binary safe everywhere - for example not on windows
with msys.
2011-11-16 03:45:14 +01:00
Mads Kiilerich
637e2ecde2 tests: hide 'No such file or directory' messages
Windows will use a different and localized message.
2011-11-16 03:45:14 +01:00
Mads Kiilerich
9c95d62a3d tests: add missing '(glob)'s to match '\' in paths in test output on windows 2011-11-16 03:45:14 +01:00
Mads Kiilerich
d648884b09 tests: add 'hghave system-sh' to skip tests on windows 2011-11-16 03:45:14 +01:00
Mads Kiilerich
8e24d85037 tests: launch hghave with python interpreter without relying on hash-bang 2011-11-16 03:45:14 +01:00
Mads Kiilerich
e0ce7904f7 tests: use the specified shell for running old fashioned sh tests 2011-11-16 03:45:14 +01:00
Mads Kiilerich
13d122b2cd tests: add missing 'hghave unix-permissions' 2011-11-16 03:45:14 +01:00
Mads Kiilerich
cb035c4003 tests: remove hacks for testing if file or directory exists 2011-11-16 03:45:14 +01:00
Mads Kiilerich
f695ee71c6 tests: don't leave temporary directories without write permission behind 2011-11-16 03:45:06 +01:00
Matt Mackall
3a9838cebc merge with stable 2011-11-15 14:33:06 -06:00
Mads Kiilerich
ef0024b865 check-code: add --nolineno option for hiding line numbers
This makes the output more stable when it is used as a whitelist.
2011-11-11 01:25:47 +01:00
Matt Mackall
66de5cde16 merge: give a special message for internal:merge failure (issue3105) 2011-11-16 18:04:19 -06:00
Pierre-Yves David
e719727169 phases: set common changeset to public on pull 2011-11-11 00:22:02 +01:00
Pierre-Yves David
bf6f3ef1a7 phases: mark content pushed as public in local repo on push 2011-11-11 00:21:17 +01:00
Pierre-Yves David
493771f789 phases: marked content of a changegroup as published 2011-11-11 00:19:00 +01:00
Pierre-Yves David
0f1186823a phases: set new commit in 1-phase 2011-11-11 00:15:22 +01:00
Matt Mackall
6c38ee4b0b merge with stable 2011-11-10 17:06:30 -06:00
Matt Mackall
e0657b708d merge with stable 2011-11-10 15:55:26 -06:00
Matt Mackall
30c1fc3bf2 mq: add a warning about uncommitted changes for qfinish 2011-11-10 15:40:34 -06:00
David M. Carr
f9ef6cf73b forget: support forgetting explicit paths in subrepos
Change the behavior of the forget command such that explicit paths in
subrepos are handled by forgetting the file in the subrepo. This eliminates the
previous behavior where if you called "hg forget" for an explicit path in a
subrepo, it would state that the file is already untracked.
2011-11-09 19:46:51 -05:00
David M. Carr
3746cbbe79 tests: add test for behavior of forget for explicit path in subrepo
Adds a section to test-subrepo.t that demonstrates the current behavior
when you pass the full path to a file in a subrepo to hg forget.
2011-11-09 19:46:49 -05:00
Matt Mackall
8f2b7260c4 merge with stable 2011-11-10 11:00:27 -06:00
Pierre-Yves David
75d76cce5b phases: add rollback support 2011-11-07 12:27:25 +01:00
Mads Kiilerich
6485196281 util: don't encode ':' in url paths
':' has no special meaning in paths, so there is no need for encoding it.

Not encoding ':' makes it easier to test on windows.
2011-11-07 03:25:10 +01:00
Mads Kiilerich
725ccda893 run-tests: make $TESTTMP matching case-insensitive on windows 2011-11-07 03:25:10 +01:00
Mads Kiilerich
b38bca46c2 run-tests: don't quote command names - that do apparently not work with msys 2011-11-07 03:25:10 +01:00
Mads Kiilerich
460890c579 tests: ignore \r on windows 2011-11-07 03:25:10 +01:00
Mads Kiilerich
d71aaf4c6b run-tests: convert windows paths to unix 2011-11-07 03:25:10 +01:00
Mads Kiilerich
8c22a0ec28 tests: make (glob) on windows accept \ instead of /
Globbing is usually used for filenames, so on windows it is reasonable and very
convenient that glob patterns accepts '\' or '/' when the pattern specifies
'/'.
2011-11-07 03:25:10 +01:00
Mads Kiilerich
8415df7277 tests: use 'hghave serve' to guard tests that requires serve daemon management 2011-11-07 03:24:53 +01:00
Mads Kiilerich
a144f886ca tests: use 'hghave system-sh' to guard tests that requires sh in system() 2011-11-07 03:14:55 +01:00
Mads Kiilerich
8344ac235d tests: use 'hghave no-windows' to avoid testing reserved file names on windows 2011-11-07 03:14:55 +01:00
Mads Kiilerich
72ebeacea3 tests: use 'hghave unix-permissions' for tests that really use chmod
chmod of helper scripts is not included.

tests that exercise the x bit in the file system uses 'hghave execbit'.
2011-11-07 03:14:55 +01:00
Mads Kiilerich
adfff587c7 tests: use 'hghave execbit' for tests that manipulate x bit in file system 2011-11-07 03:14:54 +01:00
Mads Kiilerich
4838bfb2c4 tests: use 'hghave symlink' for tests using symlinks 2011-11-07 03:14:54 +01:00
Mads Kiilerich
58e471712f windows: use umask 022 in debugstate output
debugstate would always report files as mode 666 or 777 on Windows.

umask is not used on Windows, but faking and using a defalt value of 022
matches what the test suite uses on Unix.
2011-11-07 03:14:54 +01:00
Mads Kiilerich
8306b62d10 tests: don't let time go back before 0 o'clock in bisect3.t
Windows agree that it was
  Thu Jan 01 00:00:00 1970 +0000
but it also claims that it was
  Thu Dec 31 23:59:59 1969 -0000
2011-11-07 03:14:53 +01:00
Mads Kiilerich
d9065e4fb9 tests: make '(esc)' matching in run-tests.py work as intended
The code for match on (esc) lines didn't work, and it would thus always end up
emitting another suggestion ... which however would match the old one.
2011-11-07 02:44:04 +01:00
Matt Mackall
17d82e7fd5 run-tests: replace inline python handling with more native scheme
Normally changes in tests are reported like this in diffs:

   $ cat foo
-  a
+  b

Using -i mode lets us update tests when the new results are correct
and/or populate tests with their output.

But with the standard doctest framework, inline Python sections in
tests changes instead result in a big failure report that's unhelpful.
So here, we replace the doctest calls with a simple compile/eval loop.
2011-11-07 13:46:41 -06:00
Pierre-Yves David
fbd6b51e95 phases: add a very simple test
Note that the expected output is wrong as is should be phase-1. But
the machinery to plant new root is to come in later commit.
2011-11-04 00:40:47 +01:00
Matt Mackall
88220425c1 run-tests: minor cleanups 2011-11-03 15:18:10 -05:00
Matt Mackall
4f749024f0 run-tests: pull out line matching function 2011-11-03 15:08:45 -05:00
Matt Mackall
e770714829 run-tests: pull out unified matching funcs 2011-11-03 14:51:04 -05:00
Matt Mackall
5f6366d991 tests: add some comments to the unified test code 2011-11-03 14:48:56 -05:00
Matt Mackall
65859d124f tests: rewrite inline Python support
Tests with inline Python could turn '>>>' into their underlying python
invocation if the test got updated with -i.
2011-11-03 14:30:00 -05:00
David M. Carr
296a0c6305 add: support adding explicit files in subrepos
Change the behavior of the add command such that explicit paths in
subrepos are always added.  This eliminates the previous behavior
where if you called "hg add" for an explicit path in a subrepo
without specifying the -S option, it would be silently ignored.
If you specify patterns, or no arguments at all, the -S option
will still be needed to activate recursion into subrepos.
2011-11-02 01:17:11 -04:00
David M. Carr
35eec835f2 tests: add test for add of explicit path in subrepo
Add test coverage for the existing behavior where adds of explicit paths in
subrepos are silently ignored.  This is in preparation for changing the
behavior of the add command to have better support for subrepos.
2011-11-01 23:53:29 -04:00
Mads Kiilerich
9c69ab7b0b mq: fix corner cases for handling of patch 0 in qselect
Most of the code paths in mq would always pass patch specifications as a
string. Patches can be specified by their index, but one code path passed that
(through pop) to lookup as an integer - all other code paths used a string.

Unfortunately pop and lookup (like many other parts of mq) used the boolean
value of the patch specification to see if it was None, and they would thus
incorrectly handle patch 0 as None.

This patch makes the code comply with the actual internal duck typing of patch
specifications: patch indices must be encoded as strings. The (now) unused code
for partial and thus incorrect handling of indices as integers is removed.
2010-10-31 18:29:56 +01:00
Greg Ward
8b7a685468 largefiles: improve error reporting
- tweak wording of some error messages
- use consistent capitalization
- always say 'largefile', not 'lfile'
- fix I18N problems
- only raise Abort for errors the user can do something about
2011-10-13 20:24:29 -04:00
Na'Tosha Bard
783d9072f7 largefiles: flush out tests to cover more operations and known cornercases 2011-10-13 15:15:32 +02:00
Idan Kamara
2f9b12fec9 tests: add basic tests for doctest syntax 2011-10-13 17:54:38 +02:00
Idan Kamara
3cb661bac7 run-tests: end doctest block when seeing a non-command 2011-10-13 17:54:37 +02:00
Idan Kamara
03e76d64ac tests: remove temp doctest file when finished running it 2011-10-13 17:54:35 +02:00
Mads Kiilerich
c91fb0e17c httprepo: make __del__ more stable in error situations
Some errors could leave self.urlopener uninitialized and thus cause strange
crashes in __del__.

This member variable is now "declared statically" and checked for assignment
before use.
2011-10-13 04:27:49 +02:00
Mads Kiilerich
f8aad4bae1 tests: exercise some corner cases for mq guard selection and --reapply 2010-10-31 18:29:55 +01:00
Mads Kiilerich
2d6cf89687 tests: cleanup of test-fetch.t 2011-10-13 04:27:49 +02:00
Mads Kiilerich
6260903881 tests: cleanup of echo statements left over from test conversion 2011-10-13 04:27:49 +02:00
Matt Mackall
1841aff181 graft: add --continue support 2011-10-12 18:48:57 -05:00
Matt Mackall
d5e94e6c90 graft: add user, date, and tool options 2011-10-12 18:46:23 -05:00
Matt Mackall
0069040fa2 graft: add --edit 2011-10-12 18:46:03 -05:00
Matt Mackall
06ac7c8606 graft: add initial implementation 2011-10-12 18:45:36 -05:00
Idan Kamara
cb06843ca5 tests: add support for inline doctests in test files
This adds doctest like syntax to .t files, that can be interleaved with regular
shell code:

  $ echo -n a > file
  >>> print open('file').read()
  a
  >>> open('file', 'a').write('b')
  $ cat file
  ab

The syntax is exactly the same as regular doctests, so multiline statements
look like this:

  >>> for i in range(3):
  ...     print i
  0
  1
  2

Each block has its own context, i.e.:

  >>> x = 0
  >>> print x
  0
  $ echo 'foo'
  foo
  >>> print x

will result in a NameError.

Errors are displayed in standard doctest format:

  >>> print 'foo'
  bar

  --- /home/idan/dev/hg/default/tests/test-test.t
  +++ /home/idan/dev/hg/default/tests/test-test.t.err
  @@ -2,3 +2,16 @@
     > >>> print 'foo'
     > bar
     > EOF
  +  **********************************************************************
  +  File "/tmp/tmps8X_0ohg-tst", line 1, in tmps8X_0ohg-tst
  +  Failed example:
  +      print 'foo'
  +  Expected:
  +      bar
  +  Got:
  +      foo
  +  **********************************************************************
  +  1 items had failures:
  +     1 of   1 in tmps8X_0ohg-tst
  +  ***Test Failed*** 1 failures.
  +  [1]

As for the implementation, it's quite simple: when the test runner sees a line
starting with '>>>' it converts it, and all subsequent lines until the next
line that begins with '$' to a 'python -m heredoctest <<EOF' call with the
proper heredoc to follow. So if we have this test file:

  >>> for c in 'abcd':
  ...     print c
  a
  b
  c
  d
  $ echo foo
  foo

It gets converted to:

  $ python -m heredoctest <<EOF
  > >>> for c in 'abcd':
  > ...     print c
  > a
  > b
  > c
  > d
  > EOF
  $ echo foo
  foo

And then processed like every other test file by converting it to a sh script.
2011-10-12 22:01:14 +02:00
Idan Kamara
36075d5498 tests: add helper script for processing doctests read from stdin
Writes stdin to a temp file and doctests it.

In the future we might want to spare the temp file and directly call into
doctest.

Also, with some tweaking it seems possible to adjust the line numbers reported
in an error report so they match the ones in the original file.
2011-10-12 22:01:13 +02:00
Augie Fackler
b0cd40af6a alias: don't shadow commands that we only partially matched (issue2993) (BC)
Previously, if you set an alias for "ci", it'd also shadow "commit"
even though you didn't specify that. This occurred for all commands
with explicit short variations.
2011-10-11 17:20:03 -05:00
Eric Roshan Eisner
a6f358182b cmdutil.bailifchanged: abort for dirty subrepos 2011-10-11 18:18:15 -07:00
Na'Tosha Bard
8fc1950f68 largefiles: add test for status 2011-10-11 13:15:29 +02:00
Matt Mackall
944b7f7b5c pyflakes: clean up some import noise 2011-10-11 23:16:05 -05:00
Matt Mackall
72fd6652f4 import: add --edit switch 2011-10-11 08:32:04 -05:00
Na'Tosha Bard
d409efeebe largefiles: add beginnings of test (covers commit, remove, move, copy, and archive) 2011-10-10 17:34:17 +02:00
Matt Mackall
36ed787d41 backout: deprecate/hide support for backing out merges
This has never worked usefully:

- it can't undo a completely unwanted merge, as it leaves the merge in the DAG

- it can't undo a faulty merge as that means doing a merge correctly,
  not simply reverting to one or the other parent

Both of these kinds of merge also require coordinated action among
developers to avoid the bad merge continuing to affect future merges,
so we should stop pretending that backout is of any help here.

As backing out a merge now requires a hidden option, it can't be done
by accident, but will continue to 'work' for anyone who's already
dependent on --parent for some unknown reason.
2011-10-08 14:18:18 -05:00
Elifarley Callado Coelho Cruz
65983907f2 acl: more descriptive error messages 2011-10-06 19:45:26 -03:00
Greg Ward
aac3e5d5ea transplant: wrap a transaction around the whole command 2011-10-04 19:43:45 -04:00
Matt Mackall
6435383b32 help: generate command help into a single RST string for formatting 2011-10-07 17:08:24 -05:00
Matt Mackall
58c81fa35e help: unify the two -v notes for command help 2011-10-07 16:36:54 -05:00
Matt Mackall
f315765fd4 debuginstall: report the template path 2011-10-07 15:36:50 -05:00
Greg Ward
eb46fccd3a import: wrap a transaction around the whole command
Now 'rollback' after 'import' is less surprising: it rolls back all of
the imported changesets, not just the last one. As an extra added
benefit, you don't need 'rollback -f' after 'import --bypass', which
was an undesired side effect of fixing issue2998 (f9f52d71c33b)..

Note that this is a different take on issue963, which complained that
rollback after importing multiple patches returned the working dir
parent to the starting point, not to the second-last patch applied.
Since we now rollback the entire import, returning the working dir to
the starting point is entirely logical. So this change also undoes
b12d79024900, the fix to issue963, and updates its tests accordingly.

Bottom line: rollback after import was weird before issue963,
understandable since the fix for issue963, and even better now.
2011-10-02 14:34:28 -04:00
Greg Ward
dccb64c8ca import: simplify status reporting logic (and make it more I18N-friendly)
The old code printed (with ui.status()) the changeset ID created by
patch N after committing patch N+1, e.g.

  applying patch1
  applying patch2
  applied 1d4bd90af0e4

where 1d4bd90af0e4 is the changeset ID resulting from patch1. That's
just weird. It's also inconsistent: we only reported the changeset ID
when applying >1 patches. And it's inconsistent with 'commit', which
only tells you the new changeset ID in verbose mode. Finally, the
existing code was I18N-hostile, since it concatenated translated
strings.

The new way is to print the just-created changeset ID with ui.note()
immediately after committing it. It also clarifies what the user
message is for easier I18N.
2011-10-01 21:30:49 -04:00
Matt Mackall
9b00238567 rollback: use a hint for force 2011-10-01 16:18:51 -05:00
Greg Ward
3e3c1d99c8 rollback: avoid unsafe rollback when not at tip (issue2998)
You can get into trouble if you commit, update back to an older
changeset, and then rollback. The update removes your valuable changes
from the working dir, then rollback removes them history. Oops: you've
just irretrievably lost data running nothing but core Mercurial
commands. (More subtly: rollback from a shared clone that was already
at an older changeset -- no update required, just rollback from the
wrong directory.)

The fix assumes that only "commit" transactions have irreplaceable
data, and allows rolling back non-commit transactions as always. But
when rolling back a commit, check that the working dir is checked out
to tip, i.e. the changeset we're about to destroy. If not, abort. You
can get back the old (dangerous) behaviour with --force.
2011-09-30 21:58:54 -04:00
Matt Mackall
46b745f857 patchbomb: use prompt even in non-interactive mode
This matches our pre-existing behavior from:

changeset:   12197:0a3b85866451
user:        Christian Ebert <blacktrash@gmx.net>
files:       hgext/patchbomb.py tests/test-patchbomb.t
description:
patchbomb: show prompt and selection in non-interactive mode
changeset:   8940:023d1310d8a4
user:        Mads Kiilerich <mads@kiilerich.com>
date:        Sun Jun 21 03:13:38 2009 +0200
files:       mercurial/ui.py tests/test-merge-prompt.out tests/test-merge-tools.out
description:
ui.prompt: Show prompt and selection in non-interactive mode
2010-09-08 08:31:07 +02:00
Greg Ward
d81f53276c patchbomb: make it easy for the user to decline sending an intro message.
- prompt(): respect interactive mode; clarify logic a bit
- rename introneeded() to introwanted() and give it only one caller
- add 'numbered' arg to makepatch() so it does not need to call
  introwanted()
- factor makeintro() out of getpatchmsgs(), so it's easier to skip the
  intro message based on the user's behaviour

Unexpected but perfectly reasonable side effect: in non-interactive
mode, we don't show unanswerable "Cc" or "From" prompts anymore, so
remove those from the test expectations.
2011-09-27 22:38:47 -04:00
Yann E. MORIN
9b299f48e4 styles: add new 'bisect' style that prints the bisection status
The style is based on the 'default' style, but adds the bisection status
of the changesets.

Example output for a changeset in range:

  $ hg log --style bisect -r 15:16
  changeset:   15:857b178a7cf3
  bisect:      bad
  parent:      13:b0a32c86eb31
  parent:      10:429fcd26f52d
  user:        test
  date:        Thu Jan 01 00:00:15 1970 +0000
  summary:     merge 10,13

  changeset:   16:609d82a7ebae
  bisect:      bad (implicit)
  user:        test
  date:        Thu Jan 01 00:00:16 1970 +0000
  summary:     16

  $ hg log --quiet --style bisect
    18:d42e18c7bc9b
  B 17:228c06deef46
  B 16:609d82a7ebae
  B 15:857b178a7cf3
    14:faa450606157
  G 13:b0a32c86eb31
  G 12:9f259202bbe7
  G 11:82ca6f06eccd
  U 10:429fcd26f52d
  S 9:3c77083deb4a
  G 8:dab8161ac8fc
    7:50c76098bbf2
  I 6:a214d5d3811a
  I 5:385a529b6670
  I 4:5c668c22234f
  I 3:0950834f0a9c
  I 2:051e12f87bf1
    1:4ca5088da217
    0:33b1f9bc8bc5

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-22 01:51:36 +02:00
Yann E. MORIN
ad9ca506f5 templates: add 'bisect' keyword to return a cset's bisect status
This new 'bisect' template expands to a cset's bisection status (good,
bad and so on...). There is also a new 'shortbisect' filter that yields
a single char representing the cset's bisection status.

It uses the two recently-added hbisect.label() and .shortlabel() functions.

Example output using the repository in test-bisect2.t, and some made-up
state of the 'end at merge' test (with graphlog, it's so explicit):

  $ hg glog --template '{rev}:{node|short} {bisect}\n'  \
            -r 'bisect(range)|bisect(ignored)'
  o  17:228c06deef46: bad
  |
  o  16:609d82a7ebae: bad (implicit)
  |
  o    15:857b178a7cf3: bad
  |\
  | o  13:b0a32c86eb31: good
  | |
  | o  12:9f259202bbe7: good (implicit)
  | |
  | o  11:82ca6f06eccd: good
  | |
  @ |    10:429fcd26f52d: untested
  |\ \
  | o |  9:3c77083deb4a: skipped
  | |/
  | o  8:dab8161ac8fc: good
  | |
  o |    6:a214d5d3811a: ignored
  |\ \
  | o |  5:385a529b6670: ignored
  | | |
  o | |  4:5c668c22234f: ignored
  | | |
  o | |  3:0950834f0a9c: ignored
  |/ /
  o /  2:051e12f87bf1: ignored
  |/

And now the same with the short label:

  $ hg log --template '{bisect|shortbisect} {rev}:{node|short}\n'
    18:d42e18c7bc9b
  B 17:228c06deef46
  B 16:609d82a7ebae
  B 15:857b178a7cf3
    14:faa450606157
  G 13:b0a32c86eb31
  G 12:9f259202bbe7
  G 11:82ca6f06eccd
  U 10:429fcd26f52d
  S 9:3c77083deb4a
  G 8:dab8161ac8fc
    7:50c76098bbf2
  I 6:a214d5d3811a
  I 5:385a529b6670
  I 4:5c668c22234f
  I 3:0950834f0a9c
  I 2:051e12f87bf1
    1:4ca5088da217
    0:33b1f9bc8bc5

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-22 01:36:01 +02:00
Yann E. MORIN
c5cb886778 hbisect: add two new revset descriptions: 'goods' and 'bads'
This patch adds two new revset descriptions:
 - 'goods': the list of topologicaly-good csets:
   - if good csets are topologically before bad csets, yields '::good'
   - else, yields 'good::'
 - and conversely for 'bads'

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-24 01:32:50 +02:00
Martin Geisler
afe812d8de subrepo: try remapping subpaths using the "final" path
Before, the right-hand side of a .hgsub entry was used, as is, to
match the left-hand side of a subpaths entry. This turned out to be
less useful than expected since a .hgsub file with

  src/foo = src/foo

has little context to do remapping on. The new idea is therefore to
prefix the parent repo path *before* the remapping takes place.

If the parent repository path (as defined by _abssource) is

  http://example.net/parent

then the remapping for the above .hgsub entry will be done on the
expanded path:

  http://example.net/parent/src/foo

If this expanded path is not changed by the remapping, then we remap

  src/foo

alone. This is the old behavior where the right-hand side is remapped
without context.
2011-09-22 15:15:18 +02:00
Yann E. MORIN
bd0d47a8d1 revset.bisect: add 'ignored' set to the bisect keyword
The 'ignored' changesets are outside the bisection range, but are
changesets that may have an impact on the outcome of the bisection.

For example, in case there's a merge between the good and bad csets,
but the branch-point is out of the bisection range, and the issue
originates from this branch, the branch will not be visited by bisect
and bisect will find that the culprit cset is the merge.

So, the 'ignored' set is equivalent to:
    (   ( ::bisect(bad) - ::bisect(good) )
      | ( ::bisect(good) - ::bisect(bad) ) )
    - bisect(range)

 - all ancestors of bad csets that are not ancestors of good csets, or
 - all ancestors of good csets that are not ancestors of bad csets
 - but that are not in the bisection range.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-20 20:21:04 +02:00
Yann E. MORIN
67456b9f23 hbisect.get: use simpler code with repo.set(), fix 'pruned' set
Use repo.set() wherever possible, instead of locally trying to
reproduce complex graph computations.

'pruned' now means 'all csets that will no longer be visited by the
bisection'. The change is done is this very patch instead of its own
dedicated one becasue the code changes all over the place, and the
previous 'pruned' code was totally rewritten by the cleanup, so it
was easier to just change the behavior at the same time.

The previous series went in too fast for this cleanup pass to be
included, so here it is. ;-)

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-20 20:19:48 +02:00
Matt Mackall
4204f3ffa5 help: use RST to format option lists 2011-09-21 13:00:48 -05:00
Yann E. MORIN
bc668406c8 revset.bisect: add new 'untested' set to the bisect keyword
The 'untested' set is made of changesets that are in the bisection range
but for which the status is still unknown, and that can later be used to
further decide on the bisection outcome.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-17 14:33:20 +02:00
Yann E. MORIN
414f1cadec revset.bisect: add new 'pruned' set to the bisect keyword
The 'pruned' set is made of changesets that did participate to
the bisection. They are made of
 - all good changesets
 - all bad changsets
 - all skipped changesets, provided they are in the bisection range

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-17 17:30:35 +02:00
Yann E. MORIN
fdcfe85b83 revset.bisect: add new 'range' set to the bisect keyword
The 'range' set is made of all changesets that make the bisection
range, that is
 - csets that are ancestors of bad csets and descendants of good csets
 or
 - csets that are ancestors of good csets and descendants of bad csets

That is, roughly equivalent of:
  bisect(good)::bisect(bad) | bisect(bad)::bisect(good)

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-17 17:33:34 +02:00
Yann E. MORIN
0380741552 revset: rename bisected() to bisect()
Rename the 'bisected' keyword to simply 'bisect'.
Still accept the old name, but no longer advertise it.

As discussed with Matt on IRC.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-18 22:54:11 +02:00
Pierre-Yves David
d772591150 rebase: allow rebase to ancestor (issue3010)
We only deny rebasing onto direct parent. Thanks to the ancestor argument of
merge. the "implementation" of this feature only consist in loosing the check
and imply detach when rebasing on ancestor.
2011-09-19 16:57:13 +02:00
Greg Ward
cf0ea44613 rollback: only restore dirstate and branch when appropriate.
If the working dir parent was destroyed by rollback, then the old
behaviour is perfectly reasonable: restore dirstate, branch, and
bookmarks. That way the working dir moves back to an existing
changeset rather than becoming an orphan.

But if the working dir parent was unaffected -- say, you updated to an
older changeset and then did rollback -- then it's silly to restore
dirstate and branch. So don't do that. Leave the status of the working
dir alone. (But always restore bookmarks, because that file refers to
changeset IDs that may have been destroyed.)
2011-09-18 19:59:33 -04:00
Greg Ward
50490dab06 rollback: refactor for readability; cosmetics.
- clarify how we parse undo.desc
- fix bad grammar in an error message
- factor out ui local
- rename some local variables
- standardize string quoting
2011-09-16 21:38:06 -04:00
Matt Mackall
cca20e5611 minirst: end all blocks with newlines
Formerly RST blocks were formatted without a trailing newline, which
wasn't particularly helpful. Now everything that comes back from the
formatter has a trailing newline so remove all the extra ones added by
users.
2011-09-17 14:17:09 -05:00
Matt Mackall
ed51ea3c83 tests: fix up help test for new verbose sections 2011-09-17 13:37:47 -05:00
Matt Mackall
35b02109ec remove: suggest forget to undo adds 2011-09-16 17:53:58 -05:00
Matt Mackall
f675d667e0 diff: add help examples 2011-09-16 16:39:55 -05:00
Greg Ward
3ae65d3778 test-rollback: tinker a bit to make it easier to add more tests. 2011-09-14 22:01:39 -04:00
Greg Ward
5dc38028a3 share: allow trailing newline on .hg/sharedpath.
This is extremely handy for those occasional circumstances where you
need to edit .hg/sharedpath manually, since modern Unix text editors
make it surprisingly difficult to create a text file with no trailing
newline.
2011-09-14 22:28:27 -04:00
Simon Heimberg
1a9ba4e000 test: test for options duplicate with global options
issue2995 should not happen anymore
2011-09-14 17:06:33 +02:00
Sune Foldager
c24b2c45fb merge 2011-09-14 13:57:31 +02:00
Matt Mackall
af293bcf51 merge with stable 2011-09-12 23:02:45 -05:00
Lee Cantey
c042f32203 test-setdiscovery: allow for leading space in output of wc 2011-09-12 09:20:31 -07:00
Dan Villiom Podlaski Christiansen
81c86df26d test-setdiscovery.t: portability fix
The output of 'wc -c' is prefixed with spaces when using BSD wc.
2011-09-11 19:13:56 +02:00
Matt Mackall
757bb24a98 merge with stable 2011-09-10 17:56:42 -05:00
Christian Ebert
a12fb053ad keyword: make status test after record and kwexpand/kwshrink reliable
This guarantees test failure when the dirstate code is omitted at
the end of the kwtemplater.overwrite method.

kwexpand/kwshrink:
Without a 1 second wait the test succeeds sometimes, even when
the dirstate of the overwritten file is not forced to normal.

record:
status after recording an added file allows to check whether
normallookup is needed after overwriting.
2011-09-10 13:23:41 +01:00
Matt Mackall
b63b8d693b hgweb: properly check for bookmarks when drawing graph 2011-09-08 18:29:53 -05:00
Christian Ebert
5496330943 keyword: preserve file mode when overwriting 2011-09-08 19:30:25 +01:00
Martin Geisler
f1ef90be46 convert: use repo.join instead of referencing ".hg" directly 2011-09-08 10:20:42 +02:00
Martin Geisler
0bbf634d5b merge with stable 2011-08-30 15:22:10 +02:00
Matt Mackall
d4f66ce1b3 merge with stable 2011-08-26 16:08:24 -05:00
FUJIWARA Katsunori
5b5a083f16 i18n: calculate terminal columns by width information of each characters
neither number of 'bytes' in any encoding nor 'characters' is
appropriate to calculate terminal columns for specified string.

this patch modifies MBTextWrapper for:

  - overriding '_wrap_chunks()' to make it use not built-in 'len()'
    but 'encoding.colwidth()' for columns of string

  - fixing '_cutdown()' to make it use 'encoding.colwidth()' instead
    of local, similar but incorrect implementation

this patch also modifies 'encoding.py':

  - dividing 'colwith()' into 2 pieces: one for calculation columns of
    specified UNICODE string, and another for rest part of original
    one. the former is used from MBTextWrapper in 'util.py'.

  - preventing 'colwidth()' from evaluating HGENCODINGAMBIGUOUS
    configuration per each invocation: 'unicodedata.east_asian_width'
    checking is kept intact for reducing startup cost.
2011-08-27 04:56:12 +09:00
Mads Kiilerich
a9383c13c5 subrepo: fix cloning of repos from urls without slash after host (issue2970)
This fixes a regression introduced with the new url handling in 1.9.

This should perhaps be fixed in the url class instead, but that might be too
invasive for a stable bugfix.
2011-08-26 16:23:35 +02:00
Peter Arrenbrecht
bc696e8298 dagutil: fix off-by-one in inverserevlogdag buildup 2011-08-25 17:20:00 +02:00
Greg Ward
bc1dfb1ac9 atomictempfile: make close() consistent with other file-like objects.
The usual contract is that close() makes your writes permanent, so
atomictempfile's use of close() to *discard* writes (and rename() to
keep them) is rather unexpected. Thus, change it so close() makes
things permanent and add a new discard() method to throw them away.
discard() is only used internally, in __del__(), to ensure that writes
are discarded when an atomictempfile object goes out of scope.

I audited mercurial.*, hgext.*, and ~80 third-party extensions, and
found no one using the existing semantics of close() to discard
writes, so this should be safe.
2011-08-25 20:21:04 -04:00
Matt Mackall
afa4ceeda8 merge with stable 2011-08-25 16:21:53 -05:00
Simon Heimberg
02e6a1ca04 test: test unshare command 2011-08-13 00:08:26 +02:00
Matt Mackall
a2ffbae5a5 minirst: add a helper function to build an RST table from an array 2011-08-11 22:40:43 -05:00
Matt Mackall
4f50548371 minirst: add simple table support
This adds a subset of the 'simple table' support from RST to allow
formatting of options lists through RST. Table columns are
automatically sized based on contents, with line wrapping in the last
column.
2011-08-11 22:05:57 -05:00
Mads Kiilerich
ec483cfecb util: wrap lines with multi-byte characters correctly (issue2943)
This re-introduces the unicode conversion what was lost in e5976ee55f4b 5 years
ago and had the comment:
  To avoid corrupting multi-byte characters in line, we must wrap
  a Unicode string instead of a bytestring.
2011-08-06 23:52:20 +02:00
Mads Kiilerich
eec07d1052 util: wrap lines with multi-byte characters correctly (issue2943)
This re-introduces the unicode conversion what was lost in e5976ee55f4b 5 years
ago and had the comment:
  To avoid corrupting multi-byte characters in line, we must wrap
  a Unicode string instead of a bytestring.
2011-08-06 23:52:20 +02:00
Matt Mackall
96e41d94f5 merge with stable 2011-08-05 16:07:51 -05:00
Mads Kiilerich
6c5f486f38 test-http: test http authentication
The extension hack is based on Henrik Stuart's hg-textauth.
2011-08-05 00:39:54 +02:00
Patrick Mezard
107949ab73 http: pass user to readauthforuri() (fix f7ae45a69fcd)
urllib2 never handles URIs with credentials, we have to extract them and store
them in the password manager before handing the stripped URI. Half of the
changes deducing the username from the URI in f7ae45a69fcd were incorrect.
Instead, we retrieve the username from the password manager before passing to
readauthforuri().

test-hgweb-auth.py was passing because the test itself was flawed: it was
passing URIs with credentials to find_password(), which never happens.
2011-08-05 21:05:41 +02:00
Patrick Mezard
9aadd2540f http: strip credentials from urllib2 manager URIs (issue2885)
urllib2 password manager does not strip credentials from URIs registered with
add_password() and compare them with stripped URIs in find_password(). Remove
credentials from URIs returned by util.url.authinfo(). It sometimes works when
no port was specified as the URI host is registered too.
2011-08-05 21:05:40 +02:00
Matt Mackall
1731276051 help: drop with_version
If --version is specified, we print the version and exit (as documented).
2011-08-04 15:08:41 -05:00
Mads Kiilerich
965df356e5 url: really handle urls of the form file:///c:/foo/bar/ correctly
8264e5172141 made sure that paths that seemed to start with a windows drive
letter would not get an extra leading slash.

localpath should thus not try to handle this case by removing a leading slash,
and this special handling is thus removed.

(The localpath handling of this case was wrong anyway, because paths that look
like they start with a windows drive letter can't have a leading slash.)

A quick verification of this is to run 'hg id file:///c:/foo/bar/'.
2011-08-04 02:51:29 +02:00
Matt Mackall
bd0261e46e merge with stable 2011-08-01 18:10:05 -05:00
Patrick Mezard
8028e79c02 hgweb: do not ignore [auth] if url has a username (issue2822)
The [auth] section was ignored when handling URLs like:

  http://user@example.com/foo

Instead, we look in [auth] for an entry matching the URL and supplied user
name. Entries without username can match URL with a username. Prefix length
ties are resolved in favor of entries matching the username. With:

  foo.prefix = http://example.org
  foo.username = user
  foo.password = password
  bar.prefix = http://example.org/bar

and the input URL:

  http://user@example.org/bar

the 'bar' entry will be selected because of prefix length, therefore prompting
for a password. This behaviour ensure that entries selection is consistent when
looking for credentials or for certificates, and that certificates can be
picked even if their entries do no define usernames while the URL does.
Additionally, entries without a username matched against a username are
returned as if they did have requested username set to avoid prompting again
for a username if the password is not set.

v2: reparse the URL in readauthforuri() to handle HTTP and HTTPS similarly.
v3: allow unset usernames to match URL usernames to pick certificates. Resolve
prefix length ties in favor of entries with usernames.
2011-08-01 23:58:50 +02:00
Matt Mackall
e75325116a merge with stable 2011-08-01 10:54:34 -05:00
Matt Mackall
9dd4882287 hgweb: raw file mimetype guessing configurable, off by default (BC) (issue2923)
Before: hgweb made it possible to download file content with a content type
detected from the file extension. It would serve .html files as text/html and
could thus cause XSS vulnerabilities if the web site had any kind of session
authorization and the repository content wasn't fully trusted.

Now: all files default to "application/binary", which all important
browsers will refuse to treat as text/html. See the table here:

https://code.google.com/p/browsersec/wiki/Part2#Survey_of_content_sniffing_behaviors
2011-07-31 01:46:52 +02:00
Andrzej Bieniek
c9cba11d78 export: add %m to file format string (first line of the commit message)
$ hg commit -m "Initial commit"
$ hg export -o %m.patch tip          #It creates Initial_commit.patch file.
2011-07-30 11:08:45 +01:00
Adrian Buehlmann
b58d26815b windows: eliminate win32 wildcard import 2011-07-29 00:39:27 +02:00
Matt Mackall
7cae202e57 merge with stable 2011-07-29 17:27:38 -05:00
Matt Mackall
2a8aa75bfe merge with crew 2011-07-29 17:27:14 -05:00
Matt Mackall
f04c56437d merge with crew 2011-07-28 14:20:06 -05:00
Idan Kamara
19f1b36e00 dispatch: make sure global options on the command line take precedence
So if a user has verbose=True somewhere in his .hgrc files, giving -q
on the command line will override that.

This basically reverts cd10f447ccba.
2011-07-30 21:04:14 +03:00
Lee Cantey
974aa0a16d test-filecache: change for python 2.4 compatibility 2011-07-28 02:38:01 +03:00
Andrew Pritchard
f23118834a setdiscovery: return anyincoming=False when remote's only head is nullid
This fixes (issue2907) a crash when using 'hg incoming --bundle' with an empty
remote repo and a non-empty local repo.

This also fixes an unreported bug that 'hg summary --remote' erroneously
reports incoming changes when the remote repo is empty and the local is not.

Also, add a test to make sure issue2907 stays fixed
2011-07-27 18:32:54 -04:00
FUJIWARA Katsunori
a423a1ab9d i18n: use UTF-8 string to lower filename for case collision check
Some character sets, cp932 (known as Shift-JIS for Japanese) for
example, use 0x41('A') - 0x5A('Z') and 0x61('a') - 0x7A('z') as second
or later character.

In such character set, case collision checking recognizes different
files as CASEFOLDED same file, if filenames are treated as byte
sequence.

win32mbcs extension is not appropriate to handle this problem, because
this problem can occur on other than Windows platform only if
problematic character set is used.

Callers of util.checkcase() use known ASCII filenames as last
component of path, and string.lower() is not applied to directory part
of path. So, util.checkcase() is kept intact, even though it applies
string.lower() to filenames.
2011-07-28 14:36:07 +09:00
Patrick Mezard
50825774f7 notify: rewrite user documentation
The main intent is to turn the reference help into a configuration walkthrough.
It also fix several things:
- Do not suggest to use it for commit notifications, it cannot work
- Fix notify.strip default value
- Mention that subscriptions can be setup in Mercurial configuration files
- Improve notify.strip and notify.domain documentation
2011-07-26 21:30:12 +02:00
Peter Arrenbrecht
83352215f8 setdiscovery: fix hang when #heads>200 (issue2971)
When setting up the next sample, we always add all of the heads, regardless
of the desired max sample size. But if the number of heads exceeds this
size, then we don't add any more nodes from the still undecided set.
(This is debatable per se, and I'll investigate it, but it's how we designed
it at the moment.)

The bug was that we always added the overall heads, not the heads of the
remaining undecided set. Thus, if #heads>200 (desired sample size), we
did not make progress any longer.
2011-08-25 21:25:14 +02:00
Idan Kamara
ce5a7b8382 cmdserver: repo.invalidate() on every runcommand
This will trigger the filecache and recreate every cached property that was
changed by something other than this cmdserver instance (e.g. by running
'hg commit' at the cmdline).
2011-07-25 22:19:28 +03:00
Matt Mackall
291c95dda6 filecache: fix check-code complaint 2011-07-25 12:58:47 -05:00
Matt Mackall
416842428c merge with stable 2011-09-08 18:30:44 -05:00
Wagner Bruna
92a9350b35 test-i18n, i18n-pt_BR: updated test message changed in 73e761bdb384 2011-07-22 20:31:15 -03:00
David Golub
11baa243a9 dispatch: avoid double backslashes in error message
The use of %r in the format string caused Python to display Windows paths with
double backslashes.
2011-07-21 16:02:34 -04:00
Matt Mackall
edf401959a revert: restore check for uncommitted merge (issue2915) (BC)
This will restore the pre-1.9 behavior.
2011-07-21 15:39:37 -05:00
Kevin Bullock
e4deb92563 subrepo: don't commit in subrepo if it's clean
If a subrepo has changed relative to the outer repo's substate, but the
subrepo itself is clean, we don't need to commit in the subrepo.
2011-07-19 13:43:53 -05:00
Stefano Tortarolo
1f811e0952 rebase: block collapse with keepbranches on multiple named branches (issue2112)
Collapse and keepbranches should be blocked when there is more than
one named branch on the branch that's going to be rebased.
2011-07-18 22:58:21 +02:00
Idan Kamara
3b6032fdaf scmutil: introduce filecache
The idea is being able to associate a file with a property, and watch
that file stat info for modifications when we decide it's important for it to
be up-to-date. Once it changes, we recreate the object.

On filesystems that can't uniquely identify a file, we always recreate.

As a consequence, localrepo.invalidate() will become much less expensive in the
case where nothing changed on-disk.
2011-07-09 19:06:59 +03:00
Idan Kamara
09359f3d7d posix, windows: introduce cachestat
This class contains a stat result, and possibly other file info to reliably
determine between two points in time whether a file has changed.

Uniquely identifying a file gives us that reliability because we either
atomic rename or append. So one of two will happen: the file 'id' will change,
or the size of the file will change.

posix implements it simply by calling os.stat() and checking if the result
has st_ino.

For now on Windows we always assume the path is uncacheable. This can be
improved on NTFS due to file IDs: http://msdn.microsoft.com/en-us/library/aa363788(v=vs.85).aspx

So we need to find out if a file path is on an NTFS drive, for that we have:

- GetVolumeInformation, which unfortunately only works with a root path (but is available on XP)
- GetVolumeInformationByHandleW, works on a full file path but requires Vista or higher
2011-07-25 15:03:02 +03:00
Adrian Buehlmann
f1218befa0 util: eliminate wildcard imports 2011-07-23 12:29:52 +02:00
Matt Mackall
8cb28238c5 merge with stable 2011-07-23 11:52:25 -05:00
Matt Mackall
e7ac311a48 merge with stable 2011-07-22 17:17:23 -05:00
Augie Fackler
2847cf3f0e summary: show bookmarks separate from tags and note active mark (issue2892) 2011-07-18 07:53:26 -05:00
Andrew Pritchard
99a944ad65 localrepo: make requirements attribute of newly-created repos contain a set
This is for internal consistency, as this attribute typically contains a set
2011-07-20 18:23:06 -04:00
Matt Mackall
005a60af31 revset: add formatspec convenience query builder 2011-07-21 14:05:45 -05:00
Matt Mackall
fca6666a21 merge with stable 2011-07-19 17:51:45 -05:00
Matt Mackall
b269d772a4 merge with stable 2011-07-19 14:19:04 -05:00
Alexander Krauss
94dc232b7a hbisect: do not assume that min(good) is an ancestor of min(bad)
The included test used to report "inconsistent state", which is
incorrect. While this situation cannot occur when the user sticks to
the suggested bisect sequence. However, adding more consistent
good/bad information to the bisect state should be tolerated as well.
2011-07-17 00:36:43 +02:00
Matt Mackall
ca599a1af2 alias: fix up test results 2011-07-18 14:53:52 -05:00
Matt Mackall
5ce8f05f45 dispatch: move shell alias handling after early arg handling
--cwd, --repo, and --config obviously should be handled first
2011-07-15 16:06:53 -05:00
Matt Mackall
6353a59044 merge with stable 2011-07-15 14:27:16 -05:00
Stefano Tortarolo
80ea985fc0 rebase: reset bookmarks (issue2265 and issue2873) 2011-07-15 20:07:19 +02:00
Matt Mackall
9da252ada5 merge with stable 2011-07-15 12:56:58 -05:00
Idan Kamara
bab89cfab6 cmdserver: take repo.baseui as our ui
The ui passed to server() is really repo.ui, that is it contains its local
configuration as well.

When running commands that use a different repo than the servers cached repo,
we don't want to use that ui as the baseui for the new repo.
2011-07-14 11:46:15 +03:00
Idan Kamara
d17c3e4003 test-commandserver: explicitly close opened file 2011-07-15 16:28:09 +03:00
Matt Mackall
5ad9027afd merge with stable 2011-07-13 19:27:56 -05:00
Matt Mackall
c78a7611d4 subrepo: use working copy of .hgsub to filter status (issue2901) 2011-07-13 17:41:49 -05:00
Matt Mackall
5d114db2de merge with crew 2011-07-13 19:24:54 -05:00
Matt Mackall
4773ae257d merge with stable 2011-07-13 16:29:28 -05:00
Patrick Mezard
b4b683d9b9 test-notify-changegroup: test notifications on unbundle 2011-07-13 19:23:12 +02:00
Patrick Mezard
f7c5a41400 run-tests: fix summary when accepting changes interactively
Accepted changes were not counted as success.
2011-07-13 19:23:08 +02:00
Matt Mackall
107896d6aa merge with stable 2011-07-12 16:27:03 -05:00
Idan Kamara
550bca7579 cmdserver: restore old working dir after dispatch when we have --cwd 2011-07-11 17:49:45 +03:00
Idan Kamara
76465b4a18 hooks: redirect stdout/err/in to the ui descriptors when calling python hooks
We need to make sure that python hooks I/O goes through the ui descriptors so
it doesn't mess the command server protocol.
2011-07-09 19:06:59 +03:00
Cédric Krier
acde2a727f hgcia: Set default value of strip to -1 (issue2891)
For backward compatibility the root path of the repository is not
displayed unless the user has specified an explicit strip value.
2011-07-09 09:44:15 +02:00