Merge branch 'master' of ssh://git-annex.branchable.com

This commit is contained in:
Joey Hess 2016-08-24 11:07:15 -04:00
commit 7fc661acaa
Failed to extract signature
5 changed files with 224 additions and 0 deletions

View file

@ -0,0 +1,55 @@
### Please describe the problem.
git annex fsck and git annex get are showing (false?) sha256sum failed messages on Android with the 2016-07-19 android 5.0 build. I haven't seen this before but have been using git-annex on Android, with the same repository for a year, so I'd guess regression.
I ran fsck on the files on another machine (Watt: Debian testing, 6.20160511-1) and no errors occur. Note that isn't the machine that the Android tablet transfers from (Einstein: Debian stable + backports, 5.20151208-1~bpo8+1). The Android shell didn't have a sha256sum command, but it had an md5 command—and I tried one of the files (Management Report.pdf) and the md5 matches on both Watt and the Android tablet.
I also ran git annex fsck on Einstein (the entire repository, since it's a bare repo) and the only problem it found was a single (different) key with an insufficient number of trusted copies.
So I think the file is actually fine.
### What steps will reproduce the problem?
Unsure. Dropping and re-getting those files didn't help; it showed a sha256 error with get too.
The only difference I can think of between the files that fail and work is the size:
[[!format text """
u0_a180@manta:/sdcard/Westerley-Board/Board Packets & Reports/2016-08-25 (Regular) $ ls -l
-rw-rw---- root sdcard_r 116225 2016-08-24 05:40 Agenda 16-08-25.pdf
-rw-rw---- root sdcard_r 10128521 2016-08-24 06:02 Management Report scan 2 (annotated; Anthony).pdf
-rw-rw---- root sdcard_r 10128521 2016-08-24 06:02 Management Report scan 2.pdf
-rw-rw---- root sdcard_r 53313352 2016-08-24 06:02 Management Report.pdf
-rw-rw---- root sdcard_r 27154 2016-08-24 06:02 WHOA Chart of Accounts Spreadsheet.xlsx
"""]]
### What version of git-annex are you using? On what operating system?
### Please provide any additional information below.
[[!format text """
u0_a180@manta:/sdcard/Westerley-Board/Board Packets & Reports/2016-08-25 (Regular) $ git annex fsck *
WARNING: linker: git-annex has text relocations. This is wasting memory and prevents security hardening. Please fix.
fsck Agenda 16-08-25.pdf (checksum...) ok
fsck Management Report scan 2 (annotated; Anthony).pdf (checksum...)
sha256sum failed
ok
fsck Management Report scan 2.pdf (checksum...)
sha256sum failed
ok
fsck Management Report.pdf (checksum...)
sha256sum failed
ok
fsck WHOA Chart of Accounts Spreadsheet.xlsx (checksum...) ok
(recording state in git...)
__bionic_open_tzdata_path: ANDROID_ROOT not set!
__bionic_open_tzdata_path: ANDROID_ROOT not set!
__bionic_open_tzdata_path: ANDROID_ROOT not set!
__bionic_open_tzdata_path: ANDROID_ROOT not set!
__bionic_open_tzdata_path: ANDROID_ROOT not set!
__bionic_open_tzdata_path: ANDROID_ROOT not set!
u0_a180@manta:/sdcard/Westerley-Board/Board Packets & Reports/2016-08-25 (Regular) $
"""]]
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
Yes, I've been using git annex for I think a year and a half now, on several repositories. It works pretty well. I have a total of around 315GB and 23K annexed keys across them (counting each annex only once, even though they're cloned on a bunch of machines).

View file

