Gregory Szorc <gregory.szorc@gmail.com> [Mon, 24 Mar 2014 21:37:33 -0700] rev 21006
run-tests: Pass arguments into argument parser
Before, arguments were not passed into the optparse.OptionParser
instance and were coming from sys.argv. This patch enables consumers to
define the list of arguments to parse without having to adjust sys.argv.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Apr 2014 07:36:14 -0700] rev 21005
bundle2: rename part to bundlepart
We are going to introduce an `unbundlepart` dedicated to reading bundle. So we
need to rename the one used to create bundle. Even if dedicated to creation, this
is still used for unbundling until we get the new class.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Apr 2014 16:43:01 -0400] rev 21004
bundle2: comment to clarify why the handler call is where it is
The reason why it is here is not obvious. I'm the one who wrote it there in the
first place and almost moved it 2 weeks later.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 12 Apr 2014 00:53:15 -0400] rev 21003
bundle2: use chunkbuffer for exchange.getbundle
We can use `util.chunkbuffer` instead.
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 12 Apr 2014 14:56:55 -0400] rev 21002
bundle2: lazily generate the changegroup part in exchange.getbundle
Now that we have lazy generation of parts, let's use it.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Apr 2014 08:04:16 -0700] rev 21001
bundle2: support chunk iterator as part data
When the `part.data` attribute is an iterator, we assume it is an iterator of
chunks and use it.
We use a chunkbuffer to yield chunks of 4096 bytes.
The tests are updated to use this feature.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 10 Apr 2014 12:33:20 -0700] rev 21000
bundle2: extract a _payloadchunks method for part
We are preparing streaming capability for part. So the generation of payload
chunk will becomes more complex. We extract this part in its own function before
any changes.
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 10 Apr 2014 13:19:00 -0700] rev 20999
changegroup: move chunk extraction into a getchunks method of unbundle10
This code used to be in `writebundle` only. We needs to make it more broadly
available for bundle2. The "changegroup" bundle2 part has to retrieve the
binary content of changegroup stream. We moved the chunks retrieving code into
the `unbundle10` object directly and the `writebundle` code is now using that.
This split is useful for bundle2 purpose, we want to be able to easily stream
changegroup content in a part.
To keep thing simples, we kept compression out of the new methods. If it make
more sense in the future, compression may get included in this function too.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 25 Mar 2014 15:05:11 -0700] rev 20998
bundle2: use reply part to return result of addchangegroup
We now have an official way to return the result of addchangegroup. The tests are
updated to check that the return bundle is properly created. It will be used
when push is bundle2 enabled.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 04 Apr 2014 14:24:11 -0700] rev 20997
bundle2: produce a bundle2 reply
We do not know yet what kind of data future features and extensions will need to
exchange. To handle that, bundle2 allows to send arbitrary content to the
server. As a consequence, we need to be able to reply arbitrary content to the
client. And, we can use bundle2 to transmit those arbitrary data.
When a client will push a bundle2 to the server, the server will reply with a
bundle2 itself.
This changeset installs the first stone of this logic and test it.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Apr 2014 08:24:59 -0700] rev 20996
bundle2: add reply awareness to unbundlerecords
We need an efficient way to handle bundle replies. The unbundle records class is
extended to carry such data.
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 01 Apr 2014 00:07:17 -0700] rev 20995
bundle2: add an integer id to part
For sending response to a pushed bundle, we need to link reply parts to request
part. We introduce a part id for this purpose. This is a 32 bit unique
integer stored in the header.
Mads Kiilerich <madski@unity3d.com> [Mon, 07 Apr 2014 23:10:20 +0200] rev 20994
largefiles: don't prompt when one side of merge was changed but didn't change
This can happen after backout or grafts or criss cross merges. We already do
the same (but slightly different) thing in manifestmerge and filemerge.
Sean Farley <sean.michael.farley@gmail.com> [Mon, 07 Apr 2014 15:37:27 -0500] rev 20993
color: fallback and test label as an effect
With this changeset, we can now send a color name directly to the label
function, e.g.
$ hg log -r . -T "{label('red', node|short)}\n"
Sean Farley <sean.michael.farley@gmail.com> [Mon, 07 Apr 2014 15:33:46 -0500] rev 20992
color: extract method for determining a valid effect
This patch is just setup work so that we can reduce code duplication and have
one place to define a valid effect.
Mads Kiilerich <madski@unity3d.com> [Mon, 07 Apr 2014 23:17:51 +0200] rev 20991
revlog: use context ancestor instead of changelog ancestor
We want to move in this direction.
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:31:53 +0100] rev 20990
copies: guard debug section with ui.debugflag
Mads Kiilerich <madski@unity3d.com> [Tue, 25 Feb 2014 20:31:51 +0100] rev 20989
copies: remove _checkcopies wrapper - it does no good
mergecopies might be doomed but it is not dead yet ...
Mads Kiilerich <madski@unity3d.com> [Mon, 07 Apr 2014 23:17:51 +0200] rev 20988
transplant: use context ancestor instead of changelog ancestor
We want to move in this direction. ctx.ancestor is in a better position for
handling a situation with multiple ancestors.
Mads Kiilerich <madski@unity3d.com> [Mon, 07 Apr 2014 23:17:51 +0200] rev 20987
commit: use revlog.commonancestors instead of .ancestor
This do probably not make any real difference but is slightly more correct and
we would like to get rid of flog.ancestor.
Mads Kiilerich <madski@unity3d.com> [Mon, 07 Apr 2014 23:17:51 +0200] rev 20986
backout: don't limit heritage check to a single ancestor
This do probably not make any real difference but is slightly more correct and
we would like to get rid of changelog.ancestor.
Mads Kiilerich <madski@unity3d.com> [Thu, 20 Mar 2014 01:35:07 +0100] rev 20985
ancestor: remove unused genericancestor
Mads Kiilerich <madski@unity3d.com> [Mon, 07 Apr 2014 23:17:48 +0200] rev 20984
context: remove unused filectx.ancestor
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 09 Mar 2014 01:03:28 +0900] rev 20983
shelve: add "writebundle()" to invoke "writebundle()" with relative path and vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 09 Mar 2014 01:03:28 +0900] rev 20982
shelve: add "applybundle()" to invoke "readbundle()" with relative path and vfs
"applybundle()" also includes "addchangegroup()" invocation to
encapsulate "vfs.join()" inside it.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 09 Mar 2014 01:03:28 +0900] rev 20981
bundlerepo: treat temporarily extracted bundle file via vfs
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 09 Mar 2014 01:03:28 +0900] rev 20980
vfs: add "mkstemp()"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 09 Mar 2014 01:03:28 +0900] rev 20979
repair: make "strip()" treat bundle files via vfs
This patch makes "repair.strip()" treat bundle files via vfs.
This patch also avoids applying "vfs.join()" on the value returned by
"changegroup.writebundle()", to get relative path from "_bundle()".
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 09 Mar 2014 01:03:28 +0900] rev 20978
changegroup: add "vfs" argument to "readbundle()" to pass relative filename
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 09 Mar 2014 01:03:28 +0900] rev 20977
repair: make paths in "_bundle()" relative to ".hg"
This patch makes paths below in "_bundle()" relative to ".hg":
- backup directory ("strip-backup"), and
- bundle file under backup directory
"vfs" is passed to "changegroup.writebundle()" to use relative path
directly.
This patch applies "vfs.join()" on the value returned by "_bundle()",
because the caller expect it to return absolute path.
This will be changed by succeeding patch changing the caller side.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 09 Mar 2014 01:03:28 +0900] rev 20976
changegroup: add "vfs" argument to "writebundle()" for relative access via vfs
Before this patch, filename specified to "changegroup.writebundle()"
should be absolute one.
In some cases, they should be relative to repository root, store and
so on (backup before strip, for example).
This patch adds "vfs" argument to "writebundle()", and makes
"writebundle()" open (and unlink) "filename" via vfs for relative
access, if both filename and vfs are specified.
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sun, 09 Mar 2014 01:03:28 +0900] rev 20975
localrepo: make "undofiles()" return list of tuples "(vfs, relative filename)"
Before this patch, "localrepository.undofiles()" returns list of
absolute filename of undo files.
This patch makes it return list of tuples "(vfs, relative filename)"
to access undo files via vfs.
This patch also changes "repair.strip()", which is the only user of
"localrepository.undofiles()".
Matt Mackall <mpm@selenic.com> [Fri, 11 Apr 2014 17:20:15 -0400] rev 20974
exchange: fix pyflakes import complaint
Wei, Elson <elson.wei@gmail.com> [Thu, 10 Apr 2014 15:12:12 +0800] rev 20973
hgweb: override the charset attribute in the http request
The default http request character set is UTF-8. If the message is not encoded
in UTF-8, such as big5, it cannot be shown correctly. The 'charset' is
overridden by the root document's, such that the user can select the proper
encoding in the browser.
Matt Mackall <mpm@selenic.com> [Fri, 11 Apr 2014 16:38:55 -0400] rev 20972
diff: use second filename for --stat reporting on git patches (
issue4221)
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 11 Apr 2014 13:43:41 -0400] rev 20971
exchange: drop useless line break
Matt Mackall <mpm@selenic.com> [Fri, 11 Apr 2014 15:38:18 -0400] rev 20970
subrepo: check return code for git push (
issue4223)
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 04 Apr 2014 17:50:44 -0700] rev 20969
localrepo: add unbundle support
Localrepo now supports the unbundle method of pushing changegroups. We
plan to use the unbundle call for bundle2 so it is important that all
peers supports it. The `peer.unbundle` and `peer.addchangegroup` code
path have small difference so cause some test output changes. None of those
changes seems problematic.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 04 Apr 2014 17:28:59 -0700] rev 20968
unbundle: extract the core logic in another function
The `exchange` module now contains an `unbundle` function that holds the core
unbundle logic. The wire protocol keeps its own unbundle function. It enforces
wireprotocol-specific logic and then calls the extracted function.
This aims at implementing unbundle for localrepo.
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 04 Apr 2014 17:15:25 -0700] rev 20967
unbundle: extract checkheads in its own function
We are going to refactor the unbundle function to have it working on
a local repository too. Having this function extracted will ease the process.
In the case of non-matching heads, the function now directly raises an
exception. The top level of the function is catching it.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 07 Apr 2014 18:10:50 -0700] rev 20966
phase: apply publishing enforcement for "serve" source
When a changegroup is added by a push on a publishing server, we ensure they
are added as public. This is used to enforce publishing on server when the
client is not aware of phases. It also prevents race conditions where a reader
could see the changesets as draft before they get turned public by the client.
Finally, this save rounds trip as the client does not need additional request to
turn them public.
However, this logic was only enforced when the changegroup was from a "push"
source. And "push" is used for local pushes only. Wireprotocol push uses "serve"
as source since Mercurial 1.9. We now enforce this logic for both "push" and
"serve" sources.
One could note that this logic was mainly useful during wireprotocol exchanges.
So this code is finally put into good use, 9 versions after its introduction.
Matt Mackall <mpm@selenic.com> [Thu, 10 Apr 2014 12:41:39 -0400] rev 20965
merge with stable
Stéphane Klein <contact@stephane-klein.info> [Fri, 20 Dec 2013 14:56:05 +0100] rev 20964
http: reuse authentication info after the first failed request (
issue3567)
[This was applied in
181108726ea5 but backed out again in
af02783dea65 because
of Python 2.4 issues. This edition and test-http.t works with Python 2.4.]
Context: mercurial access to repository server with http access, and this
server is protected by basic auth.
Before patch:
* mercurial try an anonymous access to server, server return 401 response and
mercurial resend request with login / password information
After patch:
* mercurial try an anonymous access to server, server return
401 response. For all next requests, mercurial keep in memory this
information (this server need basic auth information).
This patch reduce the number of http access against mercurial server.
Example, before patch:
10.10.168.170 - - [25/Oct/2013:15:44:51 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:44:52 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:00 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:01 +0200] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:03 +0200] "GET /hg/testagt?cmd=batch
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:04 +0200] "GET /hg/testagt?cmd=batch
HTTP/1.1" 200 42 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:06 +0200] "GET /hg/testagt?cmd=getbundle
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:07 +0200] "GET /hg/testagt?cmd=getbundle
HTTP/1.1" 200 61184 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:09 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:10 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 15 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:12 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [25/Oct/2013:15:45:12 +0200] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 - "-" "mercurial/proto-1.0"
Example after patch:
10.10.168.170 - - [28/Oct/2013:11:49:14 +0100] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 401 260 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:15 +0100] "GET /hg/testagt?cmd=capabilities
HTTP/1.1" 200 147 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:17 +0100] "GET /hg/testagt?cmd=batch
HTTP/1.1" 200 42 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:19 +0100] "GET /hg/testagt?cmd=getbundle
HTTP/1.1" 200 61184 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:22 +0100] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 15 "-" "mercurial/proto-1.0"
10.10.168.170 - - [28/Oct/2013:11:49:24 +0100] "GET /hg/testagt?cmd=listkeys
HTTP/1.1" 200 - "-" "mercurial/proto-1.0"
In this last example, you can see only one 401 response.
Durham Goode <durham@fb.com> [Tue, 08 Apr 2014 13:05:29 -0700] rev 20963
bundle2: use discard to remove bundle2 cap
caps.remove('bundle2') was throwing an exception if bundle2 wasn't present in
the capabilities. This was causing test-static-http.t to hang. Let's just use
discard, so we don't get an exception.
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 07 Apr 2014 11:45:50 -0700] rev 20962
statichttp: respect localrepo _restrictcapabilities
The static http repository was doing his own filtering of capability ignoring
the filtering done in the local repo main class. This led to static http using
the current draft of bundle2. We now apply both.
Mads Kiilerich <madski@unity3d.com> [Mon, 07 Apr 2014 23:10:20 +0200] rev 20961
tests: make unshelve tests more tricky - don't depend on size change
One reason shelve and largefiles doesn't work could be rapidly changing standin
files. Prove that shelve in general doesn't have problems with that.
Mads Kiilerich <madski@unity3d.com> [Mon, 07 Apr 2014 23:10:20 +0200] rev 20960
shelve: introduce secret option for using fixed date for temporary commit
Using a fixed date makes hashes stable and makes debugging simpler. The date
and hashes of this changeset are normally not exposed.
Mads Kiilerich <madski@unity3d.com> [Mon, 07 Apr 2014 23:10:20 +0200] rev 20959
mq: repo['.'] is not a wctx, repo[None] is
The parameters passed to subrepo.submerge are confusing anyway.