This class represents inline comments in NoteDb. This means it determines the JSON format for
inline comments in the revision notes that NoteDb uses to persist inline comments.
Changing fields in this class changes the storage format of inline comments in NoteDb and may
require a corresponding data migration (adding new optional fields is generally okay).
PatchLineComment
also represents inline comments, but in ReviewDb. There are a few
notable differences:
- PatchLineComment knows the comment status (published or draft). For comments in NoteDb the
status is determined by the branch in which they are stored (published comments are stored
in the change meta ref; draft comments are store in refs/draft-comments branches in
All-Users). Hence Comment doesn't need to contain the status, but the status is implicitly
known by where the comments are read from.
- PatchLineComment knows the change ID. For comments in NoteDb, the change ID is determined
by the branch in which they are stored (the ref name contains the change ID). Hence Comment
doesn't need to contain the change ID, but the change ID is implicitly known by where the
comments are read from.
For all utility classes and middle layer functionality using Comment over PatchLineComment is
preferred, as PatchLineComment will go away together with ReviewDb. This means Comment should be
used everywhere and only for storing inline comment in ReviewDb a conversion to PatchLineComment
is done. Converting Comments to PatchLineComments and vice verse is done by
CommentsUtil#toPatchLineComments(Change.Id, PatchLineComment.Status, Iterable) and
CommentsUtil#toComments(String, Iterable).