# # delete_file "NEWS" # # patch "INSTALL" # from [f4e6f306f6a19cf698f77b8ac43c8db16af19c4c] # to [d0ce0969db5a06e5dfee86d2447329bc2b91db2f] # # patch "git.ml" # from [c5709e028ce1670f8b42fab662bc3204f3d6590a] # to [7278a18d00d1bc0346bd0e613513f13ac01f6053] # --- INSTALL +++ INSTALL @@ -1,12 +1,13 @@ -Compiling monotone-viz from sources +Compiling git-viz from sources =================================== * OCaml -Monotone-viz is written in Objective caml, so you'll need the ocaml +Git-viz is written in Objective caml, so you'll need the ocaml compilers [1]. They are binaries available, from the ocaml homepage or -from other vendors (e.g. Linux distributions). It is also easy to -compile from source, something like this should work: +from other vendors (e.g. Linux distributions). If you install a +package, make sure you have camlp4, the caml preprocessor. OCaml is +also easy to compile from source, something like this should work: $ ./configure -prefix /opt/caml $ make world.opt @@ -28,23 +29,15 @@ $ make install -* Monotone -You need the compiled monotone sources, for monotone-viz statically -links the sqlite library embedded in monotone. So, in the -monotone-viz directory, create a link named monotone : - - $ ln -s /path/to/monotone-tree monotone +* Git-viz +Compiling git-viz should now be as simple as : - -* Monotone-viz -Compiling monotone-viz should now be as simple as : - $ ./configure $ make * Installing & cleaning -There is no `install' target for the Makefile : monotone-viz is a +There is no `install' target for the Makefile : git-viz is a single executable, just copy it somewhere in your PATH. Also the ocaml compiler statically links everything caml-related so you can delete your ocaml installation if you so wish : --- git.ml +++ git.ml @@ -28,10 +28,16 @@ input_line (match dir with None -> f | Some d -> Filename.concat d f) +let list_map_noexn f l = + List.rev + (List.fold_left + (fun acc v -> try f v :: acc with _ -> acc) + [] l) + let fetch_dir_of_ids git_dir subdir = try let dir = Filename.concat git_dir subdir in - List.map + list_map_noexn (fun n -> (id_of_file ~dir n, n)) (Array.to_list (Sys.readdir dir)) with _ -> [] @@ -298,8 +304,10 @@ cb (`SUB_PROC_ERROR "Diffs are not suported with git yet") ; false)) | `PASKY -> - let cmd = [ "git"; "diff"; parent; child] in + let cmd = [ "git"; "diff"; "-r"; parent; "-r"; child] in log "exec" "### exec: Running '%s'" (String.concat " " cmd) ; + let error fmt = + Printf.kprintf (fun s -> cb (`SUB_PROC_ERROR s)) fmt in try status#push "Running git diff ..." ; ignore (