Skip to content
Snippets Groups Projects
  1. Oct 26, 2017
  2. Nov 14, 2017
    • Denis Laxalde's avatar
      rebase: exclude descendants of obsoletes w/o a successor in dest (issue5300) · a68c3420be41
      Denis Laxalde authored
      .. feature::
      
         Let 'hg rebase' avoid content-divergence by skipping obsolete
         changesets (and their descendants) when they are present in the rebase
         set along with one of their successors but none of their successors is
         in destination.
      
      In the following example, when trying to rebase 3:: onto 2, the rebase
      will abort with "this rebase will cause divergence from: 4":
      
          o  7 f
          |
          | o  6 e
          | |
          | o  5 d'
          | |
          x |  4 d (rewritten as 5)
          |/
          o  3 c
          |
          | o  2 x
          | |
          o |  1 b
          |/
          o  0 a
      
      By excluding obsolete changesets without a successor in destination (4
      in the example above) and their descendants, we make rebase work in this
      case, thus giving:
      
          o  11 e
          |
          o  10 d'
          |
          o  9 c
          |
          o  8 b
          |
          | o  7 f
          | |
          | | x  6 e (rewritten using rebase as 11)
          | | |
          | | x  5 d' (rewritten using rebase as 10)
          | | |
          | x |  4 d
          | |/
          | x  3 c (rewritten using rebase as 9)
          | |
          o |  2 x
          | |
          | x  1 b (rewritten using rebase as 8)
          |/
          o  0 a
      
      where branch 4:: is left behind while branch 5:: is rebased as expected.
      
      The rationale is that users may not be interested in rebasing orphan
      changesets when specifying a rebase set that include them but would
      still want "stable" ones to be rebased. Currently, the user is suggested
      to allow divergence (but probably does not want it) or they must specify
      a rebase set excluding problematic changesets (which might be a bit
      cumbersome). The approach proposed here corresponds to "Option 2" in
      https://www.mercurial-scm.org/wiki/CEDRebase.
      
      
      We extend _computeobsoletenotrebased() so that it also return a set of
      obsolete changesets in rebase set without a successor in destination but
      with at least one successor in rebase set. This
      'obsoletewithoutsuccessorindestination' is then stored as an attribute
      of rebaseruntime and used in _performrebasesubset() to:
      
      * filter out descendants of these changesets from the revisions to
        rebase;
      * issue a message about these revisions being skipped.
      
      This only occurs if 'evolution.allowdivergence' option is off and
      'rebaseskipobsolete' is on.
      a68c3420be41
  3. Nov 11, 2017
  4. Nov 06, 2017
  5. Nov 11, 2017
  6. Nov 12, 2017
  7. Oct 31, 2017
  8. Oct 06, 2017
  9. Nov 11, 2017
    • Anton Shestakov's avatar
      5d4369079c86
    • Anton Shestakov's avatar
      hgweb: fix jshint issues in mercurial.js · 5f82e26cbed1
      Anton Shestakov authored
      Everything is pretty self-explanatory except the last hunk, where jshint
      complains: "Misleading line break before '||'; readers may interpret this as an
      expression boundary."
      
      There is a tweakable called "laxbreak" that allows line breaks before
      operators, but I think it's fine to simply join this one line and avoid extra
      config for now (we can cook up and add a sensible .jshintrc later).
      5f82e26cbed1
  10. Oct 17, 2017
  11. Oct 15, 2017
  12. Oct 17, 2017
    • Boris Feld's avatar
      pull: store binary node in pullop.remotebookmarks · d7a4384d2d87
      Boris Feld authored
      The internal representation of bookmark value is binary. The fact we stored
      'hex' was an implementation detail from using pushkey.
      
      We move the values in 'pullop.remotebookmarks' to binary before adding a way to
      exchange bookmarks not based on pushkey.
      d7a4384d2d87
  13. Oct 19, 2017
  14. Nov 10, 2017
  15. Nov 08, 2017
  16. Nov 10, 2017
  17. Nov 09, 2017
    • Kyle Lippincott's avatar
      changegroup: use any node, not min(), in treemanifest's generatemanifests · d80380ba8e7d
      Kyle Lippincott authored
      This is fixing quadratic behavior, which is probably not noticeable in the
      common case, but if a very large directory gets added here, it can get pretty
      bad. This was noticed because we had some pushes that spent >25s in changegroup
      generation calling min() here, according to profiling.
      
      The original reasoning for min() being used in 829d369fc5a8 was that, at that
      point in the series, we were adding almost everything to tmfnodes during the
      first iteration through the loop , so we needed to avoid sending child
      directories before parents. Later changes made it so that the child directories
      were added only when we visited the parent directory (not all of them on the
      first iteration), so this is no longer necessary - there won't be any child
      directories in tmfnodes before the parents have been sent.
      
      This does mean that the manifests are now exchanged unordered, whereas
      previously we would essentially do [a, b, b/c, b/c/d, e], we now can send a, b,
      and e in any order; b/c must still follow b, and b/c/d must still follow b/c.
      
      Differential Revision: https://phab.mercurial-scm.org/D1351
      d80380ba8e7d
  18. Nov 07, 2017
    • Durham Goode's avatar
      bundle: allow bundlerepo to support alternative manifest implementations · a2dfc723b6b5
      Durham Goode authored
      With our treemanifest logic, the manifests are no longer transported as part of
      the changegroup and are no longer stored in a revlog. This means the
      self.manifestlog line in bundlerepo.filestart no longer calls
      _constructmanifest, and therefore does not consume the manifest portion of the
      changegroup, which means filestart is not populated and we result in an infinite
      loop.
      
      The fix is to make filestart aware that self.manifestlog might not consume the
      changegroup part, and consume it manually if necessary.
      
      There's currently no way to test this in core, but our treemanifest extension
      has tests to cover this.
      
      Differential Revision: https://phab.mercurial-scm.org/D1329
      a2dfc723b6b5
  19. Oct 19, 2017
    • Boris Feld's avatar
      obsfate: makes successorsetverb takes the markers as argument · b81ad5b78a81
      Boris Feld authored
      Right now, successorsetverb only needs successors to compute the verb. But we
      will want use additional information (effect-flags and operation) in the near
      future to compute a better verb.
      
      Add the markers parameter now so extensions (like Evolve) could wrap the
      function and start experimenting around better obsfate verbs.
      
      As successorsetverb now takes both successorset and markers parameters, rename
      it to obsfateverb, successorsetandmarkersverb was too long.
      
      Differential Revision: https://phab.mercurial-scm.org/D1191
      b81ad5b78a81
  20. Nov 03, 2017
  21. Nov 07, 2017
  22. Oct 22, 2017
Loading