aboutsummaryrefslogtreecommitdiff
path: root/SETUP.md
blob: 09df9ccba1826d1b4b53e94563656491314b41ae (plain)

Setting up digital media masters

Digitally stored media master files are often relatively large, and are more likely used as-is than edited.

We use git-annex to track such files.

As an addon to git, some of the interaction is done through git commands, while some is done using git-annex-specific commands.

Paths

You are recommended to use path suffix "annex" for media master projects. Examples:

  • ~/public_annex/home-videos
  • ~/private_annex/friends-snoring
  • ~/shared_annex_family/xmas_photos

Create

To turn a folder into a git repository (see also alternative of (cloning)[#Clone] an existing project), go into the folder, and initialize its git and git-annex databases:

git init
git annex init

To use git-annex only for large files (git for smaller ones), add e.g. the following to file .gitattributes:

* annex.largefiles=((largerthan=100kb)and(not(mimetype=text/*)))
*.svg annex.largefiles=nothing

Finally (save)[#Save] all content:

git annex add .
git commit -m "Initial commit"

(final git commit is implied by git annex sync or git annex move)

Clone

To collaborate on a shared git repository, first create a local clone from the shared location, and tell git-annex to use it:

git clone git://[[!template id=githost]]/example
git annex init

Then from time to time syncronize, ensuring that all content exists both locally and remotely:

git annex sync --content --all

Alternatively (e.g. on slow/expensive network), syncronize only metadata and only with nearest clones:

git annex sync

Alternatively (e.g. on small host), push the content to only be remote without keeping a local copy:

git annex move .

Publish

To publish a git repository initially created locally, first create a new empty git and git annex publicly, then tell your local git where its new origin will be, and finally push your local git and git annex into its new public location:

ssh [[!template id=githost]] git init --bare --shared /srv/git/[[!template id=githost]]/example.git
ssh [[!template id=githost]] GIT_DIR=/srv/git/[[!template id=githost]]/example.git git annex init
git remote add origin [[!template id=githost]]:/srv/git/[[!template id=githost]]/example.git
git push --set-upstream origin master
git annex sync --content --all

References

  • [media-master][Source of this document]

[media-master]: https://source.redpill.dk/media-master. "Digital media master material"