let tags_file file =
  let dir = Filename.dirname file in
  let f = Filename.basename file in
  let temp_file = Filename.temp_file "ocamlcvs" "log" in
  let com = Printf.sprintf
      "cd %s ; cvs log %s > %s"
      (Filename.quote dir)
      (Filename.quote f)
      temp_file
  in
  let n = Sys.command com in
  try
    if n = 0 then
      let revisions = read_tags temp_file in
      delete_file temp_file ;
      revisions
    else
      raise (Ocvs_types.CvsFailure (Ocvs_messages.error_exec com))
  with
    Failure s ->
      delete_file temp_file ;
      raise (Ocvs_types.CvsFailure s)