New bug "sync does not commit with alwasycommit = false"
This commit is contained in:
parent
2f54ec7727
commit
68455bbe4e
1 changed files with 85 additions and 0 deletions
|
@ -0,0 +1,85 @@
|
||||||
|
### Please describe the problem.
|
||||||
|
|
||||||
|
The documentation of `git annex sync` states
|
||||||
|
|
||||||
|
> The sync process involves first committing all local changes, then fetching and merging […]
|
||||||
|
> You can use standard git commands to do each of those steps by hand, or if you
|
||||||
|
> don't want to worry about the details, you can use sync.
|
||||||
|
|
||||||
|
The documentation of `alwasycommit` states
|
||||||
|
|
||||||
|
> By default, git-annex automatically commits data to the git-annex branch after each
|
||||||
|
> command is run. To disable these commits, set to false. Then data will only be
|
||||||
|
> committed when running `git annex merge` (or by automatic merges) or `git annex sync`.
|
||||||
|
|
||||||
|
In fact, however, `git annex sync` will not commit or will not commit some pieces of information when `alwasycommit` is false. This leads to various problems, the first of which is that cloned repositories do not have information about the other remotes.
|
||||||
|
|
||||||
|
It is hard to work around this problem because `git commit` cannot be used in direct mode.
|
||||||
|
|
||||||
|
This problem does not show up when using local, non over-the-network, remotes.
|
||||||
|
|
||||||
|
### What steps will reproduce the problem?
|
||||||
|
|
||||||
|
The following script (available at <https://gist.github.com/gioele/5ffeff8988a535164e5b>) will reproduce this problem. If you do not have SSH running on localhost, you can change the `h` variable to point to another host.
|
||||||
|
|
||||||
|
#!/bin/sh -x
|
||||||
|
|
||||||
|
set -e ; set -u
|
||||||
|
export LC_ALL=C
|
||||||
|
|
||||||
|
h=${h:-localhost}
|
||||||
|
dr="/tmp/annex"
|
||||||
|
|
||||||
|
chmod a+rwx -R pc1 pc2 || true
|
||||||
|
rm -Rf pc1 pc2
|
||||||
|
|
||||||
|
# create central git repo
|
||||||
|
ssh $h "chmod a+rwx -R ${dr}/Docs.git" || true
|
||||||
|
ssh $h "rm -Rf ${dr}/Docs.git"
|
||||||
|
ssh $h "mkdir -p ${dr}/Docs.git"
|
||||||
|
ssh $h "cd ${dr}/Docs.git ; git init --bare"
|
||||||
|
|
||||||
|
d=$(pwd)
|
||||||
|
|
||||||
|
# populate repo in PC1
|
||||||
|
mkdir -p pc1/Docs
|
||||||
|
cd pc1/Docs
|
||||||
|
echo AAA > fileA
|
||||||
|
echo BBB > fileB
|
||||||
|
|
||||||
|
git init
|
||||||
|
git config annex.alwayscommit false # change to true to solve this problem
|
||||||
|
|
||||||
|
git remote add origin $h:$dr/Docs.git
|
||||||
|
git fetch --all
|
||||||
|
|
||||||
|
# simulate a host without git-annex
|
||||||
|
git config remote.origin.annex-ignore true
|
||||||
|
|
||||||
|
git annex init "pc1"
|
||||||
|
git annex info
|
||||||
|
|
||||||
|
git annex direct
|
||||||
|
git annex sync origin
|
||||||
|
|
||||||
|
git annex add .
|
||||||
|
git annex sync
|
||||||
|
|
||||||
|
# re-create repo on PC2
|
||||||
|
cd $d
|
||||||
|
mkdir -p pc2
|
||||||
|
cd pc2
|
||||||
|
git clone $h:$dr/Docs.git
|
||||||
|
cd Docs
|
||||||
|
|
||||||
|
git config remote.origin.annex-ignore true
|
||||||
|
|
||||||
|
git annex init "pc2"
|
||||||
|
git annex direct
|
||||||
|
git annex info
|
||||||
|
|
||||||
|
# git annex info shows only pc2, shouldn't pc1 be there as well?
|
||||||
|
|
||||||
|
### What version of git-annex are you using? On what operating system?
|
||||||
|
|
||||||
|
git-annex version: 5.20140708-g8c9c55c on Ubuntu 12.04.4
|
Loading…
Add table
Add a link
Reference in a new issue