Repository groups

Each repository you configure git-annex to use is a member of a # repository group. Each group of repositories has a different # purpose.

Let's start with the client repositories. These are the # repositories that contain files that you can directly use. Generally # you'll have one client repository per computer. The whole point of # the git-annex assistant is to keep these repositories in sync as you # change files, add files, delete files, etc.

The next most important repository group is the # transfer repositories. # These are used to transfer files between clients, when the clients # cannot directly talk to one-another. Transfer repositories only # hold the files that need to be synced to other repositories, so they # are relatively small.

You can get along without any full backup repositories, but # they're a useful safeguard. These repositories accumulate every file they can get ahold of. A large removable drive makes a good full backup # repository.

Similarly, the incremental backup repositories try to back up # every file, but these only accumulate files that are not already # present in a full or incremental backup.

Next we come to the archive repositories. The archive repositories coordinate together, so that each file is # archived in only one place. When you move files into a folder named # "archive", they'll be moved to an archive repository, and removed from # all your client repositories. This is handy if you have old files # you don't need anymore, but want to keep archived for later. # When you copy or move a file out of an "archive" folder, it'll be # retrieved from the archive repository.

The small archive repositories are like other archive # repositories, but smaller. While archive repositories normally accumulate # every file they can, small archive repositories only accumulate files # once you put them in an "archive" directory.

Sometimes useful for devices like cameras are the # source repositories. Repositories in this group only retain # files until they can be moved to some other repository, like a client # or transfer repository.

If you configure a repository that can be viewed by the public, # but you don't want all your files to show up there, you can # configure it to be a public repository. Then only files # located in a directory you choose will be sent to it.

Finally, repositories can be configured to be in manual mode. This # prevents content being automatically synced to the repository, but # you can use command-line tools like `git annex get` and `git annex drop` # to control what content is present.