diff options
Diffstat (limited to 'USE.md')
-rw-r--r-- | USE.md | 98 |
1 files changed, 7 insertions, 91 deletions
@@ -1,59 +1,14 @@ # Using digital media masters -Master files - -either original sources or as close as possible - -are precious and should be carefully tracked. +Digitally stored media master files +are often relatively large, +and are more likely used as-is than edited. -Digital media files - -e.g. photos, videos, music - -are often large and binary encoded, -which poses special challenges for their tracking. - - -## Git-annex - -Digital media masters are tracked with git and git-annex. - -Git is a version control system - -a repository for historic versions of file contents of a folder. -Git-annex is an extension to git, -better handling large files. - - -### 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 --version=7 - -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)) +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. ## Status @@ -80,45 +35,6 @@ and then archive their (changes to) content: (final `git commit` is implied by [`git annex sync` or `git annex move`](#clone)) -## 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 --version=7 - -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 - - ## Access While main purpose of git-annex is to store large media elsewhere, |