type change = | PATCH of string * string * string | ADD_FILE of string * string | ADD_DIR of string | DELETE_FILE of string | DELETE_DIR of string | RENAME_FILE of string * string | RENAME_DIR of string * string | ATTR_CLEAR of string * string | ATTR_SET of string * string * string type edge = { old_revision : string ; change_set : change list ; } type t = string * edge list