Skip to content

Commit 37fde0a

Browse files
committed
rn-119: add xattrs storage article
1 parent c2a4a91 commit 37fde0a

File tree

1 file changed

+42
-2
lines changed

1 file changed

+42
-2
lines changed

rev_news/drafts/edition-119.md

+42-2
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,49 @@ This edition covers what happened during the months of December 2024 and January
2525
### Reviews
2626
-->
2727

28-
<!---
28+
2929
### Support
30-
-->
30+
31+
+ [git support for "xattrs" (extended filesystem attributes)?](https://lore.kernel.org/git/[email protected]/)
32+
33+
Peter B. asked in the Git mailing list if there was a way to store
34+
[extended attributes (xattrs)](https://en.wikipedia.org/wiki/Extended_file_attributes)
35+
in Git. His use case was professional archival collection and he
36+
needed bit-proof preservation of all xattrs, even larger ones.
37+
38+
Junio Hamano, the Git maintainer, replied that Git only tracks
39+
"contents, pathnames where these contents are stored, and the
40+
executable bit".
41+
42+
Peff, alias Jeff King, also replied to Peter confirming that Git,
43+
like most other version control systems, doesn't store most
44+
metadata, but pointing to other tools,
45+
[etckeeper](https://etckeeper.branchable.com/) and
46+
[metastore](https://github.com/przemoc/metastore), that can help
47+
with storing that in a separate file and restoring it on checkout.
48+
49+
Junio agreed with Peff that Git is extensible that way.
50+
51+
brian m. carlson replied to Peter mentioning other
52+
possibilities. One is to use the `.gitattributes` files to store a
53+
few xattrs with values that are "well stored as text", and then
54+
`git ls-attr` and a `post-checkout`
55+
[hook](https://git-scm.com/book/ms/v2/Customizing-Git-Git-Hooks)
56+
to restore them.
57+
58+
Another possibility is to use
59+
[mtree](https://linux.die.net/man/8/mtree) utilities to store or
60+
restore metadata from or into mtree files. brian especially pointed
61+
to [go-mtree](https://github.com/vbatts/go-mtree) which supports
62+
xattrs. As `mtree` is an extensible key-value format, brian uses it
63+
to store the install location of his
64+
[dotfiles](https://en.wikipedia.org/wiki/Hidden_file_and_hidden_directory).
65+
66+
Peter replied to brian thanking everyone for the suggestions and
67+
saying he would especially take a look at `mtree` and
68+
`metastore`. He thanked again brian later saying that `go-mtree`
69+
looked very promising and that he was going to look at
70+
`post-checkout` hooks.
3171

3272
## Developer Spotlight: Justin Tobler
3373

0 commit comments

Comments
 (0)