Configurazione

Tramite git annex vicfg posso sempre modificare manualmente ogni possibile impostazione!

Repository centrale

Documentazione: repo centrale partendo da zero, Repo centrale tramite clone (problemi a seguire le istruzioni di quest'ultimo).

L'idea è di creare un repository centrale accessibile da ogni macchina via ssh, ecco un riassunto delle operazioni da fare:

  1. creare il repository principale sul server in modalità --bare1 (essenziale)

    • mkdir myrepo
      cd myrepo
      git init --bare
      git annex init origin
  2. copio il repo sul client desiderato
    • git clone ssh://myserver//my/remote/path
      cd path
      git annex init "my new annex"

Posso clonare di nuovo su tutte le macchine che voglio!

Comportamento

Esistono dei comportamenti predefiniti2 personalizzabili ulteriormente, ad esempio:

...

Per impostare il gruppo o la policy:

git annex wanted $repo standard
git annex group $repo manual

Per interrogare la policy semplicemente omettere la regola: git annex [wanted|group] $repo

Regole

Ogni repository è etichettabile in un gruppo. Posso quindi usare per i trasferimenti le policy di un gruppo applicando filtri su di esso (ad esempio devo avere almeno x copie del file sul gruppo, etc).

Ogni repository può inoltre avere assegnate delle preferenze. Queste possono essere le regole standard, oppure posso assegnare parametri diversi via groupwanted, oppure regole tutte sue (wanted).

git annex wanted . standard   <= assegna al local le regole base)

Posso inoltre lavorare direttamente sul file di configurazione via git annex vicfg.

Gestione remotes

Analisi situazione

git annex map --fast

Per dettagli.

Eliminare remote

git annex drop . --from cloud
git annex forget --drop-dead

Backups

git annex numcopies 2
echo "*.ogg annex.numcopies=1" >> .gitattributes
echo "*.flac annex.numcopies=3" >> .gitattributes
echo "* annex.numcopies=3" > important_stuff/.gitattributes

Per info: branchable: backups

Affidabilità del repo

Il repositoty può avere i seguenti livelli di affidabilità (questo condiziona il conteggio delle copie di backup minime):

Direct mode

Per accedere a tale modalità: git annex (in)direct

Vi è il rischio di perdere file causa errori (consigliato git annex untrust .) e non è possibile utilizzare alcuni comandi git.

Se possibile si consiglia di usare invece git annex unlock per modificare i file in locale.

N.B.: in direct mode non sono preservare le versioni precedente, ciò avviene invece in modalità indirect.

Utilizzo

Si lavora sempre su due livelli diversi:

  • la logica di archiviazione (git): dove sono i file, come sono organizzati...
  • l'ubicazione dei file (git-annex): dove risiedono fisicamente i file...

Si possono usare quasi tutti i comandi di git, più qualche comando speciale di annex.

Sincronizzazione

Operazioni sui file

Trasferimento file

Trasferimento automagico

Per anticipare quali siano i prossimi file3

Quindi posso eseguire con git annex get/drop --auto

Spostare e rinominare

Come si fa con git4:

git mv big_file my_cool_big_file
git commit -m moved

I symlink saranno broken fino al momento del commit.

Se però il repository è in direct mode allora semplicemente spostare il file e risincronizzare.

Ignorare file

https://help.github.com/articles/ignoring-files/

File inutilizzati

Da branchable.com:

git annex unused

E quindi per eliminare:

git annex dropunused 1

Ricerca e analisi

Lista di match.

Esempi:

git annex find --lackingcopies 1
git annex find --lackingcopies 1 --not --in .

File not annexed

To check that all files are annexed:

find . -path './.git' -prune -o -type f -print0 | while IFS= read -r -d $'\0' filepath; do git-annex list "${filepath}" | grep -E '^[xX_]{2,}' > /dev/null; if [ $? -ne 0 ]; then echo "${filepath}"; fi; done

To check also that every file that is not unlocked is annexed:

find . -path './.git' -prune -o -type f,l -print0 | while IFS= read -r -d $'\0' filepath; do git-annex list "${filepath}" | grep -E '^[xX_]{2,}' > /dev/null; if [ $? -ne 0 ]; then echo "${filepath}"; fi; done

Hacks

Rimuovere da git file cancellati manualmente

git ls-files --deleted -z | xargs -0 git rm

Assistant

git annex assistan --autostart    <= for daemon
git annex webapp                  <= webapp and daemon

Debian packaging

Manca ancora il bash completion, seppure già presente su github.

Windows package

Status: beta.

Informazioni:

Sitografia

Note

MyWiki: GitAnnex (last edited 2019-05-03 01:33:52 by risca)