Thu, 09 Feb 2017 09:17:40 -0800 update: clarify update() call sites by specifying argument names
Martin von Zweigbergk <martinvonz@google.com> [Thu, 09 Feb 2017 09:17:40 -0800] rev 40366
update: clarify update() call sites by specifying argument names merge.update() takes a lot of parameters and I get confused all the time which is which. Differential Revision: https://phab.mercurial-scm.org/D5153
Thu, 18 Oct 2018 10:11:08 -0700 debugcommands: avoid stack trace from debugindexstats in pure mode
Martin von Zweigbergk <martinvonz@google.com> [Thu, 18 Oct 2018 10:11:08 -0700] rev 40365
debugcommands: avoid stack trace from debugindexstats in pure mode This has been broken since I added it in d71e0ba34d9b (debugcommands: add a debugindexstats command, 2018-08-08). This patch also fixes the test. Differential Revision: https://phab.mercurial-scm.org/D5152
Thu, 18 Oct 2018 11:24:20 -0400 tests: fix up pure case of test-sqlitestore.t
Augie Fackler <augie@google.com> [Thu, 18 Oct 2018 11:24:20 -0400] rev 40364
tests: fix up pure case of test-sqlitestore.t This is clearly what the line should read based on the "force to zlib" section below, so I'm guessing it just got overlooked during development. Differential Revision: https://phab.mercurial-scm.org/D5151
Thu, 18 Oct 2018 11:14:04 -0400 tests: don't emit false failures when sqlite3 is missing
Augie Fackler <augie@google.com> [Thu, 18 Oct 2018 11:14:04 -0400] rev 40363
tests: don't emit false failures when sqlite3 is missing I'm honestly surprised we have buildbot coverage for this, but we do! Differential Revision: https://phab.mercurial-scm.org/D5150
Tue, 16 Oct 2018 08:48:23 +0200 py3: get around IOError variants in test-commandserver.t
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 08:48:23 +0200] rev 40362
py3: get around IOError variants in test-commandserver.t
Tue, 16 Oct 2018 08:41:58 +0200 py3: don't use traceback.print_exc() in commandserver.py
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 08:41:58 +0200] rev 40361
py3: don't use traceback.print_exc() in commandserver.py It doesn't support a bytes stream on Python 3. This makes a traceback being sent by one frame, but that shouldn't matter.
Tue, 16 Oct 2018 08:29:24 +0200 py3: invalidate repository cache with system-string keys
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 08:29:24 +0200] rev 40360
py3: invalidate repository cache with system-string keys # skip-blame just a few r'' prefixes
Tue, 16 Oct 2018 08:20:03 +0200 py3: system-stringify file mode in commandserver.py
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 08:20:03 +0200] rev 40359
py3: system-stringify file mode in commandserver.py # skip-blame just r'' prefixes
Tue, 16 Oct 2018 07:57:40 +0200 py3: alias next to __next__ in commandserver.py
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 07:57:40 +0200] rev 40358
py3: alias next to __next__ in commandserver.py
Tue, 16 Oct 2018 07:57:05 +0200 py3: system-stringify list of attributes to be forwarded from commandserver.py
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 07:57:05 +0200] rev 40357
py3: system-stringify list of attributes to be forwarded from commandserver.py # skip-blame just some r'' prefixes
Tue, 16 Oct 2018 07:52:56 +0200 py3: import StringIO from test utility to test-commandserver.t
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 07:52:56 +0200] rev 40356
py3: import StringIO from test utility to test-commandserver.t
Tue, 16 Oct 2018 07:38:31 +0200 py3: use bprint() helper in test-commandserver.t
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 07:38:31 +0200] rev 40355
py3: use bprint() helper in test-commandserver.t
Tue, 16 Oct 2018 07:35:29 +0200 py3: byte-stringify most literals in test-commandserver.t
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 07:35:29 +0200] rev 40354
py3: byte-stringify most literals in test-commandserver.t print() calls will be replaced by bprint(). # skip-blame just tons of b'' prefixes.
Sun, 14 Oct 2018 09:50:21 -0400 localrepo: ensure we properly %-format int in exception throw
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 09:50:21 -0400] rev 40353
localrepo: ensure we properly %-format int in exception throw I'm not thrilled with this, but it'll do. Differential Revision: https://phab.mercurial-scm.org/D5107
Thu, 18 Oct 2018 14:41:14 +0300 py3: add a r'' prefix in mercurial/exchange.py
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 18 Oct 2018 14:41:14 +0300] rev 40352
py3: add a r'' prefix in mercurial/exchange.py # skip-blame because just r'' prefix This fixes test-narrow-acl.t on py3 which was broken by one of the earlier patches. Differential Revision: https://phab.mercurial-scm.org/D5149
Thu, 18 Oct 2018 14:37:38 +0300 py3: add 5 new passing tests to whitelist caught by buildbot
Pulkit Goyal <pulkit@yandex-team.ru> [Thu, 18 Oct 2018 14:37:38 +0300] rev 40351
py3: add 5 new passing tests to whitelist caught by buildbot Thanks to everyone who is putting efforts in making hg py3 compatible. Differential Revision: https://phab.mercurial-scm.org/D5148
Wed, 17 Oct 2018 21:54:49 -0400 py3: fix test-import-context.t
Matt Harbison <matt_harbison@yahoo.com> [Wed, 17 Oct 2018 21:54:49 -0400] rev 40350
py3: fix test-import-context.t
Mon, 15 Oct 2018 22:02:10 -0400 py3: restore perfstartup() prior to b456b2e0ad9f on Windows
Matt Harbison <matt_harbison@yahoo.com> [Mon, 15 Oct 2018 22:02:10 -0400] rev 40349
py3: restore perfstartup() prior to b456b2e0ad9f on Windows Otherwise the test errors out with: --- c:/Users/Matt/projects/hg_py3/tests/test-contrib-perf.t +++ c:/Users/Matt/projects/hg_py3/tests/test-contrib-perf.t.err @@ -184,6 +184,8 @@ $ hg perfrevrange $ hg perfrevset 'all()' $ hg perfstartup + 'b'c:' is not recognized as an internal or external command, + operable program or batch file. $ hg perfstatus $ hg perftags $ hg perftemplating
Wed, 17 Oct 2018 21:05:43 -0400 help: document the server capabilities added by the LFS extension
Matt Harbison <matt_harbison@yahoo.com> [Wed, 17 Oct 2018 21:05:43 -0400] rev 40348
help: document the server capabilities added by the LFS extension I didn't bother marking these experimental because it references the extension that is already marked experimental.
Thu, 27 Sep 2018 21:54:13 -0400 py3: fix test-propertycache.py on Windows
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Sep 2018 21:54:13 -0400] rev 40347
py3: fix test-propertycache.py on Windows
Wed, 17 Oct 2018 21:00:36 +0800 commands: adjust metavariables as appropriate
Anton Shestakov <av6@dwimlabs.net> [Wed, 17 Oct 2018 21:00:36 +0800] rev 40346
commands: adjust metavariables as appropriate Apart from looking better in hg help command, these strings are also helpful when generating shell completions programmatically.
Sun, 14 Oct 2018 11:16:22 -0400 match: fix up a repr to not crash on Python 3
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 11:16:22 -0400] rev 40345
match: fix up a repr to not crash on Python 3 Differential Revision: https://phab.mercurial-scm.org/D5120
Fri, 05 Oct 2018 11:07:34 -0700 narrow: when widening, don't include manifests the client already has
Martin von Zweigbergk <martinvonz@google.com> [Fri, 05 Oct 2018 11:07:34 -0700] rev 40344
narrow: when widening, don't include manifests the client already has When widening, we already don't include the changelog (since f1844a10ee19) and files that the client already has (since c73c7653dfb9). However, we still include all manifests needed for the new narrowspec. When using flat manifests, that means we resend all the manifests even though the client necessarily has all of them. For tree manifests, we unnecessarily resend the root manifests and any subdirectory manifests that the client already has. This patch makes it so we no longer resend manifests that the client already has. It does so by passing an extra matcher to the changegroup packer and it uses that for filtering out directories matching the old matcher's visitdir(). For consistency between directories and files, it also makes the filtering of files look at both old and new matcher rather than passing in a diff matcher as we did before. Differential Revision: https://phab.mercurial-scm.org/D4895
Wed, 17 Oct 2018 09:30:07 -0700 tests: add test for widening from an empty clone
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 Oct 2018 09:30:07 -0700] rev 40343
tests: add test for widening from an empty clone Narrow clones that track no paths currently don't even include the root manifest (which is the only manifest when using flat manifests). That means that when we widen from such a clone, we need to make sure that we send the root manifest (and other manifests if using tree manifests). That currently works because we always resend all manifest that match the new narrowspec. However, we're about to stop resending manifests that the client already has and there's a risk of this breaking then, so let's add a test. Differential Revision: https://phab.mercurial-scm.org/D5143
Wed, 17 Oct 2018 11:43:39 -0700 subrepo: access status members by name instead of by position
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 Oct 2018 11:43:39 -0700] rev 40342
subrepo: access status members by name instead of by position Taking my first Mercurial project closer to completion. Differential Revision: https://phab.mercurial-scm.org/D5144
Tue, 16 Oct 2018 07:21:00 -0700 revisions: when using prefixhexnode, ensure we prefix "0"
Kyle Lippincott <spectral@google.com> [Tue, 16 Oct 2018 07:21:00 -0700] rev 40341
revisions: when using prefixhexnode, ensure we prefix "0" Previously, if using `experimental.revisions.disambiguatewithin` (and it didn't include rev0), and '0' was the shortest identifier in that disambiguation set, we printed it as the shortest *without* a prefix. This was because we had logic to determine "if the prefix is a pure integer, but starts with 0, we don't need to prefix with 'x': 01 is not a synonym for revision #1", but didn't handle the case where prefix == 0 (which is a pure integer, and starts with 0... but it *is* "rev0"). Differential Revision: https://phab.mercurial-scm.org/D5113
Wed, 03 Oct 2018 16:45:24 +0300 store: pass matcher to store.datafiles()
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 03 Oct 2018 16:45:24 +0300] rev 40340
store: pass matcher to store.datafiles() To get narrow stream clones working, we need a way to filter the storage files using a matcher. This patch adds matcher as an argument to store.walk() and store.datafiles() so that we can filter the files returned according to the matcher. Differential Revision: https://phab.mercurial-scm.org/D4850
Wed, 03 Oct 2018 17:59:05 +0300 streamclone: pass narrowing related info in _walkstreamfiles()
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 03 Oct 2018 17:59:05 +0300] rev 40339
streamclone: pass narrowing related info in _walkstreamfiles() This patch build a matcher using the include and exclude arguments we have in generatev2() and pass that matcher into _walkstreamfiles(). This will help us in filtering files we stream depending on the includes and excludes passed in by the user. Differential Revision: https://phab.mercurial-scm.org/D4851
Wed, 26 Sep 2018 17:20:04 +0300 streamclone: new server config and some API changes for narrow stream clones
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 26 Sep 2018 17:20:04 +0300] rev 40338
streamclone: new server config and some API changes for narrow stream clones This patch introduces a new server config `experimental.server.stream-narrow-clones` which if set to True will advertise that the server supports narrow stream clones. This patch also pass on the includes and excludes from getbundle command to streamclone generation code. There is a test added to show that the includepats and excludepats are correctly passed. Upcoming patches will implement storage layer filtering for streamclones and then we can remove the temporary error and plug in the whole logic together to make narrow stream clones working. Differential Revision: https://phab.mercurial-scm.org/D5137
Wed, 10 Oct 2018 17:36:59 +0300 narrow: only send the narrowspecs back if ACL in play
Pulkit Goyal <pulkit@yandex-team.ru> [Wed, 10 Oct 2018 17:36:59 +0300] rev 40337
narrow: only send the narrowspecs back if ACL in play I am unable to think why we need to send narrowspecs back from the server. The current state adds a 'narrow:spec' part to each changegroup which is generated when narrow extension is enabled. So we are sending narrowspecs on pull also. There is a problem with sending the narrowspecs the way we are doing it right now. We add include and exclude as parameter of the 'narrow:spec' bundle2 part. The the len of include or exclude string increase 255 which is obvious while working on large repos, bundle2 generation code breaks. For more on that refer issue5952 on bugzilla. I was thinking why we need to send the narrowspecs back, and deleted the 'narrow:spec' bundle2 part generation code and found that only narrow-acl test has some failure. With this patch, we will only send the 'narrow:spec' bundle2 part if ACL is enabled because the original narrowspecs in those cases can be a subset of narrowspecs user requested. There are phase related output change in couple of tests. The output change shows that we are now dealing in public phases completely. So maybe sending the narrow:spec bundle2 part was preventing phases being exchanged or phase bundle2 data being applied. Differential Revision: https://phab.mercurial-scm.org/D4931
Wed, 17 Oct 2018 22:32:50 +0800 zsh_completion: add -l/--list flag for hg bookmarks completion
Anton Shestakov <av6@dwimlabs.net> [Wed, 17 Oct 2018 22:32:50 +0800] rev 40336
zsh_completion: add -l/--list flag for hg bookmarks completion Flags in parentheses are mutually exclusive. Logic is taken from commands.py: selactions = [k for k in ['delete', 'rename', 'list'] if opts.get(k)] if len(selactions) > 1: raise error.Abort(_('--%s and --%s are incompatible') % tuple(selactions[:2])) ... if rev and action in {'delete', 'rename', 'list'}: raise error.Abort(_("--rev is incompatible with --%s") % action) if inactive and action in {'delete', 'list'}: raise error.Abort(_("--inactive is incompatible with --%s") % action) Differential Revision: https://phab.mercurial-scm.org/D5142
Wed, 17 Oct 2018 22:31:34 +0800 zsh_completion: fix a couple of flags still not being perfect
Anton Shestakov <av6@dwimlabs.net> [Wed, 17 Oct 2018 22:31:34 +0800] rev 40335
zsh_completion: fix a couple of flags still not being perfect Differential Revision: https://phab.mercurial-scm.org/D5141
Wed, 17 Oct 2018 22:27:10 +0800 zsh_completion: use $_hg_remote_opts after it is defined
Anton Shestakov <av6@dwimlabs.net> [Wed, 17 Oct 2018 22:27:10 +0800] rev 40334
zsh_completion: use $_hg_remote_opts after it is defined Before this patch, zsh wouldn't complete --ssh, --remotecmd or --insecure for hg clone. While at it, replace --uncompressed by --stream. Differential Revision: https://phab.mercurial-scm.org/D5140
Wed, 17 Oct 2018 11:56:03 -0700 tests: fix "running x tests using y ... " output in a few more places
Martin von Zweigbergk <martinvonz@google.com> [Wed, 17 Oct 2018 11:56:03 -0700] rev 40333
tests: fix "running x tests using y ... " output in a few more places These seem to have been missed by 1039404c5e1d (run-tests: print number of tests and parallel process count, 2018-10-13). Differential Revision: https://phab.mercurial-scm.org/D5145
Sun, 14 Oct 2018 09:34:21 +0000 py3: fix test-hardlinks.t
Mark Thomas <mbthomas@fb.com> [Sun, 14 Oct 2018 09:34:21 +0000] rev 40332
py3: fix test-hardlinks.t Differential Revision: https://phab.mercurial-scm.org/D5096
Fri, 14 Sep 2018 14:56:13 -0700 exchange: support declaring pull depth
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 14 Sep 2018 14:56:13 -0700] rev 40331
exchange: support declaring pull depth Upcoming commits will teach exchangev2 how to perform a shallow clone. This commit teaches hg.clone(), exchange.pull(), and exchange.pulloperation to recognize a request for a shallow clone by having the caller specify a numeric depth of the maximum number of ancestor changesets to fetch. There are certainly other ways we could control shallow-ness. But this one is simple to implement and is also how the narrow extension controls things. So it seems to make sense to start here. Differential Revision: https://phab.mercurial-scm.org/D5136
Wed, 17 Oct 2018 10:10:05 +0200 exchangev2: support for calling rawstorefiledata to retrieve raw files
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 17 Oct 2018 10:10:05 +0200] rev 40330
exchangev2: support for calling rawstorefiledata to retrieve raw files This is somewhat hacky. For that I apologize. At the 4.8 Sprint, we decided we wanted to land support in wireprotov2 for doing a partial clone with changelog and manifestlog bootstrapped from a "stream clone" like primitive. This commit implements the client-side bits necessary to facilitate that. If the new server-side command for obtaining raw files data is available, we call it to get the raw files for the changelog and manifestlog. Then we fall through to an incremental pull. But when fetching files data, instead of using the list of a changesets and manifests that we fetched via the "changesetdata" command, we do a linear scan of the repo and resolve the changeset and manifest nodes along with the manifest linkrevs. Differential Revision: https://phab.mercurial-scm.org/D5135
Tue, 16 Oct 2018 21:31:21 +0200 wireprotov2: implement command for retrieving raw store files
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 16 Oct 2018 21:31:21 +0200] rev 40329
wireprotov2: implement command for retrieving raw store files Implementing shallow clone of the changelog is hard. We want the 4.8 release to have a fast implementation of partial clone in wireprotov2. In order to achieve fast, we can't use deltas for transferring changelog and manifestlog data. Per discussions at the 4.8 sprint, this commit implements a somwwhat hacky and likely-to-be-changed-drastically-or-dropped command in wireprotov2 that facilitates access to raw store files, namely the changelog and manifestlog. Using this command, clients can perform a "stream clone" of sorts for just the changelog and manifestlog. This will allow clients to fetch the changelog and manifest revlogs, stream them to disk (which should be fast), then follow up filesdata requests for files revision data for a particular changeset. Differential Revision: https://phab.mercurial-scm.org/D5134
Tue, 16 Oct 2018 21:35:33 +0200 wireprotov2: add response type that serializes to indefinite length bytestring
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 16 Oct 2018 21:35:33 +0200] rev 40328
wireprotov2: add response type that serializes to indefinite length bytestring This will be needed in a future patch. Differential Revision: https://phab.mercurial-scm.org/D5133
Wed, 26 Sep 2018 14:38:43 -0700 exchangev2: recognize narrow patterns when pulling
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 26 Sep 2018 14:38:43 -0700] rev 40327
exchangev2: recognize narrow patterns when pulling pulloperation instances were recently taught to record file include and exclude patterns to facilitate narrow file transfer. Teaching the exchangev2 code to transfer a subset of files is as simple as constructing a narrow matcher from these patterns and filtering all seen file paths through it. Keep in mind that this change only influences file data: we're still fetching all changeset and manifest data. So, there's still a ton of "partial clone" to implement in exchangev2. On a personal note, I derive gratification that this feature requires very few lines of new code to implement. To test this, we implemented a minimal extension which allows us to specify --include/--exclude to clone. While the narrow extension provides these arguments, I explicitly wanted to test this functionality without the narrow extension enabled, as that extension monkeypatches various things and I want to isolate the behavior of core Mercurial. Differential Revision: https://phab.mercurial-scm.org/D5132
Tue, 09 Oct 2018 08:50:13 -0700 sqlitestore: file storage backend using SQLite
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 09 Oct 2018 08:50:13 -0700] rev 40326
sqlitestore: file storage backend using SQLite This commit provides an extension which uses SQLite to store file data (as opposed to revlogs). As the inline documentation describes, there are still several aspects to the extension that are incomplete. But it's a start. The extension does support basic clone, checkout, and commit workflows, which makes it suitable for simple use cases. One notable missing feature is support for "bundlerepos." This is probably responsible for the most test failures when the extension is activated as part of the test suite. All revision data is stored in SQLite. Data is stored as zstd compressed chunks (default if zstd is available), zlib compressed chunks (default if zstd is not available), or raw chunks (if configured or if a compressed delta is not smaller than the raw delta). This makes things very similar to revlogs. Unlike revlogs, the extension doesn't yet enforce a limit on delta chain length. This is an obvious limitation and should be addressed. This is somewhat mitigated by the use of zstd, which is much faster than zlib to decompress. There is a dedicated table for storing deltas. Deltas are stored by the SHA-1 hash of their uncompressed content. The "fileindex" table has columns that reference the delta for each revision and the base delta that delta should be applied against. A recursive SQL query is used to resolve the delta chain along with the delta data. By storing deltas by hash, we are able to de-duplicate delta storage! With revlogs, the same deltas in different revlogs would result in duplicate storage of that delta. In this scheme, inserting the duplicate delta is a no-op and delta chains simply reference the existing delta. When initially implementing this extension, I did not have content-indexed deltas and deltas could be duplicated across files (just like revlogs). When I implemented content-indexed deltas, the size of the SQLite database for a full clone of mozilla-unified dropped: before: 2,554,261,504 bytes after: 2,488,754,176 bytes Surprisingly, this is still larger than the bytes size of revlog files: revlog files: 2,104,861,230 bytes du -b: 2,254,381,614 I would have expected storage to be smaller since we're not limiting delta chain length and since we're using zstd instead of zlib. I suspect the SQLite indexes and per-column overhead account for the bulk of the differences. (Keep in mind that revlog uses a 64-byte packed struct for revision index data and deltas are stored without padding. Aside from the 12 unused bytes in the 32 byte node field, revlogs are pretty efficient.) Another source of overhead is file name storage. With revlogs, file names are stored in the filesystem. But with SQLite, we need to store file names in the database. This is roughly equivalent to the size of the fncache file, which for the mozilla-unified repository is ~34MB. Since the SQLite database isn't append-only and since delta chains can reference any delta, this opens some interesting possibilities. For example, we could store deltas in reverse, such that fulltexts are stored for newer revisions and deltas are applied to reconstruct older revisions. This is likely a more optimal storage strategy for version control, as new data tends to be more frequently accessed than old data. We would obviously need wire protocol support for transferring revision data from newest to oldest. And we would probably need some kind of mechanism for "re-encoding" stores. But it should be doable. This extension is very much experimental quality. There are a handful of features that don't work. It probably isn't suitable for day-to-day use. But it could be used in limited cases (e.g. read-only checkouts like in CI). And it is also a good proving ground for alternate storage backends. As we continue to define interfaces for all things storage, it will be useful to have a viable alternate storage backend to see how things shake out in practice. test-storage.py passes on Python 2 and introduces no new test failures on Python 3. Having the storage-level unit tests has proved to be insanely useful when developing this extension. Those tests caught numerous bugs during development and I'm convinced this style of testing is the way forward for ensuring alternate storage backends work as intended. Of course, test coverage isn't close to what it needs to be. But it is a start. And what coverage we have gives me confidence that basic store functionality is implemented properly. Differential Revision: https://phab.mercurial-scm.org/D4928
Tue, 16 Oct 2018 15:36:19 +0200 storageutil: extract most of peek_censored from revlog
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 16 Oct 2018 15:36:19 +0200] rev 40325
storageutil: extract most of peek_censored from revlog This function is super hacky and isn't correct 100% of the time. I'm going to need this functionality on a future non-revlog store. Let's copy things to storageutil so this code only exists once. Differential Revision: https://phab.mercurial-scm.org/D5118
Thu, 20 Sep 2018 17:27:01 -0700 lfs: autoload the extension when cloning from repo with lfs enabled
Matt Harbison <matt_harbison@yahoo.com> [Thu, 20 Sep 2018 17:27:01 -0700] rev 40324
lfs: autoload the extension when cloning from repo with lfs enabled This is based on a patch by Gregory Szorc. I made small adjustments to clean up the messaging when the server has the extension enabled, but the client has it disabled (to prevent autoloading). Additionally, I added a second server capability to distinguish between the server having the extension enabled, and the server having LFS commits. This helps prevent unnecessary requirement propagation- the client shouldn't add a requirement that the server doesn't have, just because the server had the extension loaded. The TODO I had about advertising a capability when the server can natively serve up blobs isn't relevant anymore (we've had 2 releases that support this), so I dropped it. Currently, we lazily add the "lfs" requirement to a repo when we first encounter LFS data. Due to a pretxnchangegroup hook that looks for LFS data, this can happen at the end of clone. Now that we have more control over how repositories are created, we can do better. This commit adds a repo creation option to add the "lfs" requirement. hg.clone() sets this creation option if the remote peer is advertising lfs usage (as opposed to just support needed to push). So, what this change effectively does is have cloned repos automatically inherit the "lfs" requirement. Differential Revision: https://phab.mercurial-scm.org/D5130
Tue, 16 Oct 2018 16:24:46 +0200 testing: switch to inserting deltas
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 16 Oct 2018 16:24:46 +0200] rev 40323
testing: switch to inserting deltas As the comment in the test specifies, this was relying on storage backend implementation details. We switch to inserting a raw delta, skipping the regular insert path to ensure we have the desired outcome. This required implementing support for handling deltas in the revlog testing code. Differential Revision: https://phab.mercurial-scm.org/D5116
Tue, 16 Oct 2018 15:24:06 +0200 testing: remove expectation of error on bad node insert
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 16 Oct 2018 15:24:06 +0200] rev 40322
testing: remove expectation of error on bad node insert addgroup() doesn't necessarily validate the hashes of each incoming revision. This is an optimization that allows delta group application to complete faster. The fact that revlog raises in this particular test is an implementation detail due to the way revlogs are testing multiple deltas. Differential Revision: https://phab.mercurial-scm.org/D5115
Tue, 16 Oct 2018 17:45:39 +0200 storageutil: convert fileid to bytes to avoid cast to %s
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 16 Oct 2018 17:45:39 +0200] rev 40321
storageutil: convert fileid to bytes to avoid cast to %s test-storage.py manages to trigger this on Python 3. Differential Revision: https://phab.mercurial-scm.org/D5117
Tue, 16 Oct 2018 17:48:28 +0200 tests: use byte literals in test-storage.py
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 16 Oct 2018 17:48:28 +0200] rev 40320
tests: use byte literals in test-storage.py This fixes a Python 3 breakage due to unknown key due to str/bytes type mismatch. # skip-blame just b'' literals Differential Revision: https://phab.mercurial-scm.org/D5114
Tue, 16 Oct 2018 07:19:38 +0200 py3: byte-stringify literals in test-keyword.t
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 07:19:38 +0200] rev 40319
py3: byte-stringify literals in test-keyword.t # skip-blame just some b'' prefixes
Tue, 16 Oct 2018 07:18:30 +0200 py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 07:18:30 +0200] rev 40318
py3: flush std streams before/after running user code in heredoctest.py Otherwise, things written to stdout.buffer would be interleaved.
Tue, 16 Oct 2018 08:06:17 +0200 py3: rewrite StringIO fallback for Python 3
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 08:06:17 +0200] rev 40317
py3: rewrite StringIO fallback for Python 3
Tue, 16 Oct 2018 07:04:07 +0200 py3: reinvent print() function for contrib/hgclient.py
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 07:04:07 +0200] rev 40316
py3: reinvent print() function for contrib/hgclient.py
Tue, 16 Oct 2018 07:08:12 +0200 py3: work around unicode stdio streams in contrib/hgclient.py
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 07:08:12 +0200] rev 40315
py3: work around unicode stdio streams in contrib/hgclient.py
Tue, 16 Oct 2018 07:00:41 +0200 py3: convert string literals to bytes in contrib/hgclient.py
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 07:00:41 +0200] rev 40314
py3: convert string literals to bytes in contrib/hgclient.py # skip-blame just many b'' prefixes
Tue, 16 Oct 2018 08:16:11 -0400 merge with stable
Augie Fackler <augie@google.com> [Tue, 16 Oct 2018 08:16:11 -0400] rev 40313
merge with stable
Fri, 31 Aug 2018 19:58:41 +0100 branchmap: remove redundant sort
Martijn Pieters <mj@octobus.net> [Fri, 31 Aug 2018 19:58:41 +0100] rev 40312
branchmap: remove redundant sort There is absoluty no benefit in sorting a list that's being merged into a set on the next line. The changelog.ancestors() call later on also doesn't benefit from a sorted sequence of revs. Differential Revision: https://phab.mercurial-scm.org/D5111
Thu, 11 Oct 2018 03:15:04 +0200 revset: drop special case of 'revset(...)' function in analyze
Boris Feld <boris.feld@octobus.net> [Thu, 11 Oct 2018 03:15:04 +0200] rev 40311
revset: drop special case of 'revset(...)' function in analyze We now have a valid no-op function. We no longer need the special case.
Thu, 11 Oct 2018 03:13:53 +0200 revset: document the `revset(...)` syntax
Boris Feld <boris.feld@octobus.net> [Thu, 11 Oct 2018 03:13:53 +0200] rev 40310
revset: document the `revset(...)` syntax We introduce a new "no-op" function to bear the documentation. In practice, the parsing step is skipping it so it is not even called. This will get fixed in the next changeset.
Tue, 16 Oct 2018 12:39:21 +0200 check-commit: update test expectation per removal of "double empty line" rule
Yuya Nishihara <yuya@tcha.org> [Tue, 16 Oct 2018 12:39:21 +0200] rev 40309
check-commit: update test expectation per removal of "double empty line" rule Follow up for 47084b5ffd80.
Sun, 14 Oct 2018 15:40:16 +0200 style: drop requirement to only use single lines between top-level objects
Martijn Pieters <mj@octobus.net> [Sun, 14 Oct 2018 15:40:16 +0200] rev 40308
style: drop requirement to only use single lines between top-level objects Differential Revision: https://phab.mercurial-scm.org/D5105
Sun, 14 Oct 2018 13:05:53 -0400 py3: byteify extension in test-relink.t
Matt Harbison <matt_harbison@yahoo.com> [Sun, 14 Oct 2018 13:05:53 -0400] rev 40307
py3: byteify extension in test-relink.t
Sat, 13 Oct 2018 04:20:22 -0400 f: fix a Python 3 bytes/string issue
Augie Fackler <augie@google.com> [Sat, 13 Oct 2018 04:20:22 -0400] rev 40306
f: fix a Python 3 bytes/string issue I suspect we should test this tool in isolation, but we don't yet. Oh well. Differential Revision: https://phab.mercurial-scm.org/D5061
Sun, 14 Oct 2018 08:55:30 -0400 tests: use regex instead of Python versions for archive hash changes
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 08:55:30 -0400] rev 40305
tests: use regex instead of Python versions for archive hash changes It turns out this behavior changed between versions of Python 3. Let's just always accept either size or sha1, and move on. Differential Revision: https://phab.mercurial-scm.org/D5104
Sun, 14 Oct 2018 05:29:00 -0400 notify: a ton of encoding dancing to deal with the email module
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 05:29:00 -0400] rev 40304
notify: a ton of encoding dancing to deal with the email module Almost fixes test-keyword.t on Python 3, but leaves us with some extremely confusing failures at the end of the test that seem related to the command server? Differential Revision: https://phab.mercurial-scm.org/D5100
Sun, 14 Oct 2018 11:06:21 -0400 tests: add missing b prefix in test-context-metadata.t
Augie Fackler <augie@google.com> [Sun, 14 Oct 2018 11:06:21 -0400] rev 40303
tests: add missing b prefix in test-context-metadata.t # skip-blame just a b prefix Differential Revision: https://phab.mercurial-scm.org/D5109
(0) -30000 -10000 -3000 -1000 -300 -100 -64 +64 +100 +300 +1000 +3000 +10000 tip