1. 23 Oct, 2020 1 commit
  2. 14 Oct, 2018 1 commit
    • Pierre-Yves David's avatar
      debugobsolete: also issue the "new obsmarkers" messsage · 34a46d48d24e
      Pierre-Yves David authored
      We are going to improve the way this message is issued in the core codebase.
      This will make it appears for `hg debugobsolete` too. Since this seems like a
      good idea, we make the output change in a previous changesets to clarify the
      next changeset.
  3. 15 Jan, 2018 1 commit
    • Martin von Zweigbergk's avatar
      evolution: report new unstable changesets · 1a09dad8b85a
      Martin von Zweigbergk authored
      This adds a transaction summary callback that reports the number of
      new orphan, content-divergent and phase-divergent changesets.
      The code for reporting it is based on the code from the evolve
      extension, but simplified a bit. It simply counts the numbers for each
      kind of instability before and after the transaction. That's obviously
      not very efficient, but it's easy to reason about, so I'm doing this
      as a first step that can make us quite confident about the test case
      changes. We can optimize it later and make sure that the tests are not
      affected. The code has been used in the evolve extension for a long
      time and has apparently been sufficiently fast, so it doesn't seem
      like a pressing issue.
      Unlike the evolve extension's version of this report, this version
      applies to all commands (or all transactions run as part of any
      command, to be exact).
      Differential Revision: https://phab.mercurial-scm.org/D1867
  4. 17 Oct, 2017 2 commits
  5. 16 Jul, 2017 1 commit
  6. 11 Dec, 2017 1 commit
    • Matt Harbison's avatar
      tests: remove (glob) annotations that were only for '\' matches · 4441705b7111
      Matt Harbison authored
      # skip-blame because this was mechanically rewritten the following script.  I
      ran it on both *.t and *.py, but none of the *.py changes were proper.  All *.t
      ones appear to be, and they run without addition failures on both Windows and
        import argparse
        import os
        import re
        ap = argparse.ArgumentParser()
        ap.add_argument('path', nargs='+')
        opts = ap.parse_args()
        globre = re.compile(r'^(.*) \(glob\)(.*)$')
        for p in opts.path:
            tmp = p + '.tmp'
            with open(p, 'rb') as src, open(tmp, 'wb') as dst:
                for line in src:
                    m = globre.match(line)
                    if not m or '$LOCALIP' in line or '*' in line:
                    if '?' in line[:-3] or ('?' in line[:-3] and line[-3:] != '(?)'):
                    dst.write(m.group(1) + m.group(2) + '\n')
            os.rename(tmp, p)
  7. 27 Sep, 2018 1 commit
    • Boris Feld's avatar
      pullreport: issue a message about "extinct" pulled changesets · f9232b0310ef
      Boris Feld authored
      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
      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.
  8. 29 Aug, 2018 1 commit
    • Boris Feld's avatar
      phase: report number of non-public changeset alongside the new range · 89630d0b3e23
      Boris Feld authored
      When interacting with non-publishing repository or bundle, it is useful to
      have some information about the phase of the changeset we just pulled.
      This changeset updates the "new changesets MIN:MAX" output to also includes
      phases information for non-public changesets. Displaying extra data about
      non-public changesets means the output for exchange with publishing repository
      (the default) is unaffected.
  9. 28 Jun, 2017 1 commit
    • Pierre-Yves David's avatar
      obsolete: reports the number of local changeset obsoleted when unbundling · 53b3a1968aa6
      Pierre-Yves David authored
      This is a first basic visible usage of the changes tracking in the transaction.
      We adds a new function computing the pre-existing changesets obsoleted by a
      transaction and a transaction call back displaying this information.
      Example output:
        added 1 changesets with 1 changes to 1 files (+1 heads)
        3 new obsolescence markers
        obsoleted 1 changesets
      The goal is to evolve the transaction summary into something bigger, gathering
      existing output there and adding new useful one. This patch is a good first step
      on this road. The new output is basic but give a user to the content of
      tr.changes['obsmarkers'] and give an idea of the new options we haves. I expect
      to revisit the message soon.
      The caller recording the transaction summary should also be moved into a more
      generic location but further refactoring is needed before it can happen.
  10. 05 Jun, 2017 1 commit
  11. 06 Jun, 2017 1 commit
  12. 05 Jun, 2017 1 commit
  13. 03 Jun, 2017 2 commits
  14. 20 May, 2017 1 commit
    • Pierre-Yves David's avatar
      strip: strip obsmarkers exclusive to the stripped changeset · 71eb6a098315
      Pierre-Yves David authored
      This is it, `hg strip --rev X` will now also remove obsolescence markers
      exclusive to X. Since a previous changeset, the obsmarkers has been backed up
      in the strip backup bundle, so it is possible to restore them.
      Note: stripping obsmarkers means the precursors of the stripped changeset might no
      longer be obsolete after the strip.
      Stripping changeset without obsmarkers can be useful when building test case. So
      It is possible to disable the stripping of obsmarkers using the
      'devel.strip-obsmarkers' config option.
      Test change have been carefully validated.
  15. 01 Jun, 2017 2 commits
  16. 26 May, 2017 8 commits
  17. 12 Oct, 2017 1 commit
    • Denis Laxalde's avatar
      transaction-summary: show the range of new revisions upon pull/unbundle (BC) · eb586ed5d8ce
      Denis Laxalde authored
      Upon pull or unbundle, we display a message with the range of new revisions
      fetched. This revision range could readily be used after a pull to look out
      what's new with 'hg log'. The algorithm takes care of filtering "obsolete"
      revisions that might be present in transaction's "changes" but should not be
      displayed to the end user.
  18. 04 Aug, 2017 1 commit
  19. 25 May, 2017 5 commits
    • Pierre-Yves David's avatar
      test: add isolated prune case (to test-obsolete-bundle-strip.t) · f2116efd2c3a
      Pierre-Yves David authored
      This adds a test where the prune marker is not related to any other obsmarkers.
    • Pierre-Yves David's avatar
      test-obsolete-bundle-strip: add a complex split and fold case · b1dcb174f948
      Pierre-Yves David authored
      This is a more complex case that checks the logic used when split and fold gets
      into play.
    • Pierre-Yves David's avatar
      test-obsolete-bundle-strip: add cases with prune on missing revs · 248f68c482f2
      Pierre-Yves David authored
      Same as the previously added case, but the prune is no longer known locally.
      This will mostly matter for the strip testing. Introducing the test early will
      help clarify patches related to strip.
    • Pierre-Yves David's avatar
      obsolete: fix relevant-obsmarkers computation on pruned changeset · 176d1a0ce385
      Pierre-Yves David authored
      The markers pruning a node was not directly considered relevant for the pruned
      node, only to its parents.
      This went unnoticed during obsmarkers exchange because all
      ancestors of the pruned node would be included in the computation.
      This still affects obsmarkers exchange a bit since "inline" prune markers would
      be ignored (see second test case). This went unnoticed, because in such case,
      we always push another obsolescence markers for that node.
      We add explicit tests covering this case.
      (The set of relevant changeset is use in the obsmarkers discovery protocol used
      in the evolve experimental extension, the impact will be handled on the
      extension side).
    • Pierre-Yves David's avatar
      test: add a test file for relevant obsmarkers and its usage · f475446b4837
      Pierre-Yves David authored
      The logic around obsmarkers "relevant" to a set of revs have a couple of test
      around in other places but no systematic testing. In addition, all the current
      testing focus on the exchange case (we looks at relevant markers for
      For bundles, we'll need something a bit different. We'll no longer have set of
      revision going down to the repository roots. So we'll have to test these cases
      too. In addition, stripping obsmarkers will introduce new logic around
      obsmarkers that will need testing too. So a new test file make sense here.
      We start with a simple tests, more advanced cases are coming in the next
      changesets. The extra testing catch a minor bug (later in the series).