Sat, 04 Oct 2014 16:46:50 +0900 cmdserver: add service that listens on unix domain socket and forks process
Yuya Nishihara <yuya@tcha.org> [Sat, 04 Oct 2014 16:46:50 +0900] rev 22994
cmdserver: add service that listens on unix domain socket and forks process Typical use case of 'unix' mode is a background hg daemon. $ hg serve --cmdserver unix --cwd / -a /tmp/hg-`id -u`.sock Unlike 'pipe' mode in which parent process keeps stdio channel, 'unix' server can be detached. So clients can freely connect and disconnect from server, saving Python start-up time. It might be better to write "--cmdserver socket -a unix:/sockpath" instead of "--cmdserver unix -a /sockpath" in case hgweb gets the ability to listen on unix domain socket.
Sat, 27 Sep 2014 19:18:20 +0900 test-commandserver: add connector for unix domain socket server
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Sep 2014 19:18:20 +0900] rev 22993
test-commandserver: add connector for unix domain socket server The next patch will introduce --cmdserver unix.
Sat, 27 Sep 2014 23:14:26 +0900 test-commandserver: allow check() to make connection in different way
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Sep 2014 23:14:26 +0900] rev 22992
test-commandserver: allow check() to make connection in different way The next patch will add connector for 'unix' mode server.
Sat, 27 Sep 2014 22:39:01 +0900 test-commandserver: remove unused repopath argument from check()
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Sep 2014 22:39:01 +0900] rev 22991
test-commandserver: remove unused repopath argument from check() Instead of repopath, check() will receive connect() function as argument. It will allow to connect to server of different mode.
Sat, 27 Sep 2014 15:10:14 +0900 cmdserver: make server streams switchable
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Sep 2014 15:10:14 +0900] rev 22990
cmdserver: make server streams switchable In 'unix' mode, server instance will be created per connection, and fin/fout are set to socket files.
Sat, 27 Sep 2014 15:04:46 +0900 cmdserver: switch service objects by mode
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Sep 2014 15:04:46 +0900] rev 22989
cmdserver: switch service objects by mode server class will be changed to accept fin/fout pair instead of mode string so that it can interact with socket files.
Sat, 27 Sep 2014 14:52:09 +0900 cmdserver: wrap 'pipe' mode server by service object
Yuya Nishihara <yuya@tcha.org> [Sat, 27 Sep 2014 14:52:09 +0900] rev 22988
cmdserver: wrap 'pipe' mode server by service object This is the stub for new mode that will listen for connections on unix domain socket. Though --daemon option is not banned in 'pipe' mode, it is useless because the detached 'pipe' mode server exits immediately due to null stdin. Should it abort if --daemon is specified with --cmdserver pipe or --stdio?
Thu, 16 Oct 2014 14:55:45 -0400 histedit: miscellaneous style cleanups
Augie Fackler <raf@durin42.com> [Thu, 16 Oct 2014 14:55:45 -0400] rev 22987
histedit: miscellaneous style cleanups Fix some mis-wrapped lines, re-wrap some lines to be more compact, remove superfluous parens.
Thu, 16 Oct 2014 14:51:15 -0400 histedit: update docstring on histeditstate.read()
Augie Fackler <raf@durin42.com> [Thu, 16 Oct 2014 14:51:15 -0400] rev 22986
histedit: update docstring on histeditstate.read() The docstring showed the previous class-less heritage of read(). Now that it's classy, update the docstring.
Thu, 16 Oct 2014 14:49:46 -0400 histedit: remove now-superfluous repo argument from processreplacement
Augie Fackler <raf@durin42.com> [Thu, 16 Oct 2014 14:49:46 -0400] rev 22985
histedit: remove now-superfluous repo argument from processreplacement Spotted by Olle on the mailing list during review.
Wed, 15 Oct 2014 08:38:36 -0700 histedit: move locks into state
David Soria Parra <davidsp@fb.com> [Wed, 15 Oct 2014 08:38:36 -0700] rev 22984
histedit: move locks into state Allow action functions to control the locks. This is necessary for an implementation of x/exec or similar.
Wed, 15 Oct 2014 08:38:16 -0700 histedit: read state from histeditstate
David Soria Parra <davidsp@fb.com> [Wed, 15 Oct 2014 08:38:16 -0700] rev 22983
histedit: read state from histeditstate Read the state in histeditstate. This allows us to correctly update internal variables when necessary without having to recreate a new state. When we read a state in _histedit state while we will already have state passed from histedit(), we can read the state in place and don't have to merge two histeditstates.
Wed, 15 Oct 2014 08:18:26 -0700 histedit: pass state to action functions
David Soria Parra <davidsp@fb.com> [Wed, 15 Oct 2014 08:18:26 -0700] rev 22982
histedit: pass state to action functions
Thu, 16 Oct 2014 10:06:49 -0700 histedit: pass state to processreplacement
David Soria Parra <davidsp@fb.com> [Thu, 16 Oct 2014 10:06:49 -0700] rev 22981
histedit: pass state to processreplacement
Wed, 15 Oct 2014 08:06:15 -0700 histedit: pass state to boostrapcontinue
David Soria Parra <davidsp@fb.com> [Wed, 15 Oct 2014 08:06:15 -0700] rev 22980
histedit: pass state to boostrapcontinue Pass the state to boostrapcontinue and remove the unecessary passing of repo.
Wed, 15 Oct 2014 17:11:54 -0700 histedit: let the state expose a context but serialize correctly to nodes
David Soria Parra <davidsp@fb.com> [Wed, 15 Oct 2014 17:11:54 -0700] rev 22979
histedit: let the state expose a context but serialize correctly to nodes The histedit code often expects a context. However histedit hands around the tuple for the serialization and therefore hand over a parentctxnode. This leads to code having to return a context based on the parentctxnode. We let the state only return a context but correctly serialize and deserialze to a node.
Wed, 15 Oct 2014 17:30:57 -0700 histedit: add clear method to remove state
David Soria Parra <davidsp@fb.com> [Wed, 15 Oct 2014 17:30:57 -0700] rev 22978
histedit: add clear method to remove state Encapsulate the unlinking histedit-state and use the vfs layer instead of os.unlink.
Tue, 14 Oct 2014 20:35:17 -0700 histedit: use state object where necessary
David Soria Parra <davidsp@fb.com> [Tue, 14 Oct 2014 20:35:17 -0700] rev 22977
histedit: use state object where necessary We are using the properties from the state object where necessary and ensure that the state is set correctly.
Wed, 15 Oct 2014 17:17:12 -0700 histedit: add histedit state class
David Soria Parra <davidsp@fb.com> [Wed, 15 Oct 2014 17:17:12 -0700] rev 22976
histedit: add histedit state class Add an histeditstate class that is intended to hold the current state. This allows us encapsulate the state and avoids passing around a tuple which is based on the serialization format. In particular this will give actions more control over the state and allow external sources to have more control of histedits behavior, e.g. an external implementation of x/exec.
Fri, 17 Oct 2014 02:07:05 +0900 import-checker: check modules for pure Python build correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Oct 2014 02:07:05 +0900] rev 22975
import-checker: check modules for pure Python build correctly Before this patch, "import-checker.py" just replaces "/" in specified filenames by ".". This makes modules for pure Python build belong to "mercurial.pure" package, and prevents "import-checker.py" from correctly checking about cyclic dependency in them. This patch discards "pure" component from fully qualified name of such modules. To avoid discarding "pure" from the module name of standard libraries unexpectedly, this patch allows "dotted_name_of_path" to discard "pure" only from Mercurial specific modules, which are specified via command line arguments.
Fri, 17 Oct 2014 02:07:05 +0900 import-checker: treat "from mercurial import XXXX" style correctly
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Oct 2014 02:07:05 +0900] rev 22974
import-checker: treat "from mercurial import XXXX" style correctly Before this patch, "import-checker.py" assumes that the name of Mercurial module recognized by "imported_modules" doesn't have package part: for example, "util". This is reason why "import-checker.py" always builds fully qualified module name up relatively, if the given module doesn't belong to standard Python library. But in fact, modules imported in "from mercurial import XXXX" style already have fully qualified name: for example, "mercurial.util" module imported by "mercurial.parsers" is treated as "mercurial.mercurial.util" because of building module name up relatively. This prevents "import-checker.py" from correctly checking about cyclic dependency in them. This patch avoids building module name up relatively, also if module name starts with "mercurial.", to treat modules imported in "from mercurial import XXXX" style correctly.
Fri, 17 Oct 2014 02:07:04 +0900 encoding: avoid cyclic dependency around "parsers" in pure Python build
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 17 Oct 2014 02:07:04 +0900] rev 22973
encoding: avoid cyclic dependency around "parsers" in pure Python build 80f2b63dd83a brought "asciilower" and "import parsers" into "encoding.py". This works fine with "parsers" module in C implementation, but doesn't with one in pure Python implementation, because the latter causes cyclic dependency below and aborting execution: util => i18n => encoding => parsers => util This patch delays importing "parsers" module until it is really needed, to avoid cyclic dependency around "parsers" in pure Python build.
Tue, 14 Oct 2014 01:40:04 -0700 pull: add source information to the transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 14 Oct 2014 01:40:04 -0700] rev 22972
pull: add source information to the transaction The source information can, should be applied once when opening the transaction for the pull. This will lets element processed within a bundle2 be aware of them and open the door to running a set of hooks when closing this pull transaction. This is similar to what is done in server's unbundle call.
Tue, 14 Oct 2014 00:06:46 -0700 changegroup: store source and url in the `hookargs` dict
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 14 Oct 2014 00:06:46 -0700] rev 22971
changegroup: store source and url in the `hookargs` dict We store the source and url of the current data into `transaction.hookargs` this let us inherit it from upper layers that may have created a much wider transaction. We have to modify bundle2 at the same time to register the source and url in the transaction. We have to do it in the same patch otherwise, the `addchangegroup` call would fill these values and the hook calling will crash because of the duplicated 'source' and 'url' arguments passed to the hook call.
Tue, 14 Oct 2014 00:43:20 -0700 prechangegroup: use hook argument from the transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 14 Oct 2014 00:43:20 -0700] rev 22970
prechangegroup: use hook argument from the transaction There can be useful data in there (eg: bundle2 related one)
Tue, 14 Oct 2014 00:09:25 -0700 addchangegroup: call `prechangegroup` hook after transaction retrieval
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 14 Oct 2014 00:09:25 -0700] rev 22969
addchangegroup: call `prechangegroup` hook after transaction retrieval We want to reused some possible information stored in the transaction `hookargs` dict that may be stored by something handling the transaction at an upper level (eg: bundle2) So we move the running of the hooks after transaction creation. This has no visible effects (but an empty transaction roolback if the hook fails) because nothing had happened in the transaction yet.
Tue, 14 Oct 2014 00:03:03 -0700 addchangegroup: get the `node` argument of `incoming` hook from transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 14 Oct 2014 00:03:03 -0700] rev 22968
addchangegroup: get the `node` argument of `incoming` hook from transaction The transaction is now carrying hook-related informations. So we use it to retrieve the `node` argument. This will also carry around all kinds of other useful informations (like: "are we in a bundle2 processing")
Tue, 14 Oct 2014 23:53:35 -0700 dicthelpers: delete now that they are no longer used
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 14 Oct 2014 23:53:35 -0700] rev 22967
dicthelpers: delete now that they are no longer used
Tue, 14 Oct 2014 23:18:07 -0700 manifest: transpose pair of pairs from diff()
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 14 Oct 2014 23:18:07 -0700] rev 22966
manifest: transpose pair of pairs from diff() It makes more sense for the file nodeids and returned from diff() to be ((n1,fl1),(n2,fl2)) than ((n1,n2),(fl1,fl2)), so change it to the former.
Tue, 14 Oct 2014 22:48:44 -0700 manifest: for diff(), only iterate over files, not flags
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 14 Oct 2014 22:48:44 -0700] rev 22965
manifest: for diff(), only iterate over files, not flags From manifest.diff(), we return a dict from filename to pairs of pairs of file nodeids and flags (values of the form ((n1,n2),(fl1,fl2))). To create this dict, we currently generate one dict for files (with (n1,n2) values) and one for flags (with (fl1,fl2) values) and then join these dicts. Missing files are represented by None and missing flags by '', but due to the dict joining, the inner pairs themselves can also be None. The only caller, merge.manifestmerge(), then unpacks these values while checking for None values. By inlining the calls to dicthelpers and simplifying it to only iterate over files (ignoring flags-only differences), we can simplify life for our caller.
Tue, 14 Oct 2014 17:09:16 -0700 manifest: repurpose flagsdiff() into (node-and-flag)diff()
Martin von Zweigbergk <martinvonz@gmail.com> [Tue, 14 Oct 2014 17:09:16 -0700] rev 22964
manifest: repurpose flagsdiff() into (node-and-flag)diff() The manifestdict class already has a method for diff flags between two manifests (presumably because there is no full access to the private _flags field). The only caller is merge.manifestmerge(), which also wants a diff of files between the same manifests. Let's combine the code for diffing files and flags into a single method on manifestdict. This puts all the manifest diffing in one place and will allow for further simplification. It might also be useful for it to be encapsulated in manifestdict if we later decide to to shard manifests. The docstring is intentionally unclear about missing entries for now.
Thu, 16 Oct 2014 17:03:21 +0900 util: add a file handle wrapper class that does hash digest validation
Mike Hommey <mh@glandium.org> [Thu, 16 Oct 2014 17:03:21 +0900] rev 22963
util: add a file handle wrapper class that does hash digest validation It is going to be used for the remote-changegroup feature in bundle2.
(0) -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 +3000 +10000 tip