diff options
author | Jonas Smedegaard <dr@jones.dk> | 2024-05-20 09:18:34 +0200 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2024-05-20 09:18:34 +0200 |
commit | 9d41d19622e18954fda0895c63e1eba09908b31d (patch) | |
tree | 158f2ac04e8315a0f08e25c1eeb53b9219f3a748 /SETUP.md | |
parent | 73e838fe6e6f0e0063d509bbbf001199db995e9f (diff) |
separate README and SETUP from USE
Diffstat (limited to 'SETUP.md')
-rw-r--r-- | SETUP.md | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/SETUP.md b/SETUP.md new file mode 100644 index 0000000..cdf3216 --- /dev/null +++ b/SETUP.md @@ -0,0 +1,93 @@ +# 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 --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)) + + +## 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 + + +## References + +* [media-master][Source of this document] + +[media-master]: <https://source.redpill.dk/media-master>. + "Digital media master material" |