Skip to content
Snippets Groups Projects
  1. Sep 30, 2020
  2. Sep 23, 2020
  3. Sep 28, 2020
  4. Sep 24, 2020
  5. Sep 28, 2020
  6. Aug 24, 2020
    • Pulkit Goyal's avatar
      merge: store cases when a file is absent post merge in commitinfo · 76841247
      Pulkit Goyal authored
      Some merges can result in file being absent form working directory. This can be
      one of file was kept deleted or file was removed by merge code.
      
      User might revert the file back before committing. In such cases we will like to
      have better handling and create new filenodes.
      
      We store this info in mergestate as commitinfo so that we can use it while
      committing to create new filenode if required.
      
      Differential Revision: https://phab.mercurial-scm.org/D9003
      76841247
  7. Sep 14, 2020
  8. Sep 03, 2020
    • Pulkit Goyal's avatar
      commit: force create a new filenode if it was set in mergestate by merge · 479cce8c
      Pulkit Goyal authored
      For reasons mentioned in previous commits, we will like to forcefully create a
      new filenode sometimes.
      
      Combination of this patch and previous one, we fixed a case in
      `test-merge-combination.t`.
      
      This does not yet results in conflict where it should, I need to investigate
      more about what's happening as it should be a change-delete conflict now.
      
      Differential Revision: https://phab.mercurial-scm.org/D8989
      479cce8c
    • Pulkit Goyal's avatar
      merge: store commitinfo if these is a dc or cd conflict · 4c8a93ec
      Pulkit Goyal authored
      delete-changed or changed-delete conflicts can either be resolved by mergetool,
      if some tool is passed and using or by user choose something on prompt or user
      doing some `hg revert` after choosing the file to remain conflicted.
      
      If the user decides to keep the changed side, on commit we just reuse the parent
      filenode. This is mostly fine unless we are in a distributed environment and
      people are doing criss-cross merges.
      
      Since, we don't have recursive merges or any other way of describing the end
      result of the merge was an explicit choice and it should be differentiated from
      it's ancestors, merge algo during criss-cross merges fails to take in account
      the explicit choice made by user and end up with a what-can-be-said-wrong-merge.
      
      The solution which we are trying to fix this is by creating a filenode on commit
      instead of reusing the parent filenode. This helps differentiate between
      pre-merged filenode and post-merge filenode and kind of tells about the choice
      user made.
      
      To implement creating new filenode functionality, we store info about these
      files in mergestate so that we can read them on commit and force create a new
      filenode.
      
      Differential Revision: https://phab.mercurial-scm.org/D8988
      4c8a93ec
  9. Sep 25, 2020
    • Pulkit Goyal's avatar
      mergestate: update _stateextras instead of reassinging · 9f14bb4d
      Pulkit Goyal authored
      `merge.applyupdates()` can store extras for a file and _stateextras may not be
      empty always. Hence reassigning loses the old values.
      
      We can directly update like this because we switched to using
      `collections.defaultdict` for `_stateextras` sometime ago.
      9f14bb4d
  10. Sep 14, 2020
  11. Sep 03, 2020
  12. Sep 14, 2020
    • Pulkit Goyal's avatar
      merge: disable `m2-vs-ma` optimization if new filenode config is true · 76d79b80
      Pulkit Goyal authored
      The `m2-vs-ma` optimization filters out the file which have not changed between
      second parent and the ancestor of the merge. This results in the m1-vs-m2 diff
      not processing those files. These files will be required when we are creating
      new filenode for salvaged cases as we need to track them to store in mergestate
      that file can be salvaged.
      
      Differential Revision: https://phab.mercurial-scm.org/D9027
      76d79b80
    • Pulkit Goyal's avatar
      configitems: add a new config option to control new filenode functionality · b9d6ab6c
      Pulkit Goyal authored
      This series is adding functionality where we can force create a new filenode for
      some files on a merge-commit. This is meant to represent an explicit choice made
      by user and hence distingusing the file in the merged commit with the file in
      parent by creating a new filenode instead of using the parent one.
      
      This introduces a experimental config option under which this functionality
      will be hidden.
      
      A new testcase is added in tests/test-merge-criss-cross.t to test the new
      functionality while making the option does not break other scenarios.
      
      Differential Revision: https://phab.mercurial-scm.org/D9026
      b9d6ab6c
  13. Sep 23, 2020
  14. Sep 21, 2020
  15. Sep 23, 2020
  16. Sep 15, 2020
    • Pierre-Yves David's avatar
      changelog: add a `changes` property on `changelogrevision` · 9a3563b4
      Pierre-Yves David authored
      For the sidedata storage we are moving toward "all in one" block containing the
      equivalent of a "ChangingFiles" instance. We do various refactoring beforehand
      to prepare the usage of theses new data in the code.
      
      Since the object use slots, the "property cache" tricks cannot be used, and we
      cache the value manually.
      9a3563b4
  17. Sep 22, 2020
Loading