X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matitaB%2Fmatita%2FmatitaFilesystem.ml;h=13c40664b0499d65b71598cb74b90b6282f126dc;hb=9ebdeda9a6446cbae517b5c577fe15b53db262dc;hp=637a997dcd09612e4fa73f9ac638c08456ddcad1;hpb=2d0dbe55f4e7f670fcf9fdf888796c05e52d920f;p=helm.git diff --git a/matitaB/matita/matitaFilesystem.ml b/matitaB/matita/matitaFilesystem.ml index 637a997dc..13c40664b 100644 --- a/matitaB/matita/matitaFilesystem.ml +++ b/matitaB/matita/matitaFilesystem.ml @@ -103,6 +103,9 @@ let stat_classify line = | _ -> raise (SvnAnomaly line) in aux 0 [] +let count p l = + List.length (List.filter p l) + let stat_user user = let rt_dir = Helm_registry.get "matita.rt_base_dir" in let repo = Helm_registry.get "matita.weblib" in @@ -155,7 +158,7 @@ let checkout user = let repo = Helm_registry.get "matita.weblib" in let errno, outlines, errlines = exec_process - ("svn co " ^ repo ^ " " ^ rt_dir ^ "/users/" ^ user ^ "/") + ("svn co --non-interactive " ^ repo ^ " " ^ rt_dir ^ "/users/" ^ user ^ "/") in let files, anomalies = List.fold_left (fun (facc,eacc) line -> @@ -267,17 +270,27 @@ let update_user user = let repo = Helm_registry.get "matita.weblib" in let errno, outlines, errlines = exec_process - ("svn up " ^ rt_dir ^ "/users/" ^ user ^ "/ --non-interactive") + ("svn up --non-interactive " ^ rt_dir ^ "/users/" ^ user ^ "/") in let files, anomalies = List.fold_left (fun (facc,eacc) line -> try (let fname,flags = up_classify line user in - (fname,matita_flag_of_update flags)::facc), eacc + (fname, flags)::facc), eacc with | SvnAnomaly l -> facc, l::eacc) ([],[]) outlines in - if errno = 0 then files, anomalies + let added = count (fun (_,flags) -> List.mem Add flags) files in + let conflict = count (fun (_,flags) -> List.mem Conflict flags) files in + let del = count (fun (_,flags) -> List.mem Delete flags) files in + let upd = count (fun (_,flags) -> List.mem Update flags) files in + let merged = count (fun (_,flags) -> List.mem Merge flags) files in + + let files = + List.map (fun (fname,flags) -> fname,matita_flag_of_update flags) files + in + + if errno = 0 then files, anomalies, (added,conflict,del,upd,merged) else raise (SvnError (string_of_output outlines errlines)) ;; @@ -289,22 +302,23 @@ let commit user = let repo = Helm_registry.get "matita.weblib" in let errno, outlines, errlines = exec_process - ("svn ci --message \"commit by user " ^ user ^ "\" " ^ rt_dir ^ "/users/" ^ user ^ "/") + ("svn ci --non-interactive --message \"commit by user " ^ user ^ "\" " ^ rt_dir ^ "/users/" ^ user ^ "/") in - if errno = 0 then () + if errno = 0 then + "BEGIN COMMIT - " ^ user ^ ":\n" ^ (string_of_output outlines errlines) ^ "END COMMIT - " ^ user ^ "\n\n" else raise (SvnError (string_of_output outlines errlines)) ;; let do_global_commit () = prerr_endline ("to be committed: " ^ String.concat " " !to_be_committed); List.fold_left - (fun acc u -> + (fun (acc,out) u -> try - commit u; - acc + let newout = commit u in + acc, out ^ newout with | SvnError outstr -> - prerr_endline outstr; - u::acc) - [] (List.rev !to_be_committed) + prerr_endline ("COMMIT OF " ^ user ^ "FAILED:" ^ outstr); + u::acc,out) + ([],"") (List.rev !to_be_committed) ;;