Dove dovremmo inserire le librerie esterne nel nostro SVN?

7

Abbiamo la seguente struttura SVN.

  • Progetti: il nostro lavoro
  • Clienti: i progetti per i clienti devono essere diversi
  • Condiviso: librerie condivise che abbiamo creato
  • Documenti: documenti che spiegano come lo sviluppo del software scorre all'interno dell'azienda (non ha comunque nulla a che fare con la mia domanda)

Dove dovremmo mettere le librerie esterne? Diciamo dai progetti opensource ecc.

    
posta Odys 23.11.2011 - 09:37
fonte

2 risposte

7

Alcune persone usano Maven o soluzioni simili che scaricano automaticamente le librerie da vari repository secondo necessità . Potrebbe essere conveniente, ma in questo caso sei dipendente da repository gestiti da terze parti. Ottenere alcune librerie meno popolari aggiornate potrebbe essere lento e, naturalmente, la maggior parte delle librerie commerciali non sono disponibili nei repository pubblici.

Abbiamo semplicemente messo le librerie di terze parti nel nostro repository sotto /lib/libraryname/tags/1.2.3/ e, usando svn:externals , porta queste librerie dove sono necessarie. Potrebbe essere un po 'goffo, è necessario un po' di lavoro manuale per aggiornare le librerie, ma almeno il tuo software è totalmente sotto il tuo controllo.

In senso tecnico, le librerie condivise sono librerie condivise a prescindere da chi le ha create (tu o qualcun altro), quindi nella tua struttura le inserirò in /company/shared/3rdparty/etc.

    
risposta data 23.11.2011 - 10:26
fonte
1

Invece di rispondere direttamente a questa domanda ti dirò solo alcune idee su come è fatto in ruby:

1) in un root di progetto hai un unico file, che ha un elenco di librerie che vorresti usare con la loro versione. come
"popular lib1, version > 2.0",

"popular lib 2, versione 1.55, archivia in www.aaa.bbb / 1.55.tgz",

"popular lib 3, memorizzata su www.xxx.com/1.git, qualsiasi versione" Quindi

2) lo strumento analizza i requisiti della versione e trova la migliore versione di lib (quindi tutti i requisiti di versione sono abbinati). quindi hai una sorta di cartella ./cache che contiene la copia dei file scaricati.

Quindi per un c # vorrei sempre copiare intere librerie nella cartella principale del progetto, come libs3rdparty / con nome. Non mi piace alcuna sorta di librerie condivise per l'intera azienda, con uno spazio del disco così atroce non ha senso in questo. Come opzione (per rendere più piccola la dimensione SVN) potresti creare un file install.bat che prende le versioni lib da certe posizioni e aggiunge libs3rdparty allo svnignore.

    
risposta data 23.11.2011 - 14:24
fonte

Leggi altre domande sui tag