@ -0,0 +1,136 @@
### Please describe the problem.
I've noticed that adding a modified file to a version 6 repo will throw a number of errors if 'git annex add' is executed four or more directories deep from the git directory.
Though it throws a number of errors, it seems the file is still added normally.
I have also experienced a problem whereby adding a file will replace it with its key (as if I had run 'git annex drop').
I'm not sure if that problem is related.
### What steps will reproduce the problem?
In order to cause the exception, a file already in the repo has to be unlocked, edited, and re-added; this re-adding must take place from four levels below the git directory.
Here is a minimal working example:
git init
git annex init --version=6
mkdir -p 1/2/3/4
touch 1/2/3/4/foo
git annex add 1/2/3/4/foo
git annex sync
git annex unlock 1/2/3/4/foo
echo "bar" >> 1/2/3/4/foo
cd 1/2/3/4
git annex add foo
Specifically, trying to run 'git annex add foo' will result in the following errors being thrown:
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
git-annex: git check-attr EOF: user error
git-annex: smudge: 1 failed
error: external filter git-annex smudge --clean %f failed 1
error: external filter git-annex smudge --clean %f failed
add foo ok
(recording state in git...)
### What version of git-annex are you using? On what operating system?
I'm currently running version 6.20160720-g9f0428e on Arch Linux (x86), though I've experienced this problem since at least February.
### Please provide any additional information below.
[[!format sh """
# If you can, paste a complete transcript of the problem occurring here.
# If the problem is with the git-annex assistant, paste in .git/annex/daemon.log
$ git init; git annex init --version=6
Initialized empty Git repository in /mnt/.git/
init ok
(recording state in git...)
$ mkdir -p 1/2/3/4
$ touch 1/2/3/4/foo
$ git annex add 1/2/3/4/foo
add 1/2/3/4/foo ok
(recording state in git...)
$ git annex sync
commit
[master (root-commit) 25e1676] git-annex in
:/mntt
1 file changed, 1 insertion(+)
create mode 120000 1/2/3/4/foo
ok
$ git annex unlock 1/2/3/4/foo
unlock 1/2/3/4/foo ok
(recording state in git...)
$ echo "bar" >> 1/2/3/4/foo
$ cd 1/2/3/4
$ git annex add foo --debug
[2016-08-23 14:47:21.764271] read: git
["--git-dir=../../../../.git","--work-tree=../../../..","--literal-pathspecs","ls-files","--others","--exclude-standard","-z","--","foo"]
[2016-08-23 14:47:21.766481] read: git
["--git-dir=../../../../.git","--work-tree=../../../..","--literal-pathspecs","ls-files","--modified","-z","--","foo"]
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
fatal: '../1/2/3/4/foo' is outside repository
git-annex: git check-attr EOF: user error
git-annex: smudge: 1 failed
error: external filter git-annex smudge --clean %f failed 1
error: external filter git-annex smudge --clean %f failed
[2016-08-23 14:47:21.806128] chat: git
["--git-dir=../../../../.git","--work-tree=../../../..","--literal-pathspecs","check-attr","-z","--stdin","annex.backend","annex.numcopies","annex.largefiles","--"]
[2016-08-23 14:47:21.806624] read: git ["--version"]
[2016-08-23 14:47:21.809352] process done ExitSuccess
[2016-08-23 14:47:21.813764] chat: git
["--git-dir=../../../../.git","--work-tree=../../../..","--literal-pathspecs","cat-file","--batch"]
add foo [2016-08-23 14:47:21.818268] read: git
["--git-dir=../../../../.git","--work-tree=../../../..","--literal-pathspecs","symbolic-ref","-q","HEAD"]
[2016-08-23 14:47:21.82027] process done ExitSuccess
[2016-08-23 14:47:21.822862] read: git
["--git-dir=../../../../.git","--work-tree=../../../..","--literal-pathspecs","show-ref","git-annex"]
[2016-08-23 14:47:21.825102] process done ExitSuccess
[2016-08-23 14:47:21.825233] read: git
["--git-dir=../../../../.git","--work-tree=../../../..","--literal-pathspecs","show-ref","--hash","refs/heads/git-annex"]
[2016-08-23 14:47:21.82715] process done ExitSuccess
[2016-08-23 14:47:21.828549] chat: git
["--git-dir=../../../../.git","--work-tree=../../../..","--literal-pathspecs","cat-file","--batch"]
ok
(recording state in git...)
[2016-08-23 14:47:21.832848] feed: xargs
["-0","git","--git-dir=../../../../.git","--work-tree=../../../..","--literal-pathspecs","add","--"]
[2016-08-23 14:47:21.836822] process done ExitSuccess
[2016-08-23 14:47:21.837518] chat: git
["--git-dir=../../../.git","--work-tree=../../../..","--literal-pathspecs","hash-object","-w","--stdin-paths","--no-filters"]
[2016-08-23 14:47:21.838061] feed: git
["--git-dir=../../../.git","--work-tree=../../../..","--literal-pathspecs","update-index","-z","--index-info"]
[2016-08-23 14:47:21.843259] process done ExitSuccess
[2016-08-23 14:47:21.843444] read: git
["--git-dir=../../../.git","--work-tree=../../../..","--literal-pathspecs","show-ref","--hash","refs/heads/git-annex"]
[2016-08-23 14:47:21.847287] process done ExitSuccess
[2016-08-23 14:47:21.847602] read: git
["--git-dir=../../../.git","--work-tree=../../../..","--literal-pathspecs","write-tree"]
[2016-08-23 14:47:21.85106] process done ExitSuccess
[2016-08-23 14:47:21.851221] chat: git
["--git-dir=../../../.git","--work-tree=../../../..","--literal-pathspecs","commit-tree","b4a158d15da89e28ef5c2f1782c5b1e3c6f1176c","--no-gpg-sign","-p","refs/heads/git-annex"]
[2016-08-23 14:47:21.85892] process done ExitSuccess
[2016-08-23 14:47:21.85907] call: git
["--git-dir=../../../.git","--work-tree=../../../..","--literal-pathspecs","update-ref","refs/heads/git-annex","68381bac2ba0f559d37214c30b5e41a404b9c98b"]
[2016-08-23 14:47:21.861978] process done ExitSuccess
# End of transcript or log.
"""]]
### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders)
I've been happily using git-annex on my laptop and server for almost a year; it's saved me a great deal of time and effort.
Thanks for all your work!

