exception SvnAnomaly of string
-let stat_classify line =
+let stat_classify line uid =
+ let basedir = (Helm_registry.get "matita.rt_base_dir") ^ "/users/" ^ uid ^ "/" in
let rec aux n acc =
match (line.[n], n) with
- | _, n when n = 7 -> String.sub line 8 ((String.length line) - 8), acc
+ | _, n when n = 7 ->
+ let fn = String.sub line 8 ((String.length line) - 8) in
+ let prefix_len = String.length basedir in
+ let fn_len = String.length fn in
+ if String.sub fn 0 prefix_len = basedir
+ then String.sub fn prefix_len (fn_len - prefix_len), acc
+ else fn, acc
| ' ', _ -> aux (n+1) acc
| 'A',0 -> aux (n+1) (Add::acc)
| 'C',_ when n = 0 || n = 1 -> aux (n+1) (Conflict::acc)
let files, anomalies =
List.fold_left (fun (facc,eacc) line ->
try
- (stat_classify line::facc), eacc
+ (stat_classify line user::facc), eacc
with
| SvnAnomaly l -> facc, l::eacc) ([],[]) outlines
in