Come faccio a raggruppare i file di libreria da utilizzare nelle filiali?

0

Lavoro in un'azienda che ha il suo codice sorgente gestito tramite subversion. La nostra base di codice è enorme (800 MB) ma vogliamo lavorare con la ramificazione. Per quello che ho notato è che quando si dirama, SVN duplica semplicemente il file ogni , il che rende quasi impossibile diramarlo a causa dello spazio.

Vorrei separare la nostra libreria e altri file non modificati di frequente, in modo che possano essere caricati in ciascun ramo e memorizzati una sola volta. Come posso strutturare il nostro repository in modo che la ramificazione non copi ogni singolo file nel repository?

Stavo guardando svn:externals , ma non so se questa è la strada da percorrere.

    
posta Martijn Nosyncerror 07.08.2015 - 15:16
fonte

1 risposta

4

Alcuni avvertimenti:

  1. 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.
  2. 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).
  3. 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.

    
risposta data 07.08.2015 - 18:41
fonte

Leggi altre domande sui tag