Wed, 26 Sep 2018 21:28:21 +0200 cleanupnodes: drop special casing around prune markers (API)
Boris Feld <boris.feld@octobus.net> [Wed, 26 Sep 2018 21:28:21 +0200] rev 39916
cleanupnodes: drop special casing around prune markers (API) The `cleanupnodes` has logic to skip the creation of "prune" markers if the changeset is already obsolete. This feels strange and gets in the way of code changes to tracks folds. Now that callers no longer request such prune, we can drop this logic. In many cases, pruning through cleanupnodes should be replaced by internal phase usage.
Wed, 26 Sep 2018 22:05:28 +0200 rebase: don't try to prune obsolete changeset already in the destination
Boris Feld <boris.feld@octobus.net> [Wed, 26 Sep 2018 22:05:28 +0200] rev 39915
rebase: don't try to prune obsolete changeset already in the destination With similar motivations to the previous changesets, we stop marking changeset from pruning when it is not the command intention. In this case, we still need to distinguish between the strip and the obsolete case.
Wed, 26 Sep 2018 21:51:29 +0200 histedit: don't cleanup nodes already disposed of
Boris Feld <boris.feld@octobus.net> [Wed, 26 Sep 2018 21:51:29 +0200] rev 39914
histedit: don't cleanup nodes already disposed of If something else took care of these temporary nodes, we don't need to do anything about it. This less liberal usage of pruning through cleanup nodes will help us further cleanup on the road to explicitly tracks folds.
Sun, 30 Sep 2018 01:15:46 -0400 py3: avoid b'' output in test-hgweb-non-interactive.t
Matt Harbison <matt_harbison@yahoo.com> [Sun, 30 Sep 2018 01:15:46 -0400] rev 39913
py3: avoid b'' output in test-hgweb-non-interactive.t I couldn't figure out how to get the list to print without b'' with pycompat.write(), without converted each element to str.
Sun, 30 Sep 2018 01:10:41 -0400 py3: convert print to a function call in a few tests
Matt Harbison <matt_harbison@yahoo.com> [Sun, 30 Sep 2018 01:10:41 -0400] rev 39912
py3: convert print to a function call in a few tests I *think* this is the last of them.
Sat, 29 Sep 2018 23:52:00 -0400 py3: use util.forcebytestr() to convert push lock error to bytes
Matt Harbison <matt_harbison@yahoo.com> [Sat, 29 Sep 2018 23:52:00 -0400] rev 39911
py3: use util.forcebytestr() to convert push lock error to bytes
Sat, 29 Sep 2018 20:57:49 -0400 py3: byteify windows.shelltocmdexe()
Matt Harbison <matt_harbison@yahoo.com> [Sat, 29 Sep 2018 20:57:49 -0400] rev 39910
py3: byteify windows.shelltocmdexe() This makes test-doctest.py happy on Windows.
Sat, 29 Sep 2018 20:33:52 -0400 run-tests: flush output stream before prompting to accept changes
Matt Harbison <matt_harbison@yahoo.com> [Sat, 29 Sep 2018 20:33:52 -0400] rev 39909
run-tests: flush output stream before prompting to accept changes With py3 on Windows, the prompt to accept changes in an --interactive run wasn't showing up until after the choice was read from stdin.
Sun, 30 Sep 2018 05:52:42 +0530 py3: use util.forcebytestr() to convert error messages to bytes
Pulkit Goyal <pulkit@yandex-team.ru> [Sun, 30 Sep 2018 05:52:42 +0530] rev 39908
py3: use util.forcebytestr() to convert error messages to bytes This makes the python 3 buildbot green again. Differential Revision: https://phab.mercurial-scm.org/D4811
Thu, 27 Sep 2018 14:26:02 -0700 context: stop catching TypeError when converting hex nodeid to binary
Martin von Zweigbergk <martinvonz@google.com> [Thu, 27 Sep 2018 14:26:02 -0700] rev 39907
context: stop catching TypeError when converting hex nodeid to binary It has been a programming error to pass a 40-character string that is not a hex nodeid since 8b86acc7aa64 (context: drop support for looking up context by ambiguous changeid (API), 2018-04-28), so we can just let it raise a TypeError. Differential Revision: https://phab.mercurial-scm.org/D4807
Thu, 27 Sep 2018 09:56:13 -0700 context: stop catching and re-raising FilteredRepoLookupError
Martin von Zweigbergk <martinvonz@google.com> [Thu, 27 Sep 2018 09:56:13 -0700] rev 39906
context: stop catching and re-raising FilteredRepoLookupError FilteredRepoLookupError is only raised by changectx's constructor and the higher-level scmutil.revsymbol(), so there's no need to catch it in changectx's constructor. Differential Revision: https://phab.mercurial-scm.org/D4806
Fri, 28 Sep 2018 22:18:45 -0400 util: use a context manager in readlock()
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Sep 2018 22:18:45 -0400] rev 39905
util: use a context manager in readlock()
Tue, 25 Sep 2018 21:16:12 -0400 py3: convert os.readlink() path to native strings on Windows
Matt Harbison <matt_harbison@yahoo.com> [Tue, 25 Sep 2018 21:16:12 -0400] rev 39904
py3: convert os.readlink() path to native strings on Windows Windows insisted that it needs to be str. I skipped the stuff in the posix module, and left `tests/f` and `run-tests.py` alone for now.
Sat, 29 Sep 2018 02:02:35 -0400 py3: suppress the output from .write() calls in the remaining tests
Matt Harbison <matt_harbison@yahoo.com> [Sat, 29 Sep 2018 02:02:35 -0400] rev 39903
py3: suppress the output from .write() calls in the remaining tests
Fri, 28 Sep 2018 23:17:06 -0400 py3: conditionalize json float precision difference in test-debugcommands.t
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Sep 2018 23:17:06 -0400] rev 39902
py3: conditionalize json float precision difference in test-debugcommands.t
Fri, 28 Sep 2018 22:39:18 -0400 py3: byteify extension in test-debugcommands.t
Matt Harbison <matt_harbison@yahoo.com> [Fri, 28 Sep 2018 22:39:18 -0400] rev 39901
py3: byteify extension in test-debugcommands.t
Thu, 27 Sep 2018 16:55:06 +0200 pullreport: rev duplicated and extinct into account
Boris Feld <boris.feld@octobus.net> [Thu, 27 Sep 2018 16:55:06 +0200] rev 39900
pullreport: rev duplicated and extinct into account If we already have some obsolete and hidden nodes locally and the server send them again to you, it seems useful to point it out instead of being silent about it.
Thu, 27 Sep 2018 16:52:25 +0200 pullreport: issue a message about "extinct" pulled changesets
Boris Feld <boris.feld@octobus.net> [Thu, 27 Sep 2018 16:52:25 +0200] rev 39899
pullreport: issue a message about "extinct" pulled changesets Changeset pulled from a remote repository while already obsolete locally can end up hidden after the pull. Hiding obsolete changesets is a good behavior but silently "skipping" some of the pulled content can get confusing. We now detect this situation and emit a message about it. The message is simple and the wording could be improved, however, we focus on the detection here. Evolution is still an experimental feature, so the output is open to changes. In particular, we could point out at the latest successors of the obsolete changesets, however, it can get tricky is there are many of them. So we delay these improvements to another adventure. Another easy improvement would be to merge this message with the previous line about the new nodes and their phases. This is a good example of cases where we can only transmit a limited amount of data to users by default. We need some sort of "transaction journal" we could point the user to.
Thu, 27 Sep 2018 17:00:00 +0200 pullreport: skip or rework some early return
Boris Feld <boris.feld@octobus.net> [Thu, 27 Sep 2018 17:00:00 +0200] rev 39898
pullreport: skip or rework some early return We are about to add more logic in this report. Before that, we need it to not quit so early.
Thu, 27 Sep 2018 16:35:10 +0200 pullreport: skip filtered revs instead of obsolete ones
Boris Feld <boris.feld@octobus.net> [Thu, 27 Sep 2018 16:35:10 +0200] rev 39897
pullreport: skip filtered revs instead of obsolete ones Obsolescence is closely related to visibility but still a distinct concept. We can receive changesets that are obsolete but visible (eg: when pulling orphans). Such changeset should be reported too. In addition, the filtering level can be anything, we should respect it.
Thu, 27 Sep 2018 18:06:13 +0200 pullreport: add a test to show misreporting of visible changeset
Boris Feld <boris.feld@octobus.net> [Thu, 27 Sep 2018 18:06:13 +0200] rev 39896
pullreport: add a test to show misreporting of visible changeset The current code ignores all obsolete changesets including the visible one. We add a test showing this behavior before fixing the behavior.
Wed, 26 Sep 2018 10:38:37 -0700 repo: don't look up context for tip node if it's not needed
Martin von Zweigbergk <martinvonz@google.com> [Wed, 26 Sep 2018 10:38:37 -0700] rev 39895
repo: don't look up context for tip node if it's not needed We were doing repo['tip'].node() or similar in a few places where repo.changelog.tip() would be enough. Differential Revision: https://phab.mercurial-scm.org/D4781
Wed, 26 Sep 2018 22:17:34 -0700 repo: look up nullrev context by revnum, not symbolic name
Martin von Zweigbergk <martinvonz@google.com> [Wed, 26 Sep 2018 22:17:34 -0700] rev 39894
repo: look up nullrev context by revnum, not symbolic name I think lookup of the 'null' symbol should be done via scmutil.revsymbol() and repo['null'] is only supported for historical reasons. However, repo[nullrev] is fine, so we can switch to that instead of switching to scmutil.revsymbol('null'). Differential Revision: https://phab.mercurial-scm.org/D4780
Wed, 26 Sep 2018 22:17:26 -0700 bundle: consistently put revnums in "base" collection
Martin von Zweigbergk <martinvonz@google.com> [Wed, 26 Sep 2018 22:17:26 -0700] rev 39893
bundle: consistently put revnums in "base" collection The "base" collection contains revnums, except that it can also contain the "null" symbol. That's a little weird. Let's be consistent. Differential Revision: https://phab.mercurial-scm.org/D4779
Thu, 27 Sep 2018 22:07:12 -0400 py3: ensure printing to stdout uses str in test-hgweb-no-request-uri.t
Matt Harbison <matt_harbison@yahoo.com> [Thu, 27 Sep 2018 22:07:12 -0400] rev 39892
py3: ensure printing to stdout uses str in test-hgweb-no-request-uri.t
Thu, 27 Sep 2018 13:57:50 -0700 scmutil: accept multiple predecessors in 'replacements' (API)
Boris Feld <boris.feld@octobus.net> [Thu, 27 Sep 2018 13:57:50 -0700] rev 39891
scmutil: accept multiple predecessors in 'replacements' (API) This changeset makes 'cleanupnodes' accepts multiple predecessors as `replacements` keys. The same as it accepts multiple successors as `replacements` values. To avoid breaking all callers, the old and new ways are currently valid at the same time. We'll deprecate and drop the old way later. This change is the first step toward a better tracking of "fold" event in the evolution history. While working on the "rewind" command (in the evolve extension), we realized that first class tracking of folds are necessary. We already have good tracking of splits. When walking the evolution history from predecessors to successors, that makes for a clear distinction between having multiple successors because of the actual splitting of a changeset or content-divergences. The "rewind" command allows restoring older evolution of a stack of changesets. One of its mode walks the evolution history to automatically find appropriate predecessors. This means walking from successors to predecessors. In this case, we need to be able to make the same distinction between an actual fold and other cases. So we will have to track folds explicitly. This changesets only focus on making it possible to express fold at the `cleanupnodes` API level. The actual tracking will be implemented later.
Thu, 27 Sep 2018 13:54:37 -0700 scmutil: expand long "one-liner"
Boris Feld <boris.feld@octobus.net> [Thu, 27 Sep 2018 13:54:37 -0700] rev 39890
scmutil: expand long "one-liner" When a one-liner gets 3 lines longs, it loses its expressivity benefits. We expand it into a simple for loop. This makes future changes of the code in that area clearer.
Thu, 20 Sep 2018 17:47:05 +0200 shelve: find shelvedctx from bundle even if they are already in the repo
Boris Feld <boris.feld@octobus.net> [Thu, 20 Sep 2018 17:47:05 +0200] rev 39889
shelve: find shelvedctx from bundle even if they are already in the repo We use the new "duplicates" node tracking to find the tip of the bundle even if it already exists in the repository. Such logic is not supposed to be needed in theory. If the shelve was made using internal-phase, we already know its node. Otherwise, the bundle content should have been stripped. However, handling it makes the shelve code more robust and provide a good example of "revduplicates" usage.
Wed, 19 Sep 2018 12:19:28 +0200 shelve: return the shelved node as part of bundle application
Boris Feld <boris.feld@octobus.net> [Wed, 19 Sep 2018 12:19:28 +0200] rev 39888
shelve: return the shelved node as part of bundle application It make sense to have the function in charge of unbundling the shelved revision also return the node of that revision (when the data is in the bundle). This will help us to handle unnatural state where the unshelved change already exists in the repository.
Thu, 20 Sep 2018 11:18:28 +0200 changelog: keep track of duplicated node in the transaction adding them
Boris Feld <boris.feld@octobus.net> [Thu, 20 Sep 2018 11:18:28 +0200] rev 39887
changelog: keep track of duplicated node in the transaction adding them The transaction is already tracking the new nodes. We now tracks the "duplicates" in the same location.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip