Bug#959506: git-annex: `git annex add` sometimes treats non-dotfiles in dotdirs as dotfiles
Marco Ricci
m at the13thletter.info
Sun May 3 07:57:39 BST 2020
Package: git-annex
Version: 8.20200330-1
Severity: normal
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Dear Maintainer,
I use git to keep $HOME in version control, and git-annex to version
sensitive files whose contents I do not want kept in git, e.g. `.netrc`. My
repository thus contains several dotfiles and "dotdirs". The rules for which
files are sensitive and which aren't aren't easily described as a simple
matching expression, so I leave `annex.largefiles` unset. I expect to be
able to specifically use `git add` to add files to git, and `git annex add`
to add files to the annex.
After upgrading the repository format to v8, `git annex add` sometimes
treats ordinary files stored in a dotdir the same as it treats dotfiles –
adding them to native git and saying they are non-large files, even when
`annex.largefiles` is not configured. I am aware that dotfiles are forced to
git by default unless I set `annex.dotfiles`, but I do not expect this to
happen with non-dotfiles, even if they are located within dotdirs.
Sample transcript:
$ cd `mktemp -d -t`
$ git init .
Initialized empty Git repository in /tmp/tmp.Meciv7SAMH/.git/
$ git annex init
init (scanning for unlocked files...)
ok
(recording state in git...)
$ git config --unset annex.largefiles
$ git config --unset annex.dotfiles
$ git config -l | grep -F annex
annex.backends=SHA256E
annex.uuid=0b024138-de95-426f-905a-97f2f5e84cb5
annex.version=8
filter.annex.smudge=git-annex smudge -- %f
filter.annex.clean=git-annex smudge --clean -- %f
$ mkdir .foo
$ echo a > .foo/bar
$ echo b > .foo/baz
$ echo c > .foo/quux
$ git annex add .foo/bar
add .foo/bar (non-large file; adding content to git repository) ok
(recording state in git...)
$ git config annex.dotfiles true
$ git annex add .foo/baz
add .foo/baz
ok
(recording state in git...)
$ git config annex.dotfiles false
$ cd .foo
$ git annex add quux
add quux
ok
(recording state in git...)
In this transcript, I would have expected the call `git annex add .foo/bar`
to also add the file to the annex, not to git, irrespective of whether I had
`annex.dotfiles` set or not. (Confusingly, the diagnostic message talks
about large and non-large files, which initially had me think that
`annex.largefiles` had been set to some default value somewhere.) The call
`git annex add .foo/baz` however shows that git-annex does depend on
`annex.dotfiles` here, unlike in the `cd .foo && git annex add quux` case
(as it should, in the latter).
To me, this looks like git-annex erroneously classifies dotfiles as all
paths which begin with a dot, irrespective of whether they contain directory
separators or not.
Regards,
Marco
- -- System Information:
Debian Release: bullseye/sid
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'oldstable-updates'), (500, 'unstable'), (500, 'testing'), (500, 'stable'), (500, 'oldstable')
Architecture: amd64 (x86_64)
Kernel: Linux 5.6.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)
Versions of packages git-annex depends on:
ii curl 7.68.0-1
ii git 1:2.26.2-1
ii libc6 2.30-4
ii libffi7 3.3-4
ii libgmp10 2:6.2.0+dfsg-4
ii libmagic1 1:5.38-4
ii libsqlite3-0 3.31.1-5
ii netbase 6.1
ii openssh-client 1:8.2p1-4
ii rsync 3.1.3-8
ii zlib1g 1:1.2.11.dfsg-2
Versions of packages git-annex recommends:
pn aria2 <none>
ii bind9-host 1:9.16.2-3
pn git-remote-gcrypt <none>
ii gnupg 2.2.20-1
ii lsof 4.93.2+dfsg-1
pn nocache <none>
Versions of packages git-annex suggests:
pn adb <none>
pn bup <none>
pn libnss-mdns <none>
pn magic-wormhole <none>
pn tahoe-lafs <none>
pn tor <none>
pn uftp <none>
pn xdot <none>
pn youtube-dl <none>
- -- no debconf information
-----BEGIN PGP SIGNATURE-----
iHUEARYIAB0WIQTBvAUu2rK/NpMBRakyyKA6JHNekwUCXq5rXAAKCRAyyKA6JHNe
k2shAP9UBQE2TofuG++ikZVfHXb/5lWT4jSmm/lFnvGaD9mZtwEA5FSqo+X+Ytod
sj07cC6bnf3rOFgRfg0+qmZ3AkC9rgE=
=nlXQ
-----END PGP SIGNATURE-----
More information about the Pkg-haskell-maintainers
mailing list