hgext/git/TODO.md
changeset 44477 ad718271a9eb
child 44621 c5653cf2811d
equal deleted inserted replaced
44470:a08bbdf839ae 44477:ad718271a9eb
       
     1 Octopus Merge Support
       
     2 =====================
       
     3 
       
     4 This will be moderately complicated, as we'll need to synthesize phony
       
     5 changeset entries to explode the octopus into "revisions" that only
       
     6 have two parents each. For today, we can probably just do something like
       
     7 
       
     8     aaaaaaaaaaaaaaaaaaXX{20 bytes of exploded node's hex sha}
       
     9 
       
    10 where XX is a counter (so we could have as many as 255 parents in a
       
    11 git commit - more than I think we'd ever see.) That means that we can
       
    12 install some check in this extension to disallow checking out or
       
    13 otherwise interacting with the `aaaaaaaaaaaaaaaaaa` revisions.
       
    14 
       
    15 
       
    16 Interface Creation
       
    17 ====================
       
    18 
       
    19 We at least need an interface definition for `changelog` in core that
       
    20 this extension can satisfy, and again for `basicstore`.
       
    21 
       
    22 
       
    23 Reason About Locking
       
    24 ====================
       
    25 
       
    26 We should spend some time thinking hard about locking, especially on
       
    27 .git/index etc. We're probably adequately locking the _git_
       
    28 repository, but may not have enough locking correctness in places
       
    29 where hg does locking that git isn't aware of (notably the working
       
    30 copy, which I believe Git does not lock.)
       
    31 
       
    32 Clean up requirements
       
    33 =====================
       
    34 
       
    35 Right now (for historical reasons, mainly) hgext.git uses a
       
    36 .hg/this-is-git file to detect repositories that should be treated as
       
    37 git. We should look in the .hg/requires for the "git" requirement
       
    38 instead (we already set this requirement, so it's mostly keying off
       
    39 that instead of using an empty file.)