Sat, 27 Jan 2018 18:56:24 -0500 lfs: allow a pointer to be extracted from a context that removes the file
Matt Harbison <matt_harbison@yahoo.com> [Sat, 27 Jan 2018 18:56:24 -0500] rev 36037
lfs: allow a pointer to be extracted from a context that removes the file This is needed to let 'set:lfs()' and '{lfs_files}' work normally on removed files. Yuya suggested returning a null pointer for removed files, instead of the pointer from the parent. The first attempt at this was to return None for a non LFS file, and a (pointer, ctx) tuple to hold the pointer and context (or parent pointer and context for a removed file). But this complicated the callers, even the ones that didn't care about removed files. Instead, let's use {} to represent a removed pointer. This has the added convenience of being a useful representation in the template language, and only affects the callers that care about removed files (and only slightly). Since pointers are explicitly serialized with a call to a member function, there is no danger of writing these to disk.
Sat, 10 Feb 2018 19:33:19 +0100 rebase: make "successors" a set in _computeobsoletenotrebased()
Denis Laxalde <denis@laxalde.org> [Sat, 10 Feb 2018 19:33:19 +0100] rev 36036
rebase: make "successors" a set in _computeobsoletenotrebased() There's no apparent reason for this variable to be a list and this avoids converting it to a set when needed.
Sat, 10 Feb 2018 21:14:41 +0900 merge with stable
Yuya Nishihara <yuya@tcha.org> [Sat, 10 Feb 2018 21:14:41 +0900] rev 36035
merge with stable
Fri, 09 Feb 2018 22:49:20 +0100 rebase: do not consider extincts for divergence detection (issue5782)
Denis Laxalde <denis@laxalde.org> [Fri, 09 Feb 2018 22:49:20 +0100] rev 36034
rebase: do not consider extincts for divergence detection (issue5782) Extinct obsolete changesets cannot cause divergence upon rebase. We compute these obsoletes without a non-obsolete successor (extincts) in _computeobsoletenotrebased() and then filter them out from the set of obsolete revisions to rebase before getting into _checkobsrebase() to check for divergence candidates.
Fri, 09 Feb 2018 21:45:16 +0100 rebase: eliminate node from successors early in _computeobsoletenotrebased()
Denis Laxalde <denis@laxalde.org> [Fri, 09 Feb 2018 21:45:16 +0100] rev 36033
rebase: eliminate node from successors early in _computeobsoletenotrebased()
Wed, 07 Feb 2018 12:06:13 +0100 rebase: add a test case for issue5782
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 07 Feb 2018 12:06:13 +0100] rev 36032
rebase: add a test case for issue5782 Issue 5782 reports that rebase incorrectly aborts when trying to rebase an extinct revision (an obsolete revision with only obsolete successor). We add a test to demonstrate this: the first "hg rebase" command aborts with the divergence warning while, when allowing divergence, the rebase completes and does not actually produce any divergence.
Fri, 09 Feb 2018 13:18:17 +0100 test: glob the temporary directory out of temporary file path
Boris Feld <boris.feld@octobus.net> [Fri, 09 Feb 2018 13:18:17 +0100] rev 36031
test: glob the temporary directory out of temporary file path The temporary directory used by python might be outside of '/tmp/' (eg: /dev/shm/) so we glob that part out.
Fri, 09 Feb 2018 12:48:12 +0100 tests: raise a better error when patterns are wrongly formatted
Boris Feld <boris.feld@octobus.net> [Fri, 09 Feb 2018 12:48:12 +0100] rev 36030
tests: raise a better error when patterns are wrongly formatted It is fairly easy to make mistakes when merging conflict in the pattern file. A common mistake is to forget adding an extra trailing comma changing the length of the tuple. We now detect such error and raise a better error message that helps to find it.
Sat, 27 Jan 2018 17:58:19 -0500 lfs: add a fileset for detecting lfs files
Matt Harbison <matt_harbison@yahoo.com> [Sat, 27 Jan 2018 17:58:19 -0500] rev 36029
lfs: add a fileset for detecting lfs files This currently has the same limitation as {lfs_files}, namely it doesn't report removed files. We may want a dedicated 'lfs()' revset for efficiency, but combining this with the 'contains()' revset should be equivalent for now. Combining with 'set:added()' or 'set:modified()' inside 'files()' should be equivalent to a hypothetical lfs_adds() and lfs_modifies(). I wonder if there's a way to tweak the filesets to evaluate lazily, to close the efficiency gap. It would also be interesting to come up with a template filter for '{files}' that looked at the pattern to 'files()', and filtered appropriately. While passing a fileset as the pattern to `hg log` does filter '{files}', the set is evaluated against the working directory, so there's no way to list all non-lfs files above a certain size in all revisions, for example.
Wed, 07 Feb 2018 23:42:48 -0500 tests: stabilize ssh tests on Windows
Matt Harbison <matt_harbison@yahoo.com> [Wed, 07 Feb 2018 23:42:48 -0500] rev 36028
tests: stabilize ssh tests on Windows This seems like a somewhat common type of failure (double vs single quote), so I'm interested in ideas about how to avoid this. I doubt that we should automatically fall back from single quote to double quote, like with '/' vs '\'.
Thu, 01 Feb 2018 08:54:48 -0800 wireprotoserver: rename abstractserverproto and improve docstring
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 01 Feb 2018 08:54:48 -0800] rev 36027
wireprotoserver: rename abstractserverproto and improve docstring The docstring isn't completely accurate for the current state of the world. But it does describe the direction future patches will be taking things. Differential Revision: https://phab.mercurial-scm.org/D2065
Thu, 01 Feb 2018 16:11:54 -0800 wireprotoserver: document and improve the httplib workaround
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 01 Feb 2018 16:11:54 -0800] rev 36026
wireprotoserver: document and improve the httplib workaround This workaround dates all the way back to a42d27bc809d in 2008. The code is esoteric enough to warrant an inline explanation. So I've added one. At the time the code was written, the only wire protocol command that accepted an HTTP request body was "unbundle." In the years since, we've grown the ability to accept command arguments via HTTP POST requests. So, the code has been changed to apply the httplib workaround to all HTTP POST requests. While staring at this code, I realized that the HTTP response body in case of error is always the same. And, it appears to mimic the behavior of a failed call to the "unbundle" command. Since we can hit this code path on theoretically any protocol request (since self.check_perm accepts custom auth checking functions which may raise), I'm having a hard time believing that clients react well to an "unbundle" response payload on any wire protocol command. I wouldn't be surprised if our test coverage for this feature only covers HTTP POST calls to "unbundle." In other words, the experimental support for sending arguments via HTTP POST request bodies may result in badness on the client. Something to investigate another time perhaps... Differential Revision: https://phab.mercurial-scm.org/D2064
Wed, 31 Jan 2018 17:34:45 -0800 wireprotoserver: move error response handling out of hgweb
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 31 Jan 2018 17:34:45 -0800] rev 36025
wireprotoserver: move error response handling out of hgweb The exception handler for ErrorResponse has more to do with the wire protocol than the generic HTTP server. Move the code so it lives alongside other wire protocol code. Differential Revision: https://phab.mercurial-scm.org/D2021
Wed, 31 Jan 2018 16:43:46 -0800 hgweb: move call to protocol handler outside of try..except
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 31 Jan 2018 16:43:46 -0800] rev 36024
hgweb: move call to protocol handler outside of try..except The protocol handler doesn't raise ErrorResponse. So it doesn't need to be in this `try..except ErrorResponse` block. Differential Revision: https://phab.mercurial-scm.org/D2020
Wed, 31 Jan 2018 16:21:43 -0800 wireprotoserver: move protocol parsing and dispatch out of hgweb
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 31 Jan 2018 16:21:43 -0800] rev 36023
wireprotoserver: move protocol parsing and dispatch out of hgweb Previously, hgweb_mod had code for detecting if the request was for the wire protocol. It would then (eventually) call wireprotoserver.callhttp() to dispatch the request handling. Detection of wire protocol requests is not trivial. There's currently a big gotcha in the handling of the "cmd" request parameter, for example. Furthermore, in the near future we will have a second HTTP protocol handler. Its mechanism for calling commands will be a bit different. And we don't want the low-level logic for detecting protocol commands to live in hgweb. We establish a new function in wireprotoserver for detecting an HTTP protocol request and for giving the caller an easy-to-use mechanism for dispatching requests to it. Some wire protocol specific functionality still lives in hgweb. This will be addressed in subsequent commits. Differential Revision: https://phab.mercurial-scm.org/D2019
Thu, 01 Feb 2018 18:48:52 -0800 largefiles: register wire protocol commands with modern APIs
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 01 Feb 2018 18:48:52 -0800] rev 36022
largefiles: register wire protocol commands with modern APIs The wireproto.wireprotocommand decorator is the preferred mechanism for registering wire protocol commands. In addition, wireproto.commands is no longer a 2-tuple and use of that 2-tuple API should be considered deprecated. This commit ports largefiles to use wireproto.wireprotocommand() and ports to the "commandentry" API. As part of this, the definition of the "lheads" wire protocol command is moved to the proper stanza. We stop short of actually using wireprotocommand as a decorator in order to minimize churn. We should ideally move wire protocol commands to the registrar mechanism. But that's for another changeset. Differential Revision: https://phab.mercurial-scm.org/D2018
(0) -30000 -10000 -3000 -1000 -300 -100 -16 +16 +100 +300 +1000 +3000 +10000 tip