Sun, 10 Dec 2017 04:49:53 +0530 py3: handle keyword arguments correctly in templater.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:49:53 +0530] rev 35372
py3: handle keyword arguments correctly in templater.py Differential Revision: https://phab.mercurial-scm.org/D1645
Sun, 10 Dec 2017 04:49:40 +0530 py3: handle keyword arguments correctly in subrepo.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:49:40 +0530] rev 35371
py3: handle keyword arguments correctly in subrepo.py Differential Revision: https://phab.mercurial-scm.org/D1644
Sun, 10 Dec 2017 04:49:29 +0530 py3: handle keyword arguments correctly in statprof.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:49:29 +0530] rev 35370
py3: handle keyword arguments correctly in statprof.py Differential Revision: https://phab.mercurial-scm.org/D1643
Sun, 10 Dec 2017 04:48:59 +0530 py3: handle keyword arguments correctly in sslutil.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:48:59 +0530] rev 35369
py3: handle keyword arguments correctly in sslutil.py Differential Revision: https://phab.mercurial-scm.org/D1642
Sun, 10 Dec 2017 04:48:24 +0530 py3: handle keyword arguments correctly in simplemerge.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:48:24 +0530] rev 35368
py3: handle keyword arguments correctly in simplemerge.py Differential Revision: https://phab.mercurial-scm.org/D1641
Sun, 10 Dec 2017 04:48:12 +0530 py3: handle keyword arguments correctly in revset.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:48:12 +0530] rev 35367
py3: handle keyword arguments correctly in revset.py Differential Revision: https://phab.mercurial-scm.org/D1640
Sun, 10 Dec 2017 04:48:00 +0530 py3: handle keyword arguments correctly in patch.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:48:00 +0530] rev 35366
py3: handle keyword arguments correctly in patch.py Differential Revision: https://phab.mercurial-scm.org/D1639
Sun, 10 Dec 2017 04:47:49 +0530 py3: handle keyword arguments correctly in obsolete.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:47:49 +0530] rev 35365
py3: handle keyword arguments correctly in obsolete.py Differential Revision: https://phab.mercurial-scm.org/D1638
Sun, 10 Dec 2017 04:47:34 +0530 py3: handle keyword arguments correctly in keepalive.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:47:34 +0530] rev 35364
py3: handle keyword arguments correctly in keepalive.py Differential Revision: https://phab.mercurial-scm.org/D1637
Fri, 08 Dec 2017 00:18:30 -0500 lfs: restore the local blob store after a repo upgrade
Matt Harbison <matt_harbison@yahoo.com> [Fri, 08 Dec 2017 00:18:30 -0500] rev 35363
lfs: restore the local blob store after a repo upgrade This also ends up testing the local extension wrapping for dstrepo during upgrade, which was fixed in 06987c6971be.
Thu, 07 Dec 2017 23:44:06 -0500 lfs: override walk() in lfsvfs
Matt Harbison <matt_harbison@yahoo.com> [Thu, 07 Dec 2017 23:44:06 -0500] rev 35362
lfs: override walk() in lfsvfs In order to fix the missing lfs store after an upgrade, I attempted to walk the store vfs to hardlink to the upgraded repo's store. But the custom join() clashes with the default walk() implementation. First, 'path=None' blew up in the regex matcher, because it wanted a string. But even if that is fixed, the join to walk the root of the vfs wouldn't match the required xx/xx...xx pattern. The first cut of this was a copy/paste/tweak of the base implementation, but this version of walk() hides the internal directories, and treats the vfs as a flat store. I think this makes sense because most vfs methods call join() on input paths, which wants the simple oid format. It also relieves the caller from having to deal with bogus files/directories in the store.
Thu, 07 Dec 2017 22:36:31 -0500 tests: add coverage for preserving 'lfs' requirement on repo upgrade
Matt Harbison <matt_harbison@yahoo.com> [Thu, 07 Dec 2017 22:36:31 -0500] rev 35361
tests: add coverage for preserving 'lfs' requirement on repo upgrade The test also shows that the local blob store is erroneously lost.
Thu, 07 Dec 2017 22:35:19 -0500 test-upgrade-repo: glob away timing values
Matt Harbison <matt_harbison@yahoo.com> [Thu, 07 Dec 2017 22:35:19 -0500] rev 35360
test-upgrade-repo: glob away timing values
Sun, 10 Dec 2017 04:47:21 +0530 py3: handle keyword arguments correctly in httppeer.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:47:21 +0530] rev 35359
py3: handle keyword arguments correctly in httppeer.py Differential Revision: https://phab.mercurial-scm.org/D1635
Sun, 10 Dec 2017 04:47:04 +0530 py3: handle keyword arguments correctly in httpconnection.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:47:04 +0530] rev 35358
py3: handle keyword arguments correctly in httpconnection.py Differential Revision: https://phab.mercurial-scm.org/D1634
Sun, 10 Dec 2017 04:46:50 +0530 py3: handle keyword arguments correctly in hook.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:46:50 +0530] rev 35357
py3: handle keyword arguments correctly in hook.py Differential Revision: https://phab.mercurial-scm.org/D1633
Sun, 10 Dec 2017 04:46:39 +0530 py3: handle keyword arguments correctly in help.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:46:39 +0530] rev 35356
py3: handle keyword arguments correctly in help.py Differential Revision: https://phab.mercurial-scm.org/D1632
Sun, 10 Dec 2017 04:46:25 +0530 py3: handle keyword arguments correctly in exchange.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:46:25 +0530] rev 35355
py3: handle keyword arguments correctly in exchange.py Differential Revision: https://phab.mercurial-scm.org/D1631
Sun, 10 Dec 2017 04:46:13 +0530 py3: handle keyword arguments correctly in dispatch.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:46:13 +0530] rev 35354
py3: handle keyword arguments correctly in dispatch.py Differential Revision: https://phab.mercurial-scm.org/D1630
Sun, 10 Dec 2017 04:45:56 +0530 py3: handle keyword arguments correctly in context.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:45:56 +0530] rev 35353
py3: handle keyword arguments correctly in context.py Differential Revision: https://phab.mercurial-scm.org/D1629
Sun, 10 Dec 2017 04:45:41 +0530 py3: handle keyword arguments correctly in commands.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:45:41 +0530] rev 35352
py3: handle keyword arguments correctly in commands.py Differential Revision: https://phab.mercurial-scm.org/D1628
Sun, 10 Dec 2017 04:45:27 +0530 py3: handle keyword arguments correctly in color.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:45:27 +0530] rev 35351
py3: handle keyword arguments correctly in color.py Differential Revision: https://phab.mercurial-scm.org/D1627
Sun, 10 Dec 2017 04:45:10 +0530 py3: handle keyword arguments correctly in cmdutil.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:45:10 +0530] rev 35350
py3: handle keyword arguments correctly in cmdutil.py Differential Revision: https://phab.mercurial-scm.org/D1626
Sun, 10 Dec 2017 04:43:41 +0530 py3: handle keyword arguments correctly in archival.py
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 04:43:41 +0530] rev 35349
py3: handle keyword arguments correctly in archival.py Differential Revision: https://phab.mercurial-scm.org/D1625
Sun, 10 Dec 2017 02:52:48 +0530 py3: handle keyword arguments correctly in hgext/largefiles/
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 10 Dec 2017 02:52:48 +0530] rev 35348
py3: handle keyword arguments correctly in hgext/largefiles/ Keys of keyword arguments must be str(unicode) on Python 3. The transformer which we use on Python 3, appends b'' in front of each string literal, so this may lead in KeyError or None return even when the key is present by we are using bytes value and it's stored in unicodes. This patch and all the similar patches handle this by either converting the keys of kwargs to bytes using 'pycompat.byteskwargs()' or adding r'' so that the transformer won't append b''. This next 23 patches follows the above mentioned way to handle keyword arguments. Differential Revision: https://phab.mercurial-scm.org/D1624
Thu, 07 Dec 2017 00:26:45 +0530 remotenames: rename related file and storage dir to logexchange
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 07 Dec 2017 00:26:45 +0530] rev 35347
remotenames: rename related file and storage dir to logexchange This patch renames remotenames.py to logexchange.py, test-remotenames.t to test-logexchange.t. Also this patch renames the directory in which the data is stored from remotenames to logexchange. After this patch, data about bookmarks and branches from a server we pull is stored in `.hg/logexchange/(bookmarks|branches)` files. Thanks to smf for the suggestion. Differential Revision: https://phab.mercurial-scm.org/D1607
Thu, 07 Dec 2017 21:56:18 +0100 lfs: allow to run 'debugupgraderepo' on repo with largefiles
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 21:56:18 +0100] rev 35346
lfs: allow to run 'debugupgraderepo' on repo with largefiles The extensions wrap the necessary function to ensure the 'lfs' requirements won't be dropped. It is now possible to run `hg debugupgraderepo` on a repository with lfs.
Thu, 07 Dec 2017 20:27:03 +0100 upgrade: add a 'redeltafullall' mode
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 20:27:03 +0100] rev 35345
upgrade: add a 'redeltafullall' mode We add a new mode for delta recomputation, when selected, each full text will go through the full "addrevision" mechanism again. This is slower than "redeltaall" but this gives the opportunity for extensions to trigger special logic. For example, the lfs extensions can decide to promote some revision to lfs storage during the upgrade.
Thu, 07 Dec 2017 22:37:18 +0100 upgrade: use actual filelog to convert filelog
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 22:37:18 +0100] rev 35344
upgrade: use actual filelog to convert filelog Extensions can add extra logic related to the config, so we must use the actual class. The path used needs minimal transformation for this to work.
Thu, 07 Dec 2017 18:56:10 +0100 upgrade: more standard creation of the temporary repository
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 18:56:10 +0100] rev 35343
upgrade: more standard creation of the temporary repository By using the standard path to create a repository we fill some hole in the current initialization process. The one who triggered this changeset was the lack of extensions initialization.
Thu, 07 Dec 2017 18:55:35 +0100 upgrade: use the repository 'ui' as the base for the new repository
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 18:55:35 +0100] rev 35342
upgrade: use the repository 'ui' as the base for the new repository The `repo.baseui` contains all the configuration but the one specific to the repository (so it can be used when dealing with local peer and sub- repository). However, we need the repository config to be taken into account when doing the upgrade. Otherwise, the upgrade related config that exists in the repository config won't be taken into account when performing the update. A buggy and surprising behavior. We had to work around protection set around `repo.ui.copy` since we are an uncommon case.
Thu, 07 Dec 2017 20:50:24 +0100 upgrade: add a test to show the repository config being ignored
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 20:50:24 +0100] rev 35341
upgrade: add a test to show the repository config being ignored The upgrade process ignores the config within the repository. The next changeset fixes it, but we introduce this test before to show it actually tests our target.
Thu, 07 Dec 2017 16:50:48 +0100 upgrade: register compression as a format variants
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 16:50:48 +0100] rev 35340
upgrade: register compression as a format variants Compression is a promising vector for speedup, let us make it easier to check the compression used and upgrade existing repository.
Thu, 07 Dec 2017 16:49:24 +0100 debugformat: handle non-boolean value for variant
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 16:49:24 +0100] rev 35339
debugformat: handle non-boolean value for variant
Thu, 07 Dec 2017 16:12:32 +0100 debugformat: update label depending on value difference
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 16:12:32 +0100] rev 35338
debugformat: update label depending on value difference The new label highlight areas where the repo format differs from current config or default. This should help people spot area where a repository mismatch with the expected state.
Thu, 07 Dec 2017 16:05:20 +0100 debugformat: add data about the config when verbose
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 16:05:20 +0100] rev 35337
debugformat: add data about the config when verbose In verbose mode, the command also displays the current configuration choice for the variant and the global Mercurial default for it.
Thu, 07 Dec 2017 16:19:46 +0100 debugformat: add a 'debugformat' command
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 16:19:46 +0100] rev 35336
debugformat: add a 'debugformat' command The command displays basic data about all format variants registered for repo upgrades. This gives a quick way to peek into a repository format. The 'fm.write()' calls are very independent because more data will be added in later changeset. Having more separate call make the later patch clearer.
Thu, 07 Dec 2017 15:55:59 +0100 upgrade: rename 'removecldeltachain' to 'plain-cl-delta'
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 15:55:59 +0100] rev 35335
upgrade: rename 'removecldeltachain' to 'plain-cl-delta' The new naming is more descriptive of a "state" while the older one was more about "action". I'm looking into command exposing more of data about the state of the repository so "state" oriented work better there. The key has not been made public anywhere outside the debug area so it is fine to update it.
Fri, 08 Dec 2017 23:48:23 -0500 tests: glob away ' that doesn't occur on all platforms in lfs test
Augie Fackler <augie@google.com> [Fri, 08 Dec 2017 23:48:23 -0500] rev 35334
tests: glob away ' that doesn't occur on all platforms in lfs test Differential Revision: https://phab.mercurial-scm.org/D1623
Fri, 08 Dec 2017 12:44:27 -0800 rebase: extract _assignworkingcopy
Phil Cohen <phillco@fb.com> [Fri, 08 Dec 2017 12:44:27 -0800] rev 35333
rebase: extract _assignworkingcopy Slightly cleaner, and makes it easier to hook this in an extension. Differential Revision: https://phab.mercurial-scm.org/D1617
Fri, 08 Dec 2017 15:27:58 -0800 rebase: disable `inmemory` if the rebaseset contains the working copy
Phil Cohen <phillco@fb.com> [Fri, 08 Dec 2017 15:27:58 -0800] rev 35332
rebase: disable `inmemory` if the rebaseset contains the working copy As described in the comment, rebasing the working copy parent with in-memory merge, and then updating to the new commit, isn't much faster because of the extra overhead of uppdating. Best to leave it off in that case. This commit makes deploying in-memory merge via an extension easier, because you can just set `inmemory=True` based on some config or probability, and this will turn off the cases where it's not desired. Differential Revision: https://phab.mercurial-scm.org/D1616
Wed, 06 Dec 2017 06:40:27 +0530 clone: add support for storing remotenames while cloning
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 06 Dec 2017 06:40:27 +0530] rev 35331
clone: add support for storing remotenames while cloning If `experimental.remotenames` is set to True, we store the remotenames in case of `hg pull`. This patch adds that support to clone command also. Differential Revision: https://phab.mercurial-scm.org/D1601
Fri, 08 Dec 2017 14:20:34 -0800 revset: use phasecache.getrevset to calculate public()
Jun Wu <quark@fb.com> [Fri, 08 Dec 2017 14:20:34 -0800] rev 35330
revset: use phasecache.getrevset to calculate public() Other revsets like secret(), draft(), _nonpublic() are using phasescache.getrevset already. The latter is more efficient after D1606. So let's migrate the public() revset function too. Tested using: $ hg debugshell --hidden --cwd hg-committed` In [1]: %timeit len(repo.revs('public()')) * Before D1606: 10 loops, best of 3: 22.5 ms per loop * Before this change, after D1606: 10 loops, best of 3: 28.6 ms per loop * After this change: 10 loops, best of 3: 20.2 ms per loop Therefore `public()` revset becomes even slightly faster after the data structure change by D1606. A similar performance win could also be observed on a large repo. A side effect is `phasecache.getrevset` needs to take a `subset` parameter. That was added with a default value so it won't cause BC issues. Differential Revision: https://phab.mercurial-scm.org/D1620
Fri, 08 Dec 2017 16:14:19 -0500 highlight: eagerly discover plugin lexers while demandimport is off
Augie Fackler <augie@google.com> [Fri, 08 Dec 2017 16:14:19 -0500] rev 35329
highlight: eagerly discover plugin lexers while demandimport is off Since highlight is only relevant for servers, it seems worthwhile to just trigger this eagerly, which avoids really weird traceback problems caused by demandimport messing with some of the lexer plugins. Differential Revision: https://phab.mercurial-scm.org/D1619
Fri, 08 Dec 2017 17:20:11 +0900 patch: move part of tabsplitter logic in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net> [Fri, 08 Dec 2017 17:20:11 +0900] rev 35328
patch: move part of tabsplitter logic in _inlinediff It cannot be entirely moved within _inlinediff as long as worddiff is experimental (when turned off, matches is always an empty dict).
Thu, 07 Dec 2017 16:07:06 -0800 overlayworkingctx: invalidate the manifest cache when changing parents
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 16:07:06 -0800] rev 35327
overlayworkingctx: invalidate the manifest cache when changing parents This fixes problems noticeable when rebasing several commits into one destination commit using ``--collapse``. The manifest cache needs to be cleared each time. Differential Revision: https://phab.mercurial-scm.org/D1244
Thu, 07 Dec 2017 16:07:06 -0800 overlayworkingctx: add `_compact()`
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 16:07:06 -0800] rev 35326
overlayworkingctx: add `_compact()` Alas, presence of a key in the cache isn't sufficient evidence that the file is actually dirty. Differential Revision: https://phab.mercurial-scm.org/D1243
Thu, 07 Dec 2017 22:26:07 -0800 overlayworkingctx: add ``tomemctx()``
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 22:26:07 -0800] rev 35325
overlayworkingctx: add ``tomemctx()`` Differential Revision: https://phab.mercurial-scm.org/D1242
Thu, 07 Dec 2017 16:07:06 -0800 overlayworkingctx: add _auditconflicts to write()
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 16:07:06 -0800] rev 35324
overlayworkingctx: add _auditconflicts to write() Alas, part of Mercurial's conflict detection (for file<->folder conflicts, for example) depends on the filesystem. We don't have the filesystem with IMM, so we have to run these checks ourselves. Differential Revision: https://phab.mercurial-scm.org/D1241
Thu, 07 Dec 2017 16:07:06 -0800 overlayworkingctx: inherit from committablectx instead of workingctx
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 16:07:06 -0800] rev 35323
overlayworkingctx: inherit from committablectx instead of workingctx We should find a better name for this context at some point. (mutablememctx?) Differential Revision: https://phab.mercurial-scm.org/D1240
Thu, 07 Dec 2017 16:07:06 -0800 overlayworkingctx: add a no-op ``clearunknown()``
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 16:07:06 -0800] rev 35322
overlayworkingctx: add a no-op ``clearunknown()`` We no longer inherit ``workingctx``'s version, but we also don't need to do anything anymore. Differential Revision: https://phab.mercurial-scm.org/D1239
Thu, 07 Dec 2017 16:07:06 -0800 overlayworkingctx: add _manifest, files(), added(), removed(), modified()
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 16:07:06 -0800] rev 35321
overlayworkingctx: add _manifest, files(), added(), removed(), modified() Differential Revision: https://phab.mercurial-scm.org/D1238
Fri, 08 Dec 2017 12:14:38 -0800 rebase: rerun a rebase on-disk if IMM merge conflicts arise
Phil Cohen <phillco@fb.com> [Fri, 08 Dec 2017 12:14:38 -0800] rev 35320
rebase: rerun a rebase on-disk if IMM merge conflicts arise Differential Revision: https://phab.mercurial-scm.org/D1249
Thu, 07 Dec 2017 22:35:43 -0800 rebase: add concludememorynode(), and call it when rebasing in-memory
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 22:35:43 -0800] rev 35319
rebase: add concludememorynode(), and call it when rebasing in-memory Differential Revision: https://phab.mercurial-scm.org/D1248
Thu, 07 Dec 2017 16:07:06 -0800 rebase: pass the wctx object (IMM or on-disk) to merge.update
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 16:07:06 -0800] rev 35318
rebase: pass the wctx object (IMM or on-disk) to merge.update Differential Revision: https://phab.mercurial-scm.org/D1247
Thu, 07 Dec 2017 16:07:06 -0800 rebase: do not update if IMM; instead, set the overlaywctx's parents
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 16:07:06 -0800] rev 35317
rebase: do not update if IMM; instead, set the overlaywctx's parents Differential Revision: https://phab.mercurial-scm.org/D1246
Thu, 07 Dec 2017 16:07:06 -0800 rebase: pass wctx to rebasenode()
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 16:07:06 -0800] rev 35316
rebase: pass wctx to rebasenode() Differential Revision: https://phab.mercurial-scm.org/D1245
Sat, 09 Dec 2017 00:39:15 +0900 check-code: allow tabs in heredoc
Yuya Nishihara <yuya@tcha.org> [Sat, 09 Dec 2017 00:39:15 +0900] rev 35315
check-code: allow tabs in heredoc
Fri, 08 Dec 2017 22:27:14 +0800 hgweb: rewrite `template = A and B or C` to be a proper ternary operator
Anton Shestakov <av6@dwimlabs.net> [Fri, 08 Dec 2017 22:27:14 +0800] rev 35314
hgweb: rewrite `template = A and B or C` to be a proper ternary operator
Wed, 06 Dec 2017 18:37:49 -0800 fsmonitor: fsmonitor should send wlock notifications to watchman
Eamonn Kent <ekent@fb.com> [Wed, 06 Dec 2017 18:37:49 -0800] rev 35313
fsmonitor: fsmonitor should send wlock notifications to watchman The fsmonitor extension should send state-enter and state-leave notifications to watchman when the wlock is acquired/release, respectively. This will allow watchman and watchman subscribers to customize behavior based on whether source control operations are occurring. Test Plan: Tested checkout, update and working copy changes with extension enabled. Differential Revision: https://phab.mercurial-scm.org/D1612
Wed, 06 Dec 2017 18:37:49 -0800 fsmonitor: remove watchman transaction and working copy change notifications
Eamonn Kent <ekent@fb.com> [Wed, 06 Dec 2017 18:37:49 -0800] rev 35312
fsmonitor: remove watchman transaction and working copy change notifications Remove working copy change and transaction notifications. We were relying upon callbacks on transaction function. This caused issues with lock ordering. A different approach will be adopted in a subsequent commit. Differential Revision: https://phab.mercurial-scm.org/D1611
Fri, 08 Dec 2017 16:54:59 +0900 patch: catch unexpected case in _inlinediff
Matthieu Laneuville <matthieu.laneuville@octobus.net> [Fri, 08 Dec 2017 16:54:59 +0900] rev 35311
patch: catch unexpected case in _inlinediff If operation is neither 'diff.inserted' or 'diff.deleted', label and token won't be define. This patch explicitely catches that exception.
Fri, 08 Dec 2017 16:47:18 +0900 patch: reverse _inlinediff output for consistency
Matthieu Laneuville <matthieu.laneuville@octobus.net> [Fri, 08 Dec 2017 16:47:18 +0900] rev 35310
patch: reverse _inlinediff output for consistency
Wed, 06 Dec 2017 15:46:41 +0100 phases: drop the list with phase of each rev, always comput phase sets
Joerg Sonnenberger <joerg@bec.de> [Wed, 06 Dec 2017 15:46:41 +0100] rev 35309
phases: drop the list with phase of each rev, always comput phase sets Change the C implementation of phasecache.loadphaserevs to provide only the sets for draft and secret phase as well as the number of revisions seen. Change the pure Python implementation of the same functino to compute the sets instead of the list of phases for each revision. Change phasecache.phase to check the phase sets and assume public if the revision is in neither draft nor secret set. This is computationally slightly more expensive. Change phasecache.getrevset for public() based queries to compute the set of non-matching revisions and return the result as filtered fullreposet. A shortcut is taken when no draft or secret revision exists. Bump the module version for the changed interface contract. Overall, this saves around 16 Bytes per revision whenever the phasecache is used, for the test case in issue5691 it is around 3MB. getrevset() for a large repository is around 13% slower here, that seems an acceptable trade off. Performance impact for phase() should be similar. Differential Revision: https://phab.mercurial-scm.org/D1606
Fri, 08 Dec 2017 01:23:34 +0100 transaction: build changes['revs'] as range instead of a set
Joerg Sonnenberger <joerg@bec.de> [Fri, 08 Dec 2017 01:23:34 +0100] rev 35308
transaction: build changes['revs'] as range instead of a set Revisions are added consecutively, so a range can easily represent them in the changes list. This saves around 45 Bytes / revision on 64bit platforms and reduces the memory footprint of issue5691 by 15MB. Don't copy changes['revs'] in getobsoleted. Ranges have a very efficient contains implementation already. Differential Revision: https://phab.mercurial-scm.org/D1615
Wed, 06 Dec 2017 16:43:07 -0500 ui: add diff.showfunc to tweakdefaults
Augie Fackler <augie@google.com> [Wed, 06 Dec 2017 16:43:07 -0500] rev 35307
ui: add diff.showfunc to tweakdefaults This is a little risky, as I think we can have some encoding weirdness crop up. showfunc also isn't the most robust feature, but it's still often useful context... Differential Revision: https://phab.mercurial-scm.org/D1610
Wed, 06 Dec 2017 16:42:24 -0500 ui: add curses interface to tweakdefaults
Augie Fackler <augie@google.com> [Wed, 06 Dec 2017 16:42:24 -0500] rev 35306
ui: add curses interface to tweakdefaults This was part of the original proposal, and while *I* don't like the curses interface, most users anecdotally seem to greatly prefer it to plain text interfaces. Differential Revision: https://phab.mercurial-scm.org/D1609
Wed, 06 Dec 2017 23:33:01 +0100 push: restrict common discovery to the pushed set
Boris Feld <boris.feld@octobus.net> [Wed, 06 Dec 2017 23:33:01 +0100] rev 35305
push: restrict common discovery to the pushed set This changeset make use of the ability of the set discovery to only search common changeset for a subset of the repository. Restricting that search to the pushed set avoid potential waste of time finding out the status of many unrelated related revision. Repository with many heads were especially badly affected by this. Here is an example of findcommonhead discovery for pushing 11 outgoing changeset on a repository with tens of thousand of unrelated heads. (discovery run over a ssh link to localhost). Before: queries: 92 time: 44.1996s After: queries: 3 time: 0.6938s A x63 speedup even with a network link without latency.
Wed, 06 Dec 2017 22:44:51 +0100 setdiscover: allow to ignore part of the local graph
Boris Feld <boris.feld@octobus.net> [Wed, 06 Dec 2017 22:44:51 +0100] rev 35304
setdiscover: allow to ignore part of the local graph Currently, the push discovery first determines the full set of common nodes before looking into what changesets are outgoing. When pushing a specific subset, this can lead to pathological situations where we search for the status of thousand of local heads that are unrelated to the requested pushes. To fix this, we need to teach the discovery to ignores part of the graph. Most of the necessary pieces were already in place. This changeset just makes them available to higher level API and tests them. Change actually impacting pushes are coming in a later changeset.
Thu, 07 Dec 2017 01:53:14 +0100 largefiles: allow to run 'debugupgraderepo' on repo with largefiles
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 01:53:14 +0100] rev 35303
largefiles: allow to run 'debugupgraderepo' on repo with largefiles The extensions wrap the necessary function to ensure the 'largefiles' requirements won't be dropped. It is now possible to run `hg debugupgraderepo` on a repository with largefiles.
Thu, 07 Dec 2017 01:51:54 +0100 upgraderepo: allow extension to register preserved requirements
Boris Feld <boris.feld@octobus.net> [Thu, 07 Dec 2017 01:51:54 +0100] rev 35302
upgraderepo: allow extension to register preserved requirements Some requirement does not directly result from config and needs more advanced logic to be preserved. The current example is 'largefiles'. We add a hook point in the upgrade code so that extensions can handle these cases. The 'largefiles' extension will use it in the next changeset.
Thu, 22 Sep 2016 19:41:42 +0900 revset: make follow() accept empty startrev
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 19:41:42 +0900] rev 35301
revset: make follow() accept empty startrev This is the same behavior as ancestors(emptyset).
Thu, 22 Sep 2016 19:40:07 +0900 revset: alias follow(startrev=rev) to ancestors(rev)
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 19:40:07 +0900] rev 35300
revset: alias follow(startrev=rev) to ancestors(rev) This seems natural given 'log -frREV' (with no file pattern) is equivalent to 'log -frREV *'.
Thu, 22 Sep 2016 19:35:36 +0900 revset: make follow() accept keyword arguments
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 19:35:36 +0900] rev 35299
revset: make follow() accept keyword arguments Also renamed the argument from 'pattern' to 'file' conforming to followlines().
Thu, 22 Sep 2016 19:11:26 +0900 revset: make follow() accept multiple startrevs
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 19:11:26 +0900] rev 35298
revset: make follow() accept multiple startrevs The diff might look slightly complicated, but the initial "c = repo['.']" was effective if rev = None.
Thu, 22 Sep 2016 18:41:51 +0900 dagop: use heap to compute max rev in filectxancestors()
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 18:41:51 +0900] rev 35297
dagop: use heap to compute max rev in filectxancestors()
Sun, 22 Oct 2017 18:57:42 +0900 dagop: add smartset interface to filectxancestors()
Yuya Nishihara <yuya@tcha.org> [Sun, 22 Oct 2017 18:57:42 +0900] rev 35296
dagop: add smartset interface to filectxancestors() The original filectx API is kept public since we'll need it to walk ancestor (rev, match) pairs efficiently. The current implementation scans ancestors twice for 'hg log -fp FILE'.
Thu, 07 Dec 2017 13:20:47 -0800 overlayworkingctx: add `_checkexist(path)`
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35295
overlayworkingctx: add `_checkexist(path)` This is in preparation to switch this class to inheriting (and being based off a) `commitctx` instead of a `workingctx`. `filectx` has no `exists` function, so this is how we'll fall back in that case. Differential Revision: https://phab.mercurial-scm.org/D1237
Thu, 07 Dec 2017 13:20:47 -0800 overlayworkingctx: fix a bad reference to `self._path`
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35294
overlayworkingctx: fix a bad reference to `self._path` Differential Revision: https://phab.mercurial-scm.org/D1236
Thu, 07 Dec 2017 13:20:47 -0800 overlayworkingctx: track copy information in the context
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35293
overlayworkingctx: track copy information in the context We can no longer do so in the dirstate, so add the functions to do so here. Differential Revision: https://phab.mercurial-scm.org/D1235
Thu, 07 Dec 2017 13:20:47 -0800 rebaseruntime: raise InMemoryMergeConflictsError on merge conflicts
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35292
rebaseruntime: raise InMemoryMergeConflictsError on merge conflicts Differential Revision: https://phab.mercurial-scm.org/D1234
Thu, 07 Dec 2017 13:20:47 -0800 rebase: do not bail on uncomitted changes if rebasing in-memory
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35291
rebase: do not bail on uncomitted changes if rebasing in-memory Differential Revision: https://phab.mercurial-scm.org/D1233
Thu, 07 Dec 2017 13:25:23 -0800 rebase: add the --inmemory option flag; assign a wctx object for the rebase
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:25:23 -0800] rev 35290
rebase: add the --inmemory option flag; assign a wctx object for the rebase In the future, the --inmemory flag might be deprecated in favor of something more intelligent (for example, always rebasing in-memory if the working copy parent isn't in the rebaseset). But we might keep it as a way to explicitly force IMM on or off. Differential Revision: https://phab.mercurial-scm.org/D1232
Thu, 07 Dec 2017 13:20:47 -0800 overlayworkingctx: move _wrappedctx out of the constructor
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35289
overlayworkingctx: move _wrappedctx out of the constructor With rebase, we will be setting the _wrappedctx at a different point from the wctx construction (somewhat later, and possibly several times). Move it to a public function. Differential Revision: https://phab.mercurial-scm.org/D1231
Thu, 07 Dec 2017 13:20:47 -0800 merge: don't check for unknown files in IMM
Phil Cohen <phillco@fb.com> [Thu, 07 Dec 2017 13:20:47 -0800] rev 35288
merge: don't check for unknown files in IMM Differential Revision: https://phab.mercurial-scm.org/D1214
Fri, 13 Oct 2017 14:08:14 -0700 rebase: enable multidest by default
Jun Wu <quark@fb.com> [Fri, 13 Oct 2017 14:08:14 -0700] rev 35287
rebase: enable multidest by default This was intended to be done by D470. But there was a minor documentation issue. The feature is quite usable now so it gets formally documented and enabled. There is no behavior change for people not using the `SRC` or `ALLSRC` in rebase destination revset. .. feature:: Rebase with different destination per source revision Previously, rebase only supports one unique destination. Now ``SRC`` and ``ALLSRC`` can be used in rebase destination revset to precisely define destination per each individual source revision. For example, the following command could move some orphaned changesets to reasonable new places so they become no longer orphaned:: hg rebase -r 'orphan()-obsolete()' -d 'max((successors(max(roots(ALLSRC) & ::SRC)^)-obsolete())::)' Differential Revision: https://phab.mercurial-scm.org/D1063
Fri, 01 Dec 2017 00:07:23 -0800 overlayworkingctx: make clean() public
Phil Cohen <phillco@fb.com> [Fri, 01 Dec 2017 00:07:23 -0800] rev 35286
overlayworkingctx: make clean() public It will be called directly by rebase after concluding a node. Differential Revision: https://phab.mercurial-scm.org/D1230
Fri, 01 Dec 2017 00:07:23 -0800 overlayworkingctx: remove flushall()
Phil Cohen <phillco@fb.com> [Fri, 01 Dec 2017 00:07:23 -0800] rev 35285
overlayworkingctx: remove flushall() Differential Revision: https://phab.mercurial-scm.org/D1216
Fri, 01 Dec 2017 00:07:23 -0800 merge: skip subrepo state, update hooks, and updating the dirstate in IMM
Phil Cohen <phillco@fb.com> [Fri, 01 Dec 2017 00:07:23 -0800] rev 35284
merge: skip subrepo state, update hooks, and updating the dirstate in IMM Differential Revision: https://phab.mercurial-scm.org/D1215
Fri, 01 Dec 2017 00:07:23 -0800 merge: remove calls to flushall()
Phil Cohen <phillco@fb.com> [Fri, 01 Dec 2017 00:07:23 -0800] rev 35283
merge: remove calls to flushall() Since D1105, these are unnecessary since IMM will now never use workers. Differential Revision: https://phab.mercurial-scm.org/D1213
Fri, 01 Dec 2017 00:07:23 -0800 filemerge: raise InMemoryMergeConflictsError if we hit merge conflicts in IMM
Phil Cohen <phillco@fb.com> [Fri, 01 Dec 2017 00:07:23 -0800] rev 35282
filemerge: raise InMemoryMergeConflictsError if we hit merge conflicts in IMM Merge conflicts might be supported in the future, but for now are kept out of scope. Any places where we used to call `flushall()` should be replaced with some kind of exception. At this point, IMM M1 is no longer supported. Differential Revision: https://phab.mercurial-scm.org/D1212
Fri, 01 Dec 2017 00:07:23 -0800 context: switch ctx() use to changectx()
Phil Cohen <phillco@fb.com> [Fri, 01 Dec 2017 00:07:23 -0800] rev 35281
context: switch ctx() use to changectx() I added `ctx()` to `overlayworkingfilectx`, (and before that, `absentfilectx`), because `absentfilectx` had reference to this function in its `cmp()` function. But the standard is actually `changectx()`, and no other class implements `ctx()`. So let's use the standard name. (As a result, I'm not sure that part of the `absentfilectx` comparator ever worked! It was written before I added either function.) This will be necessary in the next patch. Differential Revision: https://phab.mercurial-scm.org/D1211
Wed, 06 Dec 2017 22:56:15 -0500 lfs: introduce a user level cache for lfs files
Matt Harbison <matt_harbison@yahoo.com> [Wed, 06 Dec 2017 22:56:15 -0500] rev 35280
lfs: introduce a user level cache for lfs files This is the same mechanism in place for largefiles, and solves several problems working with multiple local repositories. The existing largefiles method is reused in place, because I suspect that there are other functions that can be shared. If we wait a bit to identify more before `hg cp lfutil.py ...`, the history will be easier to trace. The push between repo14 and repo15 in test-lfs.t arguably shouldn't be uploading any files with a local push. Maybe we can revisit that when `hg push` without 'lfs.url' can upload files to the push destination. Then it would be consistent for blobs in a local push to be linked to the local destination's cache. The cache property is added to run-tests.py, the same as the largefiles property, so that test generated files don't pollute the real location. Having files available locally broke a couple existing lfs-test-server tests, so the cache is cleared in a few places to force file download.
Tue, 05 Dec 2017 23:08:59 -0500 largefiles: refactor _usercachedir() to allow reuse with lfs
Matt Harbison <matt_harbison@yahoo.com> [Tue, 05 Dec 2017 23:08:59 -0500] rev 35279
largefiles: refactor _usercachedir() to allow reuse with lfs Largefiles puts everything into a flat directory, while lfs divides files up by creating subdirectories consisting of the first two characters of the hash. Therefore, pointing at the largefiles cache won't work.
Thu, 16 Nov 2017 21:05:15 -0500 lfs-test: note a problem with unpushed lfs files and cloning/sharing
Matt Harbison <matt_harbison@yahoo.com> [Thu, 16 Nov 2017 21:05:15 -0500] rev 35278
lfs-test: note a problem with unpushed lfs files and cloning/sharing AFAIK, this isn't an issue with largefiles because it knows how to look in the system-wide cache.
Thu, 26 Oct 2017 00:13:38 +0900 patch: add within-line color diff capacity
Matthieu Laneuville <matthieu.laneuville@octobus.net> [Thu, 26 Oct 2017 00:13:38 +0900] rev 35277
patch: add within-line color diff capacity The `diff' command usually writes deletion in red and insertions in green. This patch adds within-line colors, to highlight which part of the lines differ. Lines to compare are decided based on their similarity ratio, as computed by difflib SequenceMatcher, with an arbitrary threshold (0.7) to decide at which point two lines are considered entirely different (therefore no inline-diff required). The current implementation is kept behind an experimental flag in order to test the effect on performance. In order to activate it, set inline-color-diff to true in [experimental].
Thu, 22 Sep 2016 18:23:58 +0900 dagop: extend filectxancestors() to walk multiple files
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 18:23:58 +0900] rev 35276
dagop: extend filectxancestors() to walk multiple files
Thu, 22 Sep 2016 18:18:56 +0900 dagop: put start fctx into visit dict of filectxancestors()
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 18:18:56 +0900] rev 35275
dagop: put start fctx into visit dict of filectxancestors() Prepares for multiple start revisions/files.
Thu, 22 Sep 2016 18:11:37 +0900 dagop: change visit dict of filectxancestors() indexed solely by rev
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 18:11:37 +0900] rev 35274
dagop: change visit dict of filectxancestors() indexed solely by rev In future patches, a max heap will be used to compute the next revision to visit.
Thu, 22 Sep 2016 18:01:55 +0900 dagop: use fctx.rev() consistently in filectxancestors()
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 18:01:55 +0900] rev 35273
dagop: use fctx.rev() consistently in filectxancestors() We can't use fctx.linkrev() to sort fctxs coming from multiple files. This was changed at 24b57c3899f8 due to performance issue, but we know we evaluate parent.rev() in revset anyway.
Thu, 22 Sep 2016 17:48:46 +0900 dagop: yield intro filectx by filectxancestors()
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 17:48:46 +0900] rev 35272
dagop: yield intro filectx by filectxancestors() This is the convention of dagop.*ancestors() functions.
Sun, 22 Oct 2017 17:23:34 +0900 filectx: extract helper method to obtain filectx pointing to its introrev
Yuya Nishihara <yuya@tcha.org> [Sun, 22 Oct 2017 17:23:34 +0900] rev 35271
filectx: extract helper method to obtain filectx pointing to its introrev
Thu, 22 Sep 2016 17:16:53 +0900 dagop: copy basefilectx.ancestors() to free function
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 17:16:53 +0900] rev 35270
dagop: copy basefilectx.ancestors() to free function The primary goal of this series is to make follow() support multiple start revisions. dagop.filectxancestors() will be extended to take multiple filectxs. basefilectx.ancestors() is not forwarded to this function because doing that would resurrect the performance issue fixed by 24b57c3899f8.
Thu, 22 Sep 2016 15:52:09 +0900 test-log: test that fctx.ancestors() can't index parents only by linkrev
Yuya Nishihara <yuya@tcha.org> [Thu, 22 Sep 2016 15:52:09 +0900] rev 35269
test-log: test that fctx.ancestors() can't index parents only by linkrev This covers a possible bug that could be caused by the following change: --- a/mercurial/context.py +++ b/mercurial/context.py @@ -1047,7 +1047,7 @@ class basefilectx(object): while True: for parent in c.parents()[:cut]: - visit[(parent.linkrev(), parent.filenode())] = parent + visit[parent.linkrev()] = parent if not visit: break c = visit.pop(max(visit))
Tue, 17 Oct 2017 15:27:22 +0200 pull: retrieve bookmarks through the binary part when possible
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 15:27:22 +0200] rev 35268
pull: retrieve bookmarks through the binary part when possible This makes pull consistent with the part used by push and provide us with a more compact representation of bookmarks. In addition, this opens the way for smarter bookmark exchanges (e.g. filtering by names or only sending the bookmark relevant to the pulled set, etc).
Tue, 17 Oct 2017 15:27:17 +0200 getbundle: add support for 'bookmarks' boolean argument
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 15:27:17 +0200] rev 35267
getbundle: add support for 'bookmarks' boolean argument This new argument requests a 'bookmarks' part from the server. It is meant to be used instead of the "listkeys" request.
Tue, 17 Oct 2017 15:26:16 +0200 bundle2: support a 'records' mode for the 'bookmarks' part
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 15:26:16 +0200] rev 35266
bundle2: support a 'records' mode for the 'bookmarks' part In this mode, the bookmarks changes are record in the 'bundleoperation' records instead of inflicted to the repository. This is necessary to use the part when pulling.
Tue, 17 Oct 2017 15:39:34 +0200 bundle2: add a 'modes' dictionary to the bundle operation
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 15:39:34 +0200] rev 35265
bundle2: add a 'modes' dictionary to the bundle operation This new attribute allows the codes requesting an unbundling to pass important information to individual part handlers. The current target use case is to allow for receiving 'bookmarks' part without directly updating local repository, but just recording the received data instead. This is necessary for pull where the remote bookmarks are processed locally. I expect the concept to be beneficial to other parts in the future. To clarify the bookmark behavior on pull, the remote bookmark value are not just taken -as-is- into the local repository. There is an extra step to detect bookmark divergence. The remote bookmarks data are stored until this processing happens.
Tue, 17 Oct 2017 12:38:13 +0200 bookmark: use the 'bookmarks' bundle2 part to push bookmark update (issue5165)
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 12:38:13 +0200] rev 35264
bookmark: use the 'bookmarks' bundle2 part to push bookmark update (issue5165) We use the new binary parts we introduced earlier to exchange bookmark. The payload is a bit more compact since we use binary and the length of bookmarks is no longer constrained to 255. .. fix:: Issue 5165 Bookmark, whose name is longer than 255, can again be exchanged again between 4.4+ client and servers.
Tue, 17 Oct 2017 12:37:39 +0200 bookmark: introduce in advance a variant of the exchange test
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 12:37:39 +0200] rev 35263
bookmark: introduce in advance a variant of the exchange test We are about to introduce a new way to push bookmark to server. We introduce the test variant before actually updating the exchange to help the output changes to stand out when it happens.
Sun, 15 Oct 2017 19:22:56 +0200 push: move bundle2-pushkey based bookmarks exchange in its own function
Boris Feld <boris.feld@octobus.net> [Sun, 15 Oct 2017 19:22:56 +0200] rev 35262
push: move bundle2-pushkey based bookmarks exchange in its own function We are about to introduce an alternative way to push bookmark over bundle2.
Tue, 17 Oct 2017 12:07:24 +0200 bookmark: add pushkey hook compatiblity to the bundle2 part
Boris Feld <boris.feld@octobus.net> [Tue, 17 Oct 2017 12:07:24 +0200] rev 35261
bookmark: add pushkey hook compatiblity to the bundle2 part Currently, pushing a bookmark update triggers a pushkey hooks. It is likely that users in the wild use such hooks to control bookmark movement. Using a non push-key mechanism to exchange bookmark means these hooks are no longer called, possibly breaking existing users setup. So we add explicit call to the pushkey hooks in the handling of the bundle2 part. This behavior can be disabled with a new config knob: 'server.bookmarks-pushkey-compat'.
Sun, 15 Oct 2017 18:02:11 +0200 bookmark: introduce a 'bookmarks' part
Boris Feld <boris.feld@octobus.net> [Sun, 15 Oct 2017 18:02:11 +0200] rev 35260
bookmark: introduce a 'bookmarks' part This part can carry and apply bookmarks information. We start with adding the core behavior of the part. In its current form, the part is only suitable for push since it plain update the bookmark without consideration for the local state. Support of the behavior needed for pulling will be added in later changesets.
Mon, 13 Nov 2017 04:22:45 +0100 push: include a 'check:bookmarks' part when possible
Boris Feld <boris.feld@octobus.net> [Mon, 13 Nov 2017 04:22:45 +0100] rev 35259
push: include a 'check:bookmarks' part when possible Before updating the actual bookmark update, we can start with updating the way we check for push race. Checking bookmarks state earlier is useful even if we still use pushkey. Aborting before the changegroup is added can save a lot of time.
Sun, 15 Oct 2017 15:01:03 +0200 bookmark: add a 'check:bookmarks' bundle2 part
Boris Feld <boris.feld@octobus.net> [Sun, 15 Oct 2017 15:01:03 +0200] rev 35258
bookmark: add a 'check:bookmarks' bundle2 part This part checks that bookmarks are still at the node they are expected to be. This allows a pushing client to detect push race where the repository was updated between the time it discovered the server state and the time it managed to finish its push. Such checking already exists when pushing bookmark through pushkey. This new part can be inserted at the beginning of the bundle, triggering abort earlier. In addition, we would like to move away from pushey to push bookmark. A step useful to solve issue5165.
Sun, 15 Oct 2017 14:59:55 +0200 bookmark: add methods to binary encode and decode bookmark values
Boris Feld <boris.feld@octobus.net> [Sun, 15 Oct 2017 14:59:55 +0200] rev 35257
bookmark: add methods to binary encode and decode bookmark values Coming new bundle2 parts related to bookmark will use a binary encoding. It encodes a series of '(bookmark, node)' pairs. Bookmark name has a high enough size limit to not be affected by issue5165. (64K length, we are well covered)
Wed, 06 Dec 2017 09:25:43 -0500 tests: remove {a..h} bashism from remotenames
Augie Fackler <augie@google.com> [Wed, 06 Dec 2017 09:25:43 -0500] rev 35256
tests: remove {a..h} bashism from remotenames I'm not bothering with a check-code test because this is a weird construct that I didn't even know existed before it was breaking the BSD build, and it also appears to fail if /bin/sh is dash like it is on our Linux builder. Differential Revision: https://phab.mercurial-scm.org/D1605
Wed, 06 Dec 2017 12:10:16 +0800 hgweb: move common vertex code to Graph.prototype
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Dec 2017 12:10:16 +0800] rev 35255
hgweb: move common vertex code to Graph.prototype Just to give some context to the return values: vertex() needs to return two HTML elements as strings, <li> to be used as a background and a <li> to be shown in foreground. The latter was made obsolete recently when changesets started to be rendered server-side, but background elements are still useful for now.
Wed, 06 Dec 2017 12:01:07 +0800 hgweb: create Graph methods using a prototype
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Dec 2017 12:01:07 +0800] rev 35254
hgweb: create Graph methods using a prototype This way it's possible to call the original methods even if they were overridden.
Wed, 06 Dec 2017 11:59:19 +0800 hgweb: remove unused Graph.cur property
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Dec 2017 11:59:19 +0800] rev 35253
hgweb: remove unused Graph.cur property It was introduced in 0dba955c2636, but was already unused. I missed it in e46f0b653002.
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 +3000 +10000 tip