Module OpamDirTrack

type digest

uniquely identifies a filesystem item value

type change =
| Added of digest
| Removed
| Contents_changed of digest(*

For links, corresponds to a change of target

*)
| Perm_changed of digest
| Kind_changed of digest(*

Used e.g. when a file is replaced by a directory, a link or a fifo

*)

Defines a change concerning a fs item; The digest parameter is the new value of the item

val to_string : t -> string

Returns a printable, multi-line string

val digest_of_string : string -> digest
val string_of_digest : digest -> string
val string_of_change : ?full:bool -> change -> string

Return the change action, with digest if full is set to true

val track : OpamFilename.Dir.t -> ?except:OpamFilename.Base.Set.t -> (unit -> 'a OpamProcess.job) -> ('a * t) OpamProcess.job

Wraps a job to track the changes that happened under dirname during its execution (changes done by the application of the job function to () are tracked too, for consistency with jobs without commands)

val revert : ?title:string -> ?verbose:bool -> ?force:bool -> ?dryrun:bool -> OpamFilename.Dir.t -> t -> unit

Removes the added and kind-changed items unless their contents changed and force isn't set, and prints warnings for other changes unless verbose is set to false. Ignores non-existing files. title is used to prefix messages if specified.

val check : OpamFilename.Dir.t -> t -> (OpamFilename.t * [ `Unchanged | `Removed | `Changed ]) list

Checks the items that were added or kind-changed in the given diff, and returns their status

val update : OpamFilename.Dir.t -> t -> t

Reload all the digests from the directory prefix. Remove a file from the map if it has been removed from the file-system.