Tuesday, August 21, 2012

One git to rule them all ...

Noticed how apparently simple things tend to turn into giant mess if left unattended ? That seems to be the case with game art as well. Revision, recoveries, distributed development and project shifts have turned my 4 sprite files into a nightmare of name-collisioning fellows. Giiiit tooo the Rescuuue!

Petit rangement d'été grâce à Cyril qui maitrise mieux git que moi. A partir de tous les répertoires DATA (et des cartes-mémoire de mes DS), je voudrais avoir un endroit unique où il fait bon vivre pour les sprites et autres maps, où les duplicatas ne seraient plus un problème, pas plus que les redondances dans les noms.
Première chose: activer la syncrhonisation "git" sur un des répertoires 'DATA' d'une de mes machines.

cd DATA
git init
git add *.spr *.SPR
git commit -a
Bien. Maintenant, créer l'espace unique ... le paradis des sprites.
mkdir ../DATA.git ; cd ../DATA.git
git --bare init
cd - # goes back to DATA
git remote add origin /path/to/DATA.git/
git push origin master

Il sera désormais dénommé "master", hébergé sur la machine host. Depuis mon portable, je pourrai donc faire un "clone" de mon jeu de données pour y ajouter les fichiers détenus localement:
git clone host:/path/to/DATA.git/
cp ~/DS/*.spr
git add *.spr
git commit -a

Une fois le "git local" préparé, je synchronise la copie-maître avec git push, tout simplement. Le répertoire DATA d'origine peut aussi accepter les nouveaux-venus via git pull à condition d'avoir copié la section [branch "master"] du fichier .git/config

Reste à faire le ménage et à structurer ça par projet plutôt que par provenance ... sur une branche parallèle, sans aucun doute.

(à relire: https://www.jesuisundev.com/comprendre-git-en-7-minutes/ )

2 comments:

PypeBros said...

one http://techblog.zabuchy.net/2011/transfer-only-selected-file-types-with-rsync/ to find them and in the repository RsYNc them

PypeBros said...

rsync -av --include='*/' --include='*.png' --exclude='*' source/ destination/ --prune-empty-dirs

do not forget '*/' or it won't recurse into directories