This commit is contained in:
parent
edf31a2ebc
commit
a055cb76ca
1 changed files with 156 additions and 0 deletions
156
doc/forum/Can__39__t_access_file_from_secondary_client.mdwn
Normal file
156
doc/forum/Can__39__t_access_file_from_secondary_client.mdwn
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
I'm trying to setup git-annex for syncing two clients using a transfer repository. All of that without the webapp UI.
|
||||||
|
|
||||||
|
Here's the reproducible scenario with a bash script:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#/usr/bin/env bash
|
||||||
|
|
||||||
|
# Just a way to access the script's directory
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
DIR="$(pwd)"
|
||||||
|
|
||||||
|
# Create the 1st client repository
|
||||||
|
mkdir $DIR/client1
|
||||||
|
cd $DIR/client1
|
||||||
|
git init && git annex init
|
||||||
|
|
||||||
|
# Create the 2nd client repository
|
||||||
|
mkdir $DIR/client2
|
||||||
|
cd $DIR/client2
|
||||||
|
git init && git annex init
|
||||||
|
|
||||||
|
# Create the transfer repository
|
||||||
|
mkdir $DIR/share
|
||||||
|
cd $DIR/share
|
||||||
|
git init && git annex init
|
||||||
|
|
||||||
|
# Setup the remotes and groups for the transfer repository
|
||||||
|
cd $DIR/share
|
||||||
|
git remote add client1 $DIR/client1
|
||||||
|
git remote add client2 $DIR/client1
|
||||||
|
git annex group . transfer
|
||||||
|
git annex group client1 client
|
||||||
|
git annex group client2 client
|
||||||
|
git co -b main
|
||||||
|
|
||||||
|
# Setup the remotes and groups for the 1st client repository.
|
||||||
|
cd $DIR/client1
|
||||||
|
git remote add share $DIR/share
|
||||||
|
git annex group . client
|
||||||
|
git annex group share transfer
|
||||||
|
git co -b main
|
||||||
|
|
||||||
|
# Setup the remotes and groups for the 2nd client repository.
|
||||||
|
cd $DIR/client2
|
||||||
|
git remote add share $DIR/share
|
||||||
|
git annex group . client
|
||||||
|
git annex group share transfer
|
||||||
|
git co -b main
|
||||||
|
|
||||||
|
# Run git-annex assistant for each repository
|
||||||
|
cd $DIR/client1 && git annex assistant
|
||||||
|
cd $DIR/client2 && git annex assistant
|
||||||
|
cd $DIR/share && git annex assistant
|
||||||
|
|
||||||
|
# Add a single file to the 1st client.
|
||||||
|
cd $DIR/client1
|
||||||
|
echo "My first file" >> file.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
client1: I see the auto-commit has been added for file.txt
|
||||||
|
|
||||||
|
share: I get the following daemon logs:
|
||||||
|
|
||||||
|
```
|
||||||
|
(scanning...) (started...)
|
||||||
|
From /home/xxx/git-annex-scenarios/share-between-clients/client1
|
||||||
|
* [new branch] git-annex -> client2/git-annex
|
||||||
|
(merging client2/git-annex into git-annex...)
|
||||||
|
From /home/xxx/git-annex-scenarios/share-between-clients/client1
|
||||||
|
* [new branch] git-annex -> client1/git-annex
|
||||||
|
|
||||||
|
merge: refs/remotes/client2/main - not something we can merge
|
||||||
|
|
||||||
|
merge: refs/remotes/client2/synced/main - not something we can merge
|
||||||
|
|
||||||
|
merge: refs/remotes/client1/main - not something we can merge
|
||||||
|
|
||||||
|
merge: refs/remotes/client1/synced/main - not something we can merge
|
||||||
|
(merging synced/git-annex into git-annex...)
|
||||||
|
(recording state in git...)
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
client2: I get the following daemon logs:
|
||||||
|
|
||||||
|
```
|
||||||
|
From /home/xxx/git-annex-scenarios/share-between-clients/share
|
||||||
|
* [new branch] git-annex -> share/git-annex
|
||||||
|
(merging share/git-annex into git-annex...)
|
||||||
|
(recording state in git...)
|
||||||
|
|
||||||
|
merge: refs/remotes/share/main - not something we can merge
|
||||||
|
|
||||||
|
merge: refs/remotes/share/synced/main - not something we can merge
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, I thought that maybe I needed to do an initial `git pull` for each repository. So I tried adding to the bash script the following lines:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Need to do this if there are no commits in the 'client2' and 'share' repositories.
|
||||||
|
# Or else, I'll get the following logs:
|
||||||
|
#
|
||||||
|
# merge: refs/remotes/share/main - not something we can merge
|
||||||
|
# merge: refs/remotes/share/synced/main - not something we can merge
|
||||||
|
sleep 3;
|
||||||
|
cd $DIR/share
|
||||||
|
git pull client1 main
|
||||||
|
sleep 3;
|
||||||
|
cd $DIR/client2
|
||||||
|
git pull share main
|
||||||
|
```
|
||||||
|
|
||||||
|
But I'm still getting the same error:
|
||||||
|
|
||||||
|
```
|
||||||
|
(scanning...) (started...)
|
||||||
|
From /home/xxx/git-annex-scenarios/share-between-clients/share
|
||||||
|
* [new branch] git-annex -> share/git-annex
|
||||||
|
(merging share/git-annex into git-annex...)
|
||||||
|
(recording state in git...)
|
||||||
|
|
||||||
|
merge: refs/remotes/share/main - not something we can merge
|
||||||
|
|
||||||
|
merge: refs/remotes/share/synced/main - not something we can merge
|
||||||
|
(recording state in git...)
|
||||||
|
To /home/kolam/git-annex-scenarios/share-between-clients/share
|
||||||
|
+ 28079ec...ca3c481 git-annex -> synced/git-annex (forced update)
|
||||||
|
Everything up-to-date
|
||||||
|
To /home/kolam/git-annex-scenarios/share-between-clients/share
|
||||||
|
+ 28079ec...ca3c481 git-annex -> synced/git-annex (forced update)
|
||||||
|
```
|
||||||
|
|
||||||
|
However, even though I have that error, `file.txt` now appears in `client2`.
|
||||||
|
But, the content of `file.txt` is:
|
||||||
|
|
||||||
|
```
|
||||||
|
/annex/objects/SHA256E-s14--14b99b7ab1e9777f7e1c2b482fe2cd95653c7cf35f
|
||||||
|
459ef0b15bd0d75b2245c9.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
and that link doesn't exist in my filesystem.
|
||||||
|
Running `git annex whereis file.txt` in `client2` gives me:
|
||||||
|
|
||||||
|
```
|
||||||
|
whereis file.txt (0 copies) failed
|
||||||
|
whereis: 1 failed
|
||||||
|
```
|
||||||
|
|
||||||
|
So my questions are:
|
||||||
|
|
||||||
|
* did I miss something in the steps required to setup the repositories?
|
||||||
|
* is there some documentation outlining the steps to do so without the webapp?
|
||||||
|
* how can we enhance the UX for that scenario with better messages?
|
Loading…
Reference in a new issue