This commit is contained in:
parent
ac0945b9d0
commit
605616032a
1 changed files with 97 additions and 0 deletions
97
doc/forum/Move_unsynced_file_in_direct_mode.mdwn
Normal file
97
doc/forum/Move_unsynced_file_in_direct_mode.mdwn
Normal file
|
@ -0,0 +1,97 @@
|
|||
When I rename unsynced files in a direct mode repo, the original symlink gets removed from git, but the new symlink doesn't get added back by autocommit or by explicitly using `git annex add`.
|
||||
|
||||
First, I create a file in a git-annex repo:
|
||||
|
||||
$ mkdir annex1
|
||||
$ cd annex1
|
||||
$ git init
|
||||
Initialized empty Git repository in /home/cwarden/annex1/.git/
|
||||
$ git annex init
|
||||
init ok
|
||||
(Recording state in git...)
|
||||
$ echo test > test1
|
||||
$ git annex add test1
|
||||
add test1 ok
|
||||
(Recording state in git...)
|
||||
$ git annex sync
|
||||
commit ok
|
||||
$ ls -l
|
||||
total 4
|
||||
lrwxrwxrwx 1 cwarden cwarden 178 Sep 12 10:14 test1 -> .git/annex/objects/w8/pv/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
|
||||
$ cat test1
|
||||
test
|
||||
|
||||
Now, I clone the repo and enable autocommit and direct mode in the second repo:
|
||||
|
||||
$ cd ..
|
||||
$ git clone annex1 annex2
|
||||
Cloning into 'annex2'...
|
||||
done.
|
||||
$ cd annex2
|
||||
$ git config annex.autocommit true
|
||||
$ git annex direct
|
||||
commit
|
||||
On branch master
|
||||
Your branch is up-to-date with 'origin/master'.
|
||||
|
||||
nothing to commit, working directory clean
|
||||
ok
|
||||
direct ok
|
||||
|
||||
I drop the file, then rename it:
|
||||
|
||||
$ git annex drop test1
|
||||
(merging origin/git-annex into git-annex...)
|
||||
(Recording state in git...)
|
||||
$ mv test1 test2
|
||||
$ ls -l
|
||||
total 4
|
||||
lrwxrwxrwx 1 cwarden cwarden 178 Sep 12 10:14 test2 -> .git/annex/objects/w8/pv/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
|
||||
$ git annex sync
|
||||
commit (Recording state in git...)
|
||||
ok
|
||||
pull origin
|
||||
ok
|
||||
push origin
|
||||
Counting objects: 6, done.
|
||||
Delta compression using up to 4 threads.
|
||||
Compressing objects: 100% (5/5), done.
|
||||
Writing objects: 100% (6/6), 674 bytes | 0 bytes/s, done.
|
||||
Total 6 (delta 1), reused 0 (delta 0)
|
||||
To /home/cwarden/annex1
|
||||
2772756..ffcb7a1 annex/direct/master -> synced/master
|
||||
* [new branch] git-annex -> synced/git-annex
|
||||
ok
|
||||
(Recording state in git...)
|
||||
|
||||
Now, I want to get the renamed file:
|
||||
|
||||
$ git annex get test2
|
||||
$ ls -l
|
||||
total 4
|
||||
lrwxrwxrwx 1 cwarden cwarden 178 Sep 12 10:14 test2 -> .git/annex/objects/w8/pv/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2/SHA256E-s5--f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
|
||||
$ cat test2
|
||||
cat: test2: No such file or directory
|
||||
|
||||
Explicitly adding test2 doesn't work:
|
||||
|
||||
$ git annex add test2
|
||||
$ git annex get test2
|
||||
$ cat test2
|
||||
cat: test2: No such file or directory
|
||||
|
||||
`git annex fsck` doesn't help:
|
||||
|
||||
$ git annex fsck
|
||||
$ cat test2
|
||||
cat: test2: No such file or directory
|
||||
|
||||
The only way I've found to get the renamed file back into git is to use `core.bare=false`, but the [documentation](http://git-annex.branchable.com/direct_mode/) says that "there should be no good reason to need to do this, ever".
|
||||
|
||||
$ git -c core.bare=false add test2
|
||||
$ git -c core.bare=false commit -m'force renamed file back into git'
|
||||
$ git annex get test2
|
||||
$ cat test2
|
||||
test
|
||||
|
||||
Is there a better solution?
|
Loading…
Add table
Add a link
Reference in a new issue