This commit is contained in:
parent
31857bec77
commit
dc2d53e83a
1 changed files with 181 additions and 0 deletions
|
@ -0,0 +1,181 @@
|
|||
### Please describe the problem.
|
||||
A seemingly harmless script causes data loss by dropping last copy of file content.
|
||||
|
||||
In my test this script only drops file content on Windows. On Linux it's working good, even on a crippled filesystem.
|
||||
|
||||
### What steps will reproduce the problem?
|
||||
run the following script test.sh:
|
||||
[[!format sh """
|
||||
mkdir a
|
||||
cd a
|
||||
git init
|
||||
git annex init first
|
||||
mkdir folder
|
||||
echo foo > folder/1.txt
|
||||
git annex add .
|
||||
git annex sync
|
||||
cd ..
|
||||
git clone a b
|
||||
cd b
|
||||
git annex init second
|
||||
git annex sync
|
||||
cd ../a
|
||||
git remote add second ../b
|
||||
git annex sync
|
||||
git annex move --to second
|
||||
git annex sync
|
||||
mv folder folder1
|
||||
git annex add
|
||||
git annex sync
|
||||
cd ../b
|
||||
git annex sync
|
||||
"""]]
|
||||
|
||||
### What version of git-annex are you using? On what operating system?
|
||||
git-annex version: 6.20161231-gc8eeb17
|
||||
|
||||
Windows 10.0.14393 and also Windows 8
|
||||
|
||||
### Please provide any additional information below.
|
||||
|
||||
[[!format sh """
|
||||
# a complete transcript of the problem occurring.
|
||||
$ ./test.sh
|
||||
Initialized empty Git repository in A:/a/.git/
|
||||
init first
|
||||
Detected a filesystem without fifo support.
|
||||
|
||||
Disabling ssh connection caching.
|
||||
|
||||
Detected a crippled filesystem.
|
||||
|
||||
Enabling direct mode.
|
||||
ok
|
||||
(recording state in git...)
|
||||
add folder/1.txt ok
|
||||
(recording state in git...)
|
||||
commit ok
|
||||
Cloning into 'b'...
|
||||
done.
|
||||
init second
|
||||
Detected a filesystem without fifo support.
|
||||
|
||||
Disabling ssh connection caching.
|
||||
|
||||
Detected a crippled filesystem.
|
||||
(merging origin/git-annex into git-annex...)
|
||||
(recording state in git...)
|
||||
|
||||
Enabling direct mode.
|
||||
ok
|
||||
(recording state in git...)
|
||||
commit ok
|
||||
pull origin
|
||||
ok
|
||||
push origin
|
||||
Counting objects: 6, done.
|
||||
Delta compression using up to 8 threads.
|
||||
Compressing objects: 100% (5/5), done.
|
||||
Writing objects: 100% (6/6), 664 bytes | 0 bytes/s, done.
|
||||
Total 6 (delta 0), reused 0 (delta 0)
|
||||
To A:/a
|
||||
* [new branch] git-annex -> synced/git-annex
|
||||
ok
|
||||
commit ok
|
||||
pull second
|
||||
From ../b
|
||||
* [new branch] annex/direct/master -> second/annex/direct/master
|
||||
* [new branch] git-annex -> second/git-annex
|
||||
* [new branch] master -> second/master
|
||||
* [new branch] synced/master -> second/synced/master
|
||||
ok
|
||||
move folder/1.txt (to second...)
|
||||
1.txt
|
||||
4 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
|
||||
(checksum...) ok
|
||||
(recording state in git...)
|
||||
commit ok
|
||||
pull second
|
||||
remote: Counting objects: 5, done.
|
||||
remote: Compressing objects: 100% (4/4), done.
|
||||
remote: Total 5 (delta 1), reused 0 (delta 0)
|
||||
Unpacking objects: 100% (5/5), done.
|
||||
From ../b
|
||||
fd774cb..1aba4de git-annex -> second/git-annex
|
||||
ok
|
||||
(merging second/git-annex into git-annex...)
|
||||
(recording state in git...)
|
||||
push second
|
||||
Counting objects: 10, done.
|
||||
Delta compression using up to 8 threads.
|
||||
Compressing objects: 100% (8/8), done.
|
||||
Writing objects: 100% (10/10), 827 bytes | 0 bytes/s, done.
|
||||
Total 10 (delta 3), reused 0 (delta 0)
|
||||
To ../b
|
||||
* [new branch] git-annex -> synced/git-annex
|
||||
ok
|
||||
add folder1/1.txt ok
|
||||
(recording state in git...)
|
||||
commit (recording state in git...)
|
||||
ok
|
||||
pull second
|
||||
ok
|
||||
push second
|
||||
Counting objects: 7, done.
|
||||
Delta compression using up to 8 threads.
|
||||
Compressing objects: 100% (5/5), done.
|
||||
Writing objects: 100% (7/7), 687 bytes | 0 bytes/s, done.
|
||||
Total 7 (delta 0), reused 0 (delta 0)
|
||||
To ../b
|
||||
7ba3e8a..ee8025b git-annex -> synced/git-annex
|
||||
0758cf9..6e91185 annex/direct/master -> synced/master
|
||||
ok
|
||||
commit ok
|
||||
merge synced/master
|
||||
Updating 0758cf9..6e91185
|
||||
Fast-forward
|
||||
{folder => folder1}/1.txt | 0
|
||||
1 file changed, 0 insertions(+), 0 deletions(-)
|
||||
rename {folder => folder1}/1.txt (100%)
|
||||
error: duplicate parent 6e91185c7c64569b275a09be1a104a1d8955e1fb ignored
|
||||
ok
|
||||
pull origin
|
||||
From A:/a
|
||||
0758cf9..6e91185 annex/direct/master -> origin/annex/direct/master
|
||||
fd774cb..ee8025b git-annex -> origin/git-annex
|
||||
0758cf9..6e91185 master -> origin/master
|
||||
0758cf9..6e91185 synced/master -> origin/synced/master
|
||||
ok
|
||||
push origin
|
||||
Counting objects: 1, done.
|
||||
Writing objects: 100% (1/1), 185 bytes | 0 bytes/s, done.
|
||||
Total 1 (delta 0), reused 0 (delta 0)
|
||||
To A:/a
|
||||
fd774cb..ee8025b git-annex -> synced/git-annex
|
||||
6e91185..a886805 annex/direct/master -> synced/master
|
||||
ok
|
||||
|
||||
$ # script done here
|
||||
$ cd b
|
||||
$ git annex whereis
|
||||
whereis folder1/1.txt (1 copy)
|
||||
2a9ef292-1729-4533-ac50-f68d2d0badb6 -- second [here]
|
||||
ok
|
||||
|
||||
$ cat folder1/1.txt
|
||||
../.git/annex/objects/W5/55/SHA256E-s4--b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c.txt/SHA256E-s4--b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c.txt
|
||||
|
||||
$ git annex get
|
||||
get folder1/1.txt (not available)
|
||||
No other repository is known to contain the file.
|
||||
failed
|
||||
git-annex: get: 1 failed
|
||||
|
||||
|
||||
# End of transcript or log.
|
||||
"""]]
|
||||
|
||||
|
||||
### Conclusion
|
||||
|
||||
I'm so attracted to git-annex's idea, but seems it's still not robust enough to use on Windows platform - v5 direct mode repo is as far as I can get, yet it still throws away my data like this...
|
Loading…
Reference in a new issue