# # # patch "query.ml" # from [19cf4a72f1736058a51cf9d7f520b4d2785b5b95] # to [27574cb606cf32cf2dfd613a730a32297a4e79a0] # # patch "revision_lexer.mll" # from [7ecc9cd062137b3e4b4455f85c75f10cc2c0c65a] # to [9688998fb4ede7df29f54d191e2e1f437792436e] # # patch "revision_parser.mly" # from [47c1e0409bb988b2888a88f8f02b7e2f6b783a90] # to [31670b2a1426bf9be842bfc63df1213b506ac045] # # patch "revision_types.mli" # from [5b16430bd4ee10e6e2fbeacc6e7e9cef2258775f] # to [33b372c77872d3cb9a0643a1769e47faa6373bcf] # # patch "view.ml" # from [3cdc7395bbd0ad5c5df16a1a0fd3fb01ed68e7ea] # to [aef3e25bf8bb163d45dbd5bd8ddeef96950664ed] # ============================================================ --- query.ml 19cf4a72f1736058a51cf9d7f520b4d2785b5b95 +++ query.ml 27574cb606cf32cf2dfd613a730a32297a4e79a0 @@ -51,8 +51,11 @@ (function | Revision_types.PATCH (f, _, _) | Revision_types.ADD_FILE (f, _) + | Revision_types.ADD_DIR f | Revision_types.DELETE_FILE f - | Revision_types.DELETE_DIR f -> + | Revision_types.DELETE_DIR f + | Revision_types.ATTR_CLEAR (_, f) + | Revision_types.ATTR_SET (_, f, _) -> Gpattern.match_string pat f | Revision_types.RENAME_FILE (f1, f2) | Revision_types.RENAME_DIR (f1, f2) -> ============================================================ --- revision_lexer.mll 7ecc9cd062137b3e4b4455f85c75f10cc2c0c65a +++ revision_lexer.mll 9688998fb4ede7df29f54d191e2e1f437792436e @@ -15,12 +15,18 @@ "from", FROM; "to", TO; "add_file", ADD_FILE; + "add_dir", ADD_DIR; "delete", DELETE_FILE; "delete_file", DELETE_FILE; "delete_dir", DELETE_DIR; "rename", RENAME_FILE; "rename_file", RENAME_FILE; - "rename_dir", RENAME_DIR; ] + "rename_dir", RENAME_DIR; + "clear", CLEAR; + "set", SET; + "attr", ATTR; + "value", VALUE; + ] } let id = ['a'-'z' '0'-'9']* ============================================================ --- revision_parser.mly 47c1e0409bb988b2888a88f8f02b7e2f6b783a90 +++ revision_parser.mly 31670b2a1426bf9be842bfc63df1213b506ac045 @@ -1,10 +1,11 @@ %token FORMAT_VERSION %token NEW_MANIFEST OLD_REVISION OLD_MANIFEST %token PATCH %token CONTENT FROM TO -%token ADD_FILE +%token ADD_FILE ADD_DIR %token DELETE DELETE_FILE DELETE_DIR %token RENAME RENAME_FILE RENAME_DIR +%token CLEAR SET ATTR VALUE %token EOF %token ID STRING @@ -43,12 +44,15 @@ | PATCH STRING FROM ID TO ID { Revision_types.PATCH ($2, $4, $6) } | ADD_FILE STRING { Revision_types.ADD_FILE ($2, "") } | ADD_FILE STRING CONTENT ID { Revision_types.ADD_FILE ($2, $4) } + | ADD_DIR STRING { Revision_types.ADD_DIR $2 } | DELETE STRING { Revision_types.DELETE_FILE $2 } | DELETE_FILE STRING { Revision_types.DELETE_FILE $2 } | DELETE_DIR STRING { Revision_types.DELETE_DIR $2 } | RENAME STRING TO STRING { Revision_types.RENAME_FILE ($2, $4) } | RENAME_FILE STRING TO STRING { Revision_types.RENAME_FILE ($2, $4) } | RENAME_DIR STRING TO STRING { Revision_types.RENAME_DIR ($2, $4) } + | CLEAR STRING ATTR STRING { Revision_types.ATTR_CLEAR ($4, $2) } + | SET STRING ATTR STRING VALUE STRING { Revision_types.ATTR_SET ($4, $2, $6) } ; ============================================================ --- revision_types.mli 5b16430bd4ee10e6e2fbeacc6e7e9cef2258775f +++ revision_types.mli 33b372c77872d3cb9a0643a1769e47faa6373bcf @@ -1,11 +1,14 @@ 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 ; ============================================================ --- view.ml 3cdc7395bbd0ad5c5df16a1a0fd3fb01ed68e7ea +++ view.ml aef3e25bf8bb163d45dbd5bd8ddeef96950664ed @@ -189,11 +189,14 @@ let stock_of_delta_type = function | PATCH _ -> None - | ADD_FILE _ -> Some `ADD + | ADD_FILE _ + | ADD_DIR _ -> Some `ADD | DELETE_FILE _ | DELETE_DIR _ -> Some `REMOVE | RENAME_FILE _ | RENAME_DIR _ -> Some `CONVERT + | ATTR_SET _ -> Some `PROPERTIES + | ATTR_CLEAR _ -> Some `CLEAR let text_of_delta_type = function | PATCH (f, "", _) @@ -201,9 +204,12 @@ | PATCH (f, _, _) | ADD_FILE (f, _) | DELETE_FILE f -> f + | ADD_DIR f | DELETE_DIR f -> f ^ "/" | RENAME_FILE (o, n) -> Printf.sprintf "%s -> %s" o n | RENAME_DIR (o, n) -> Printf.sprintf "%s/ -> %s/" o n + | ATTR_CLEAR (attr, f) + | ATTR_SET (attr, f, _) -> Printf.sprintf "%s on %s" attr f let display_info i data = (* Set the revision id and manifest id labels *)