7 releases

0.0.9 Jul 4, 2023
0.0.8 Mar 29, 2023
0.0.7 Feb 11, 2023
0.0.6 Oct 5, 2022
0.0.4 Jun 22, 2019

#336 in Command line utilities

Download history 2/week @ 2023-11-02 1/week @ 2023-11-09 1/week @ 2023-11-16 9/week @ 2023-11-23 31/week @ 2023-11-30 7/week @ 2023-12-14 14/week @ 2023-12-21 7/week @ 2024-01-04 7/week @ 2024-01-18 13/week @ 2024-01-25 14/week @ 2024-02-01 9/week @ 2024-02-08 53/week @ 2024-02-15

90 downloads per month


464 lines

filestatrec - record mtime and mode for files in a git repository

The git tree format, as used by git-annex, records only a minimum amount of per-file metadata. When recording more metadata is a requirement, it has to be recorded out of band; filestatrec records it in a hidden text file (.filestat). Currently it records the file's mode and modification time.

The file format is designed to make it easy to manually resolve merge conflicts, which is why it's a simple text file. Since merge drivers usually treat each line of text as an indivisible unit, the metadata for each file is stored in a single line. To minimize accidental conflicts, the file is sorted by the file path; to make it more readable during merges, unusual characters are escaped.

Why not tags?

Both git and git-annex are content-addressed filesystems, so two files with the same content map to the same object, even if their metadata should be different.


Licensed under either of

at your option.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.


~132K SLoC