Git doesn't always write conflict markers of seven characters: the conflict-marker-size gitattribute overrides that per file, and it is set for good reasons — for file types whose regular content tends to contain marker-looking lines, such as documentation about merging, or test scripts. We hard-code seven characters everywhere we look for markers, so none of that works. Prepare for honoring the attribute by threading the marker size through everything that recognizes a marker, carried on the file model. Nothing fills it in yet, so we still use git's default size of seven everywhere, and matching is unchanged: a marker consists of exactly that many marker characters, and all but the "=======" one are followed by a space and a label.
FileTree Package
This package handles the representation of file trees. There are two ways to render files: one is to render them flat, so something like this:
dir1/file1
dir1/file2
file3
And the other is to render them as a tree
dir1/
file1
file2
file3
Internally we represent each of the above as a tree, but with the flat approach there's just a single root node and every path is a direct child of that root. Viewing in 'tree' mode (as opposed to 'flat' mode) allows for collapsing and expanding directories, and lets you perform actions on directories e.g. staging a whole directory. But it takes up more vertical space and sometimes you just want to have a flat view where you can go flick through your files one by one to see the diff.
This package is not concerned about rendering the tree: only representing its internal state.