Repository principale per il progetto Darsena, contenente vari submoduli.
Prima di iniziare, configurare git con le proprie credenziali:
git config --global user.name "Il Tuo Nome"
git config --global user.email "tua.email@esempio.com"Per lavorare con il repository, è necessario configurare una chiave SSH:
- Generare una nuova chiave SSH:
ssh-keygen -t ed25519 -C "tua.email@esempio.com"- Aggiungere la chiave all'agent SSH:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519- Copiare la chiave pubblica:
cat ~/.ssh/id_ed25519.pub- Aggiungere la stessa chiave sia su GitHub che su GitLab (se necessario) attraverso le impostazioni del proprio profilo.
Per clonare il repository con tutti i suoi submoduli:
git clone --recursive git@github.com:grammaton/darsena.git
cd darsenaSe hai già clonato il repository senza i submoduli:
cd darsena
git submodule init
git submodule updatePer ogni sviluppatore, viene creato un branch dedicato nel formato:
darsena-xyz
dove xyz sono le iniziali dello sviluppatore.
Il progetto include due script di utilità per la gestione dei branch e dei commit.
Questo script (check-branches.sh) verifica e crea il branch personale in tutti i repository:
chmod +x check-branches.sh
./check-branches.sh xyz # dove xyz sono le tue inizialiLo script:
- Controlla il repository principale e tutti i submoduli
- Crea il branch se non esiste
- Pusha il nuovo branch al remote
- Fornisce feedback dettagliato sulle operazioni
Questo script (recursive-commit.sh) gestisce i commit in modo ricorsivo su tutti i repository modificati:
chmod +x recursive-commit.sh
./recursive-commit.sh xyz "messaggio di commit" [--push]Caratteristiche:
- Gestione interattiva dei file non tracciati
- Gestione selettiva delle modifiche
- Supporto per commit ricorsivi nei submoduli
- Push automatico opzionale
Y(default): aggiunge il filen: salta il fileq: interrompe il processo
Y(default): aggiunge tutte le modifichen: salta tutte le modifiches: modalità selettiva (file per file)
-
Branch Personale:
- Lavorare sempre sul proprio branch personale
- Mantenere il branch sincronizzato con main/master
- Non committare direttamente su main/master
-
Submoduli:
- Verificare sempre di essere nel branch corretto in ogni submodulo
- Utilizzare gli script forniti per gestire le modifiche
- Committare prima le modifiche nei submoduli, poi nel repository principale
-
Commit:
- Usare messaggi di commit descrittivi
- Verificare lo stato delle modifiche prima del commit
- Controllare che tutti i file necessari siano inclusi
darsena/
├── submodule1/
├── submodule2/
├── ...
├── check-branches.sh
└── recursive-commit.sh
- Clona il repository con tutti i submoduli
- Crea il tuo branch personale usando
check-branches.sh - Fai le tue modifiche
- Usa
recursive-commit.shper committare le modifiche - Crea una Pull Request quando le modifiche sono pronte per il review
Per mantenere il repository aggiornato:
# Aggiorna il repository principale e i submoduli
git pull
git submodule update --init --recursive --remote
# Verifica lo stato dei submoduli
git submodule statusIl progetto include un sistema di build basato su make per la gestione di documenti LaTeX e la generazione di PDF.
-
LaTeX:
- Una distribuzione TeX Live completa
- Il pacchetto
gs-adonis(fornito in_layouts) - Pandoc per la conversione Markdown → LaTeX
-
Utilities:
- Make
- MD5 (per il sistema di caching)
Ogni progetto nell'arsenale deve seguire questa struttura:
progetto/
├── md/ # File sorgente in Markdown
├── tex/ # File LaTeX aggiuntivi
└── img/ # Immagini e altri asset
- Compilazione completa:
make- Compilazione selettiva:
ACTIVE_DIRS="progetto1 progetto2" make pdf- Compilazione singolo progetto:
ACTIVE_DIRS="progetto" make pdf- Pulizia:
make cleanIl sistema utilizza un meccanismo di cache per evitare ricompilazioni non necessarie:
- Monitora modifiche ai file sorgente
- Traccia le dipendenze tra file
- Ricompila solo quando necessario
I PDF generati vengono salvati in:
tipografia/
└── nome-progetto.pdf
I file temporanei vengono gestiti in:
_latex_temp/
- Creare la struttura base:
make init PROJECT=nome-progetto- Aggiungere i file sorgente in
md/ - Opzionalmente, aggiungere file LaTeX in
tex/e immagini inimg/
-
Organizzazione:
- Mantenere i file Markdown in
md/ordinati numericamente - Usare nomi descrittivi per i file
- Documentare dipendenze speciali nel README del progetto
- Mantenere i file Markdown in
-
Compilazione:
- Usare la compilazione selettiva per progetti grandi
- Verificare i log in caso di errori
- Mantenere pulita la directory con
make clean
-
Gestione Assets:
- Ottimizzare le immagini prima dell'inclusione
- Usare formati appropriati (PNG per diagrammi, JPG per foto)
- Mantenere una struttura coerente in
img/
Per problemi o domande, aprire una issue su GitHub: grammaton/darsena/issues
Per creare una nuova nave dell'arsenale parti da qui, poi aggiungi il nuovo
elemento come submodule in arsenale.