sapling/eden/scm/edenscm
Andrey Chursin fcfe9a451e checkout: basic rebase model
Summary:
This diff contains proposal for basic rebase model for new checkout.

This diff introduces two types of file changes - basic no conflict Actions(that will replace CheckoutPlan actions) and ConflictAction for actions that contain conflicts

No conflict actions are produced when comparing two manifests
Conflict actions can be produced when rebasing manifests.

Eventually we will adjust checkout code to take either list of Actions or Conflict actions and perform corresponding operations on the file.

Rebase::rebase is used to generate list of conflict actions when rebasing.
Currently `Rebase::rebase` produces list of actions on top of 'base' commit.

Before doing actual checkout we will need to take into account what current commit is and adjust this list of actions accordingly (however, this adjustment will be trivial, it won't produce more conflicts)
After getting adjusted list of actions, checkout code can roll it out to fs and call merge drivers if needed.

In the future, if we will want to allow check in conflicts, we will need to adjust `Rebase::resolve_conflict` to take `ConflictAction` as input, instead of an Action.

Reviewed By: DurhamG

Differential Revision: D27028001

fbshipit-source-id: b02b7ad8030fcf146b53639d69e66fdc8f38a62d
2021-04-07 19:07:31 -07:00
..
hgdemandimport Back out "log: backout D24293498 about prefetching commit data" 2020-11-06 16:25:00 -08:00
hgext introduce a way of requesting unhydrated commits 2021-04-07 03:02:32 -07:00
mercurial checkout: basic rebase model 2021-04-07 19:07:31 -07:00
__init__.py apply pyfmt with usort to opted-in sources 2020-11-10 21:25:54 -08:00
__main__.py edenscm: add a main module 2020-01-30 18:09:14 -08:00
hooks.py py3: fix conflictinfo compatibility 2020-09-01 18:31:35 -07:00
traceimport.py debugshell: improve "%trace" UX 2020-09-01 13:49:13 -07:00
tracing.py tracing: add edenscm.tracing Python module mirroring Rust APIs 2021-01-28 13:17:59 -08:00