Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 31 Jan 2014 01:25:56 -0800] rev 20486
pull: move phases synchronisation in its own function
Now that every necessary information is held in the `pulloperation` object, we
can finally extract the phase synchronisation phase to it's own function.
This changeset is pure code movement only.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 31 Jan 2014 01:21:42 -0800] rev 20485
pull: move pulled subset into the object
We compute the set of local changeset that were target of the pull. This is then
used by phases logic to decide which part of the history should have it phase
updated.
We move this information into the object to allow extraction of phase
synchronisation in its own function.
I expect obsolete marker exchange to use it too in the future.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 15:56:25 -0800] rev 20484
revset: added operations to spanset to duck type baseset
Added more operations which are not lazy but only used so far to duck type
baseset.
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Feb 2014 10:22:43 -0800] rev 20483
revset: added basic operations to spanset
Added methods __add__, __sub__ and __and__ to duck type more methods in
baseset
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 12 Feb 2014 10:16:21 -0800] rev 20482
revset: added spanset class to represent revision ranges
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 08:36:11 -0800] rev 20481
revset: added lazyset implementation to extra revset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 08:32:40 -0800] rev 20480
revset: added lazyset implementation to converted revset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 08:31:55 -0800] rev 20479
revset: added lazyset implementation to closed revset
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 31 Jan 2014 01:12:35 -0800] rev 20478
push: feed pulloperation object to _pullobsolete function
We now have all necessary information in the `pulloperation` object itself.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Fri, 31 Jan 2014 01:04:05 -0800] rev 20477
pull: move transaction logic into the pull object
Most local change that occurs during a pull are doing within a `transaction`.
Currently this mean (1) adding new changeset (2) adding obsolescence markers. We
want the two operations to be done in the same transaction. However we do not
want to create a transaction if nothing is added to the repo. Creating an empty
transaction would drop the previous transaction data and confuse tool and people
who are still using rollback.
So the current pull code has some logic to create and handle this transaction on
demand. We are moving this logic in to the `pulloperation` object itself to
simplify this lazy creation logic through all different par of the push.
Note that, in the future, other part of pull (phases, bookmark) will probably
want to be part of the transaction too.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:38:41 -0800] rev 20476
pull: move obsolescence marker exchange in the exchange module
The obsolescence marker exchange code was already extracted during a previous
cycle. We are moving the extracted functio in this module. This function will
read and write data in the `pulloperation` object and I prefer to have all core
function collaborating through this object in the same place.
This changeset is pure code movement only. Code change for direct consumption of
the `pulloperation` object will come later.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Sat, 01 Feb 2014 03:49:29 -0800] rev 20475
pull: move `force` argument into pull object
One more step toward a more modular pulh function.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:35:55 -0800] rev 20474
pull: move `heads` argument into pull object
One more step toward a more modular pull function.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:32:04 -0800] rev 20473
pull: move `remote` argument into pull object
One more step toward a more modular pull function.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:24:49 -0800] rev 20472
pull: introduce a pulloperation object
This object will hold all data and state gathered through the pull. This will
allow us to split the long function into multiple small one. Smaller function
will be easier to maintains and wrap. The idea is to blindly store all
information related to the pull in this object so that each step and extension
can use them if necessary.
We start by putting the `repo` variable in the object. More migration in other
function.
Simon Heimberg <simohe@besonet.ch> [Mon, 27 Jan 2014 21:39:25 +0100] rev 20471
tests: lines with largefile .* file://$TESTTMP also match on windows
on windows, largefile paths are written as "file:///C:/temp/...", corresponding
to "file:///$TESTTMP/..." (all three slashes shown).
But on posix systems they are written as "file:///tmp/..." corresponding to
"file://$TESTTMP/..." (only two slashes shown).
Write the glob "file:/*/" to match both versions.
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 11 Feb 2014 16:30:23 -0800] rev 20470
debugobsolete: extract marker display in a dedicated function
We want to be able to reuse and extend it from other function or
extension while working on markers exchange.
This changeset is pure core movement.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 16:12:49 -0800] rev 20469
exchange: extract pull function from localrepo
The localrepo class if far too big. Push and pull logic are extracted and
reworked to better fit with the fact we exchange more than bundle now.
This changeset extract the pulh code. later changeset will slowly slice it into
smaller brick.
The localrepo.pull method is kept for now to limit impact on user code. But it
will be ultimately removed, now that the public API is hold by peer.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 23:12:03 -0800] rev 20468
push: extract new common set computation from phase synchronisation
Now that every necessary information is held in the `pushoperation` object, we
can extract the new common set computation to it's own function.
This changeset is pure code movement only.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 23:16:43 -0800] rev 20467
push: move `commonheads` into the push object
The phase synchronisation start by computing the new set of common head between
local and remote and then do the phase synchronisation on this set. This new
common set logic will eventually be used by the obsolescence markers exchange.
So we are going to split the long phase synchronisation in two.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 21:05:29 -0800] rev 20466
push: move discovery in its own function
Now that every necessary information is held in the `pushoperation` object, we
can extract the discovery logic to it's own function.
This changeset is pure code movement only.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 21:01:21 -0800] rev 20465
push: move outgoing check logic in its own function
Now that every necessary information is held in the `pushoperation` object, we
can extract the part responsible of aborting the push to it's own function.
This changeset is mostly pure code movement. the exception is the fact this
function returns a value to decide if changeset bundle should be pushed.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 21:01:13 -0800] rev 20464
push: move `incoming` into the push object
The fact that there is some unknown changes on remote one of the result of
discovery. It is then used by some push validation logic.
We move it in the object to be able to extract the said logic.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:44:55 -0800] rev 20463
push: move changeset push logic in its own function
Now that every necessary information is held in the `pushoperation` object, we
can extract the logic pushing changeset to it's own function.
This changeset is pure code movement only.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:34:35 -0800] rev 20462
push: move `remoteheads` into the push object
The heads of the remote repository are used to detect race when pushing
changeset. We now store this information in `pushoperation` object to allow
extraction of the changeset pushing part.
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 04 Feb 2014 15:07:03 -0800] rev 20461
revset: added lazyset implementation to contains revset
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 04 Feb 2014 09:29:19 -0800] rev 20460
revset: added lazyset implementation to secret revset
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 04 Feb 2014 09:14:45 -0800] rev 20459
revset: added lazyset implementation to matching revset
Performance Benchmarking:
$ time hg log -qr "first(matching(0))"
0:
9117c6561b0b
real 0m2.213s
user 0m2.149s
sys 0m0.055s
$ time ./hg log -qr "first(matching(0))"
0:
9117c6561b0b
real 0m0.177s
user 0m0.137s
sys 0m0.038s
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 04 Feb 2014 08:51:07 -0800] rev 20458
revset: added lazyset implementation to _matchfiles
Performance Benchmarking:
$ time hg log -qr "first(file(README))"
0:
9117c6561b0b
real 0m2.234s
user 0m2.180s
sys 0m0.044s
$ time ./hg log -qr "first(file(README))"
0:
9117c6561b0b
real 0m0.172s
user 0m0.129s
sys 0m0.042s
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 31 Jan 2014 10:47:51 -0800] rev 20457
revset: added lazyset implementation to checkstatus
This improves the performance of the revsets 'adds' 'modifies' and 'removes'
Performance benchmarking:
$ time hg log -qr "first(adds(README))"
0:
9117c6561b0b
real 0m2.279s
user 0m2.222s
sys 0m0.053s
$ time ./hg log -qr "first(adds(README))"
0:
9117c6561b0b
real 0m0.172s
user 0m0.131s
sys 0m0.041s
$ time hg log -qr "first(modifies(README))"
1:
273ce12ad8f1
real 0m2.292s
user 0m2.227s
sys 0m0.061s
$ time ./hg log -qr "first(modifies(README))"
1:
273ce12ad8f1
real 0m0.178s
user 0m0.130s
sys 0m0.038s
$ time hg log -qr "first(removes(README))"
2379:
e90cff87f871
real 0m2.297s
user 0m2.235s
sys 0m0.058s
$ time ./hg log -qr "first(removes(README))"
2379:
e90cff87f871
real 0m0.975s
user 0m0.797s
sys 0m0.056s
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 30 Jan 2014 17:46:08 -0800] rev 20456
revset: added lazyset implementation to public revset
Performance Benchmarking:
$ time hg log -qr "first(public())"
...
real 0m1.184s
user 0m1.051s
sys 0m0.130s
$ time ./hg log -qr "first(public())"
...
real 0m0.548s
user 0m0.427s
sys 0m0.118s
Olle Lundberg <geek@nerd.sh> [Wed, 12 Feb 2014 01:00:51 +0100] rev 20455
color: add debugcolor command (
issue4094)
This patch adds a debugcolor command that prints all
colors that the extension knows about.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 30 Jan 2014 16:47:29 -0800] rev 20454
revset: added lazyset implementation to merge revset
Performance benchmarking:
$ time hg log -qr "first(merge())"
102:
58039eddbdda
real 0m0.276s
user 0m0.208s
sys 0m0.047s
$ time ./hg log -qr "first(merge())"
102:
58039eddbdda
real 0m0.192s
user 0m0.154s
sys 0m0.027s
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 30 Jan 2014 16:03:18 -0800] rev 20453
revset: added lazyset implementation to grep revset
Performance benchmarking:
$ time hg log -qr "first(grep(hg))"
0:
9117c6561b0b
real 0m2.214s
user 0m2.163s
sys 0m0.045s
$ time ./hg log -qr "first(grep(hg))"
0:
9117c6561b0b
real 0m0.211s
user 0m0.146s
sys 0m0.035s
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 30 Jan 2014 15:39:56 -0800] rev 20452
revset: added lazyset implementation to desc revset
Performance benchmarking:
$ time hg log -qr "first(desc(hg))"
changeset: 0:
9117c6561b0b
real 0m2.210s
user 0m2.158s
sys 0m0.049s
$ time ./hg log -qr "first(desc(hg))"
changeset: 0:
9117c6561b0b
real 0m0.171s
user 0m0.131s
sys 0m0.035s
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 03 Feb 2014 16:15:25 -0800] rev 20451
revset: added lazyset implementation to draft revset
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 29 Jan 2014 15:23:16 -0800] rev 20450
revset: added lazyset implementation bookmark revset
Lucas Moscovicz <lmoscovicz@fb.com> [Mon, 03 Feb 2014 16:02:48 -0800] rev 20449
revset: added lazyset implementation to date revset
Performance Benchmarking:
$ time hg log -qr "first(date(05/03/2005))"
0:
9117c6561b0b
real 0m3.157s
user 0m2.994s
sys 0m0.087s
$ time ./hg log -qr "first(date(05/03/2005))"
0:
9117c6561b0b
real 0m0.509s
user 0m0.289s
sys 0m0.070s
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 29 Jan 2014 09:22:31 -0800] rev 20448
revset: added lazyset implementation to author revset
Performance benchmarking:
$ time hg log -qr "first(author(mpm))"
0:
9117c6561b0b
real 0m3.486s
user 0m3.317s
sys 0m0.077s
$ time ./hg log -qr "first(author(mpm))"
0:
9117c6561b0b
real 0m0.551s
user 0m0.295s
sys 0m0.072s
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 29 Jan 2014 09:04:03 -0800] rev 20447
revset: added lazyset implementation to keyword revset
Performance benchmarking:
$ time hg log -qr "first(keyword(changeset))"
0:
9117c6561b0b
real 0m3.466s
user 0m3.345s
sys 0m0.072s
$ time ./hg log -qr "first(keyword(changeset))"
0:
9117c6561b0b
real 0m0.365s
user 0m0.199s
sys 0m0.083s
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 28 Jan 2014 16:19:30 -0800] rev 20446
revset: changed limit revset implementation to work with lazy revsets
Performance benchmarking:
$ time hg log -qr "first(branch(default))"
0:
9117c6561b0b
real 0m3.130s
user 0m3.025s
sys 0m0.074s
$ time ./hg log -qr "first(branch(default))"
0:
9117c6561b0b
real 0m0.300s
user 0m0.198s
sys 0m0.069s
Lucas Moscovicz <lmoscovicz@fb.com> [Wed, 05 Feb 2014 16:12:03 -0800] rev 20445
revset: added lazyset implementation to branch revset
Performance Benchmarking:
$ time hg log -l1 -qr "branch(default)"
0:
9117c6561b0b
real 0m3.366s
user 0m3.217s
sys 0m0.095s
$ time ./hg log -l1 -qr "branch(default)"
0:
9117c6561b0b
real 0m0.389s
user 0m0.199s
sys 0m0.061s
Simon Heimberg <simohe@besonet.ch> [Tue, 11 Feb 2014 01:15:07 +0100] rev 20444
run-tests: fix typo and print out failing line
Instead of stripping the newline and printing the line, only the newline was
printed.
The output on buildbot will make more sense now.
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 28 Jan 2014 15:19:14 -0800] rev 20443
revset: changed getset so that it can return a lazyset
Not converting it manually to a baseset anymore. At this point every revset
method should return a baseset typed structure.
Lucas Moscovicz <lmoscovicz@fb.com> [Tue, 11 Feb 2014 09:00:38 -0800] rev 20442
hgext: updated extensions to return a baseset when adding symbols
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:22:43 -0800] rev 20441
push: move phases synchronisation function in its own function
Now that every necessary information is held in the `pushoperation` object, we
can finally extract the phase synchronisation phase to it's own function. This
is the first concrete block of code we extract from the huge push function.
Hooray!
This changeset is pure code movement only.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:18:26 -0800] rev 20440
push: move outgoing object in the push object
The set of outgoing and common changeset are used by phases to compute the new
common set between local and remote. So we need to move it into the object to
extract the phase sync from the god function.
Note that this information will be used by obsolescence markers too.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 19:43:28 -0800] rev 20439
push: move push return value in the push object
The return code convey information about the success of changeset push. This is
used by phases to compute the new common set between local and remote. So we
need to move it into the object to extract the phase sync from the god
function.
Note that this information will be used by obsolescence markers too.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:10:59 -0800] rev 20438
push: move local phase move in a normal function
We now have the modularity for simpler approach `localphasemove`.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:09:21 -0800] rev 20437
push: explicitly feed pushop to localphasemove
Now that pushop is holding all the push related data, we do not really need a
closure anymore. So we start feeding the object to `localphasemove` and will
make it a normal function in the next commit.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 20:00:34 -0800] rev 20436
push: move local lock logic in pushoperation
During push, we try to lock the local repo to move local phase according to what
we saw/pushed on the remote repo. Locking the repo may fail, in that case we let
the push proceed without local phase movement (printing warning).
This mean we have code in phase synchronisation that will check if the local repo is
locked or not. we need to move this information in the push object to be able to
extract the phase synchronisation in its own function. This is done as a boolean
because putting reference to the actual lock outside of the main function
sounded a bad idea.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 19:55:09 -0800] rev 20435
push: move obsolescence related message into _pushobsolescence function
No good reason to have them in the main fonction.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 19:51:21 -0800] rev 20434
push: drop now outdated comment
This `_pushobsolete` now exist for modularity purpose.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:56:09 -0800] rev 20433
push: feed pushoperation object to _pushobsolete function
This will allow the obsolete marker synchronisation to have full
information on the ongoing push and pass information to other
operation.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:54:47 -0800] rev 20432
push: move obsolescence marker exchange in the exchange module
The obsolescence marker exchange code was already extracted during a previous
cycle. We are moving the extracted functio in this module. This function will
read and write data in the `pushoperation` object and I prefer to have all core
function collaborating through this object in the same place.
This changeset is pure code movement only. Code change for direct consumption of
the `pushoperation` object will come later.
Pierre-Yves David <pierre-yves.david@logilab.fr> [Thu, 30 Jan 2014 17:51:41 -0800] rev 20431
push: feed pushoperation object to _pushbookmark function
This will able the bookmark synchronisation to have full information on the
ongoing push and pass information to other operation.
Matt Mackall <mpm@selenic.com> [Mon, 10 Feb 2014 17:31:26 -0600] rev 20430
merge with stable
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 14:29:37 -0800] rev 20429
revset: added operations to duck type baseset
Added more operations which are not lazy but only used so far to duck type
baseset.
Their implementations will be changed in future patches.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 14:25:37 -0800] rev 20428
revset: added basic operations to lazyset
Added methods __add__, __sub__ and __and__ to duck type more methods in
baseset
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 14:19:40 -0800] rev 20427
revset: added lazyset class with basic operations
This class allows us to return values from large revsets as soon as they are
computed instead of having to wait for the entire revset to be calculated.
Simon Heimberg <simohe@besonet.ch> [Sun, 09 Feb 2014 00:26:01 +0100] rev 20426
tests: test that the pid returned by `hg serve` looks reasonable
This failed on windows before win32.spawndetached has been fixed. The process
name was "cmd.exe" and not "hg.exe" or "python.exe".
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Feb 2014 14:35:07 +0100] rev 20425
win32: spawndetached returns pid of detached process and not of cmd.exe
win32.spawndetached starts the detached process by `cmd.exe` (or COMSPEC). The
pid it returned was the one of cmd.exe and not the one of the detached process.
When this pid is used to kill the process, the detached process is not killed,
but only cmd.exe.
With this patch the pid of the detached process is written to the pid file.
Killing the process works as expected.
The pid is only evaluated on writing the pid file. It is unnecessary to search
the pid when it is not needed. And more important, it probably does not yet
exist right after the cmd.exe process was started. When the pid is written to
the file, waiting for the start of the detached process has already happened.
Use this functionality instead of writing a 2nd wait function.
Many tests on windows will not fail anymore, all those with the first failing
line "abort: child process failed to start". (The processes still hanging
around from previous test runs have to be killed first. They still block a
tcp port.)
A good test for the functionality of this patch is test-treediscovery.t,
because it starts and kills `hg serve -d` several times.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 14:57:25 -0800] rev 20424
revset: minor changes adding baseset to revsets
Changed bits of code to work with baseset implementations.
Simon Heimberg <simohe@besonet.ch> [Mon, 10 Feb 2014 22:56:10 +0100] rev 20423
tests: rewrite path in test-shelve.t for not being mangled on msys
msys (on windows) converets '-R bundle:.XX/XX' to '-R bundle:;.XX/XX'. Avoid
this by writing '-R bundle://.XX/XX'. This is used more often than the
alternative work arounds like '-Rbundle://.XX/XX' or '-R bundle:Y/../.XX/XX'.
Brodie Rao <brodie@sf.io> [Mon, 10 Feb 2014 14:51:06 -0800] rev 20422
hooks: only disable/re-enable demandimport when it's already enabled
This fixes an issue introduced in
d7c28954d901 where, when disabling
demandimport while running hooks, it's inadvertently re-enabled even when
it was never enabled in the first place.
This doesn't affect normal command line usage of Mercurial; it only matters
when Mercurial is run with demandimport intentionally disabled.
Matt Mackall <mpm@selenic.com> [Sun, 09 Feb 2014 18:36:37 -0600] rev 20421
merge with stable
Mads Kiilerich <madski@unity3d.com> [Fri, 07 Feb 2014 17:29:37 +0100] rev 20420
convert: secret config option for disabling debugsvnlog
Subversion issues involving svn log such as
d54467c1a198 can be tricky to
debug when it is run in an 'hg debugsvnlog' sub process. Debugging is simpler
when convert only uses one process.
With this change convert will invoke the svn log directly when setting
[convert]
svn.debugsvnlog = False
This is intentionally not documented.
Mads Kiilerich <madski@unity3d.com> [Fri, 07 Feb 2014 17:28:37 +0100] rev 20419
convert: make subversion revsplit more stable when meeting revisions without @
revsplit would crash for instance if given a subversion string without @ ...
and that could somehow happen when playing around with convert.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 14:57:25 -0800] rev 20418
revset: minor changes adding baseset to revsets
Changed bits of code to work with baseset implementations.
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 11:37:16 -0800] rev 20417
revset: added __add__ method to baseset class
Lucas Moscovicz <lmoscovicz@fb.com> [Thu, 06 Feb 2014 11:33:36 -0800] rev 20416
revset: added docstring to baseset class
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:43:54 +0100] rev 20415
merge: don't overwrite file untracked after remove, abort with 'untracked files'
Merge could overwrite untracked files and cause data loss.
Instead we now handle the 'local side removed file and has untracked file
instead' case as the 'other side added file that local has untracked' case:
FILE: untracked file exists
abort: untracked files in working directory differ from files in requested revision
It could perhaps make sense to create .orig files when overwriting, either
instead of aborting or when overwriting anyway because of force ... but for now
we stay consistent with similar cases.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:54:40 +0100] rev 20414
shelve: better (and slightly redundant) test coverage for unshelve conflicts
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:54:27 +0100] rev 20413
shelve: status messages from unshelve
It was hard for the user to know what was going on when unshelving - especially
if the user had to resolve conflicts and thus got to see the intermediate
states.
Seeing that pending changes was gone could scare the user, make him panic, and
do stuff that really made him lose data.
Merging (both when rebasing and with pending changes) also requires some
understanding of where in the process you are and what you are merging.
To help the user we now show a couple of status messages (when relevant):
temporarily committing pending changes (restore with 'hg unshelve --abort')
rebasing shelved changes
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:54:12 +0100] rev 20412
shelve: be quiet when unshelve pulls from the shelve bundle
unshelve was quite verbose and it was hard for a user to follow what really was
going on. It ended up saying 'added 1 changesets' ... but the user just
expected and got pending changes and never saw any changeset.
The use of bundles is an implementation detail that we don't have to leak here.
Pulling is quite verbose, optimized for pulling many changesets from remote
repos - that is not the case here.
Instead, set the quiet flag when pulling the bundle - not only when temporarily
committing pending changes.
The 'finally' restore of ui.quiet is moved to the outer try/finally used for
locking.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:53:27 +0100] rev 20411
shelve: add 'changes to' prefix to default shelve message
The shelved changes _could_ perhaps be amended to the parent changeset but it
_is_ not the parent changeset. Using the description from the parent changeset
is thus wrong and confusing.
Instead, add a 'changes to' prefix.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:53:27 +0100] rev 20410
shelve: mention FILE options in help
Shelve do normally take a list of files or patterns to shelve and the command
summary should thus show [FILE]...
Note: --delete is a bit special and interpret the parameters as a list of
shelve names. This change makes that even less obvious from the help. Too bad
- we can't please everyone.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:53:25 +0100] rev 20409
shelve: mention walk options in help
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:52:56 +0100] rev 20408
shelve: really pass publicancestors to changegroupsubset - not the parents
publicancestors returned the parents of the public ancestors ... and
changegroupsubset used the parents of these as base for the bundle. That gave
bundles with one layer of changesets more than necessary.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:52:46 +0100] rev 20407
shelve: publicancestors do not have to visit nullrev
Not visiting nullrev seems more correct and might be a minor optimization.
Mads Kiilerich <madski@unity3d.com> [Mon, 10 Feb 2014 00:52:16 +0100] rev 20406
localrepo: make it clear that changegroupsubset doesn't take bases but roots
changegroupsubset will take the parents of the roots to find the bases.
Other parts of Mercurial do not expect that, and a result of that is that some
bundles contain more changesets than necessary.
No real changes here - just renaming a parameter to document what it is.
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 17:13:45 -0500] rev 20405
repoview: use repo.revs() instead of a private revset method
Breaks an import cycle.
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 14:55:04 -0500] rev 20404
commands: use ctx.getfileset instead of fileset.getfileset
Matt Mackall <mpm@selenic.com> [Sun, 09 Feb 2014 17:31:26 -0600] rev 20403
push: backout
2bc520bd0ce0 due to test failures
Matt Mackall <mpm@selenic.com> [Sun, 09 Feb 2014 17:30:49 -0600] rev 20402
mq: fix qimport url check
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 14:54:42 -0500] rev 20401
match: use ctx.getfileset() instead of fileset.getfileset()
Resolves an import cycle involving match and merge.
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 15:27:49 -0500] rev 20400
context: add a getfileset() method so fewer things need fileset directly
Allows me to break an import cycle in a subsequent change.
Augie Fackler <raf@durin42.com> [Tue, 04 Feb 2014 18:09:20 -0500] rev 20399
fix_bytesmod: fix defects in fix_bytesmod so it produces working code
Prior to this change, the fixer did not always add the py3kcompat
import to files, and did not manage to blacklist itself.
Mads Kiilerich <madski@unity3d.com> [Thu, 06 Feb 2014 02:19:38 +0100] rev 20398
discovery: improve "note: unsynced remote changes!" warning
This note (which actually is a warning) frequently caused confusion.
"unsynced" is not a well established user-facing concept in Mercurial and the
message was not very specific or helpful.
Instead, show a messages like:
remote has heads on branch 'default' that are not known locally:
6c0482d977a3
and show it before aborting on "push creates new remote head". This will also
give more of a hint in the case where the branch has been closed remotely and
'hg heads' thus not would show any new heads after pulling.
A similar (but actually very different) message was addressed in
6b618aa08b6e.
Mads Kiilerich <madski@unity3d.com> [Fri, 07 Feb 2014 17:26:28 +0100] rev 20397
convert: drop unused getheads from sinks
Simon Heimberg <simohe@besonet.ch> [Sat, 08 Feb 2014 10:41:17 +0100] rev 20396
tests: on windows, run command explicitly in sh for working command substitution
On windows, os.system runs the command in cmd.exe, which does not know command
substitution. To let this work, run the command explicitly in sh.
This fixes the failure of this test on windows.
Simon Heimberg <simohe@besonet.ch> [Tue, 28 Jan 2014 00:33:52 +0100] rev 20395
tests: test-module-imports.t works on windows (with backslash path sep)
Transform the backslashes to slashes on windows, because they are eaten up by
the shell. (Similar as done in test-check-pyflakes.t.)
This test will not produce a traceback on windows anymore. But the test still
fails because the detected mixed imports differ.
Matt Mackall <mpm@selenic.com> [Fri, 07 Feb 2014 17:54:10 -0600] rev 20394
qimport: allow importing URLs
Lucas Moscovicz <lmoscovicz@fb.com> [Fri, 07 Feb 2014 15:01:33 -0800] rev 20393
revset: fixed bug where revset returning order was being changed
Some revsets were innecesarily turning the subset into a set before iterating
over it. This led to returning order changing in some cases.
Augie Fackler <raf@durin42.com> [Mon, 03 Feb 2014 18:36:00 -0500] rev 20392
itersubrepos: move to scmutil to break a direct import cycle
Mads Kiilerich <madski@unity3d.com> [Fri, 07 Feb 2014 02:59:46 +0100] rev 20391
import-checker: handle standard modules with arch in the filename
Installations with module names like
/usr/lib/python2.7/lib-dynload/bz2.x86_64-linux-gnu.so occurs in the wild.
Let's just ignore everything after first '.' when guessing the Python module
name.