The File class (and related classes) should have a clearer class hierarchy.
*ArchivedFile doesn't extend anything
Besides all the duplicated code, this means that people who use "File" type hints, may be in for a nasty surprise
*ForeignDBFile is a subclass of LocalFile
This just doesn't really make sense logically. Even if code wise there isn't much difference, having a new class, say DBFile, that both LocalFile and ForeignDBFile extend, with perhaps minimal code in the new LocalFile class.
*Subclasses seem to be made on 2 dimensions - is the file current/old/deleted, and the repo type of the File. This should maybe be investigated if this is really a good way of splitting things up.
Version: unspecified
Severity: enhancement