Some time ago I created an S3 remote that uses a Digital Ocean "space", which is S3 compatible. It works fine and I've copied some content there and can get it from there. Before I trust this remote though I want to understand where the configuration is that points it to digital ocean. When I look at .git/config there is this section:
[remote "cloud"]
annex-s3 = true
annex-uuid = <a UUID>
annex-ignore = false
I've looked around and inside the annex subdirectory but haven't been able to find where the config is stored that I must have entered to create this remote. Is the annex-uuid a key to a database with the config? How do I view it?
Thanks for git-annex BTW
Take a look at the git-annex branch, in particular remote.log.
This is a good question, because where git-annex stores information needed to use a special remote varies depending on the special remote, and is not really documented very well. But, you can work it out, by thinking about the 4 ways git-annex can possibly store it.
The git-annex branch's remote.log file is used for most configuration. For a S3 special remote, it's almost all stored there, except for credentials.
Credentials, passwords, etc needed to access a special remote may be cached in .git/annex/creds/. The S3 remote stores the
AWS_SECRET_ACCESS_KEY
andAWS_ACCESS_KEY_ID
there, so it will work without the environment variables set.(Sometimes this is also stored in remote.log, but only when you use embedcreds=yes and only when the remote's encryption makes it safe to do so.)
.git/config is only used for configurations that it makes sense be local to a given repository clone. For most special remotes, it does not make sense to store stuff there, but eg, the directory special remote stores the path there, because the path to the special remote can be relative to the git repository.
It can not store something, and rely on an environment variable being set, or some program it's using having a config file elsewhere.