1. 14 Oct, 2020 1 commit
  2. 10 Oct, 2020 1 commit
  3. 22 Sep, 2020 3 commits
  4. 10 Oct, 2020 2 commits
  5. 09 Oct, 2020 1 commit
  6. 17 Sep, 2020 1 commit
  7. 21 Aug, 2020 3 commits
  8. 20 Aug, 2020 5 commits
  9. 20 Sep, 2020 1 commit
    • Sushil Khanchi's avatar
      evolve: remove swapping nodes logic while resolving divergence · d7d954b6d518
      Sushil Khanchi authored
      Before this patch, while solving content-divergence if one of the
      divergent cset need to relocate to resolution parent we used to set that
      cset to "other" side; so it was like we are always going to relocate "other"
      side which made us to swap the two if "divergent" cset need to relocate.
      Above mentioned solution for relocating cset was not good and led us to incorrect
      output in some cases.
      So this patch, simplify the logic and remove the swapping thing and clearly depend
      on resolution parent to check if any of the divergent cset needs to relocate.
      This also means that now in some cases if both the divergent csets needs
      to relocate, both will be relocated. Even before this patch, there are some cases
      where both the divergent csets relocated but not in every case where it should
      Coming to the changes in test files:
      1) changes in order of merging the two divergent csets is due to fact that
         now "divergent" and "other" are not swapped and hence "divergent" will be at
         local side and "other" will be at "other", which also results in change in
         the hash id for some cases.
      2) extra changesets: which is the result of the fact that now we don't miss
         any case where both the divergent csets should be based on resolution parent
         before performing the merge -> which caught some cases and performed relocation,
         hence extra changesets. Although you can find that there is no changes in file
         content because of these relocation, but I remember loosing some data because
         of not relocating the "divergent", so why leave any risk out there by not
         relocating "other" to the resolution parent.
  10. 25 Sep, 2020 1 commit
    • Martin von Zweigbergk's avatar
      evolve: don't set evolved node as dirstate p2 · b2de5825e5ca
      Martin von Zweigbergk authored
      Upstream rebase changed in 9c9cfecd4600 (rebase: don't use rebased
      node as dirstate p2 (BC), 2020-01-10) so the dirstate parents are
      always the commits that will be parents once the commit has been
      created. Let's follow their lead so the experience is consistent.
      The drawback is that users who use Evolve with older Mercurial
      versions will not see in `hg log -G` output which commit is being
  11. 17 Sep, 2020 1 commit
  12. 22 Sep, 2020 1 commit
  13. 02 Oct, 2020 2 commits
  14. 25 Sep, 2020 1 commit
  15. 19 Sep, 2020 1 commit
  16. 20 Aug, 2020 1 commit
    • Sushil Khanchi's avatar
      evolve: resolutionparent should be succs of otherp1 · 9034eef6e737
      Sushil Khanchi authored
      In current behavior when one of the divergent cset is ahead
      of other, we set successor of ahead one's parent as resolution
      This patch make sure that we follow the same logic for the case
      when "other" is ahead of "divergent".
  17. 13 Aug, 2020 2 commits
  18. 05 Aug, 2020 2 commits
    • Sushil Khanchi's avatar
      evolve: add some initial values in evolvestate · b31cd9ee890a
      Sushil Khanchi authored
      This patch adds two values in evolvestate:
      	evolvestate['relocate-div'] = False
      	evolvestate['relocate-other'] = False
      which will be used by resolution of content-divergence as a flag
      to know if we need to relocate the divergent changesets.
      In upcoming patches we will remove the logic of swapping
      divergent/other (we do this swapping when divergent need to relocate)
      as this doesn't seems something solid we can rely on.
    • Sushil Khanchi's avatar
      evolve: move initial evolvestate values to main function · eb09d05f69f3
      Sushil Khanchi authored
      This patch will help us simplify the refactoring in upcoming patches.
  19. 31 Aug, 2020 2 commits
  20. 13 Aug, 2020 2 commits
  21. 12 Aug, 2020 2 commits
  22. 06 Aug, 2020 2 commits
    • Sushil Khanchi's avatar
      evolve: add some assertions · 4c328eb7196e
      Sushil Khanchi authored
      While working and debugging on divergence resolution handling,
      recently it took to me a good amount of time to find out what was
      actually wrong with the results, where the real problem was that
      "divergent" and "other" had the same value.
    • Sushil Khanchi's avatar
      evolve: rename param `divergent` to `local` in a function · 22c82f714fe1
      Sushil Khanchi authored
      Since it is a utility function to merge two content divergent
      changesets, it makes more sense to name the two changesets as
      "local" and "other".
  23. 05 Aug, 2020 1 commit
    • Sushil Khanchi's avatar
      evolve: rely on resolutionparent when relocating divergent csets · 95d00d58885f
      Sushil Khanchi authored
      As discussed with Pierre-Yves the current behavior of resolving
      content-divergence when parent changes:
      1) First we decide the resolution parent (the parent where resolution
         cset will be based on)
      2) Relocate both the divergent csets to the resolution parent (if a
         cset is already on resolution parent, nothing to do for it)
      3) Perform 3-way merge to create the resolution cset of content-div
      This patch makes sure that we rely on that decided resolution parent,
      when relocating divergent csets to the parent where the resolution cset
      will be based on.
  24. 21 Jul, 2020 1 commit
    • Anton Shestakov's avatar
      rewind: always compute successorsmap · 56e5dc7d6319
      Anton Shestakov authored
      We have had access to rewind targets (predecessors) in this function before,
      but having access to current successors (in the form of successorsmap) is also
      useful and will be used in following patches.
      We're emptying successorsmap when --as-divergence is given to keep the current
      behavior. It's done before using it for --dry-run and actual work.