View file

@ -0,0 +1,8 @@
[[!comment format=mdwn
username="https://openid.stackexchange.com/user/3ee5cf54-f022-4a71-8666-3c2b5ee231dd"
nickname="Anthony DeRobertis"
subject="comment 1"
date="2016-08-24T10:53:05Z"
content="""
Pretty sure that's not a file with a question mark (`0x3f`) in it, that's a file with a carriage return (`0x0d`) in it. In which case see also [git annex import fails on filenames with newlines in them](https://git-annex.branchable.com/bugs/git_annex_import_fails_on_filenames_with_newlines_in_them/).
"""]]

View file

@ -0,0 +1,12 @@
[[!comment format=mdwn
username="dusty@dba9614abc02e013134f95c2c59181a6c12a8468"
nickname="dusty"
subject="moving files with git mv can yield broken symlink"
date="2016-08-23T21:48:59Z"
content="""
Hey Joey,
Just wondering how we rename/move files around into different directories within a repository without breaking the symbolic links. If we move to a different directory and the depth is different than where the files were originally in the repo then the symbolic link is broken.
Thanks
"""]]

View file

@ -0,0 +1,13 @@
[[!comment format=mdwn
username="dusty@dba9614abc02e013134f95c2c59181a6c12a8468"
nickname="dusty"
subject="Nevermind - broken symlinks will be fixed on commit"
date="2016-08-23T21:53:05Z"
content="""
Didn't catch this from the docs above:
\"Notice that, since annexed files are represented by symlinks, the symlink will break when the file is moved into a subdirectory. But, git-annex will fix this up for you when you commit -- it has a pre-commit hook that watches for and corrects broken symlinks.\"
"""]]