Fixed terminology: s/msg/commit/g
Stay a bit truer to semantics of the names.
Factorize time components in the time parsing function.

Again, true to the sematics of the function names.
Names are not categorical data.

Another semantic cleanup.
Field alignments.
More explicit names.
Removed extra space.
Clearer, more explicit transformation.
Even better naming of transformation stages.
Split commit heads separately.

Instead of flattening and re-splitting them all together. Keeps the semantics
clean in preparation for parsing edits rather than just commits.
Removed artifact.
Fixed incorrect number of edits in example data.