Alcuni avvertimenti:
- Davvero non dovresti memorizzare le librerie nel tuo sistema di controllo dei sorgenti. Soprattutto le librerie di terze parti. A seconda della lingua e degli strumenti che stai utilizzando, ci sono molti modi per evitare di farlo, ma questa è un'altra domanda.
- Riconoscere che il repository Subversion utilizza l'equivalente di collegamenti internamente, quindi l'unica volta che un file viene effettivamente duplicato è quando viene modificato. Se si esegue il commit di un file nella versione 100 del repository, ogni ramo basato su tale versione farà riferimento allo stesso file (a meno che e fino a quando non si impegna una nuova versione).
- Tu non vuoi Subversion per creare collegamenti simbolici sul client. Si desidera che ciascun ramo sia autonomo, in modo da non modificare accidentalmente un file condiviso. Tuttavia, tieni presente che Subversion gestirà i collegamenti simbolici che tu crei.
Con questi in mente, e con l'obiettivo di spostarti verso un mondo in cui non tieni le tue librerie nel repository source , ti consiglio di creare directory separate nella parte superiore del tuo repository:
/libraries
/project-1
/trunk
/tags
/branches
Questa è una delle funzionalità poco apprezzate di Subversion: puoi controllare qualsiasi sottostruttura arbitraria del repository in qualsiasi directory arbitraria sul tuo filesystem locale.
Quindi, come gestisci la separazione di librerie e sorgenti? Dipende nuovamente dalla tua lingua e dai tuoi strumenti. Può essere semplice (e brutto, e appena mantenibile) come directory lib
nel tuo progetto che contiene i link simbolici alla directory libraries
.
È meglio usare uno strumento di compilazione che recuperi i riferimenti bibliografici da un file di configurazione. Ciò consentirà di aggiungere facilmente librerie nel repository e consente a diverse versioni di progetto di utilizzare diversi set di librerie.