Memorizza i pacchetti Nuget \ NPM in VCS con origine o no?

1

È buona norma archiviare i pacchetti Nuget o NPM (o altri ) nel controllo sorgente con l'origine, o conservarli in qualche altro posto?

Il mio istinto dice che appartengono al sorgente, tuttavia un pacchetto sarà probabilmente versione meno spesso dell'origine, cioè quando viene creata una versione di rilascio.

Mi chiedo cosa facciano gli altri.

    
posta BanksySan 01.11.2016 - 20:57
fonte

3 risposte

2

Ti suggerisco di non farlo per i seguenti motivi:

  • Possono occupare molto spazio nel tuo sistema di controllo della versione
  • Non sono necessari perché dovrebbero essere recuperati come parte del processo di compilazione
  • Di solito non ti interessa la cronologia di questi file
  • In genere i sistemi di controllo delle versioni gestiscono male i dati binari

I vantaggi che li memorizzano nel controllo del codice sorgente sono:

  • Potresti non avere accesso a una connessione Internet, ma hai accesso al controllo del codice sorgente
  • Può risparmiare un po 'di tempo sulla build iniziale se la tua connessione internet è lenta
risposta data 01.11.2016 - 21:19
fonte
1

No. Non memorizzarli accanto al codice sorgente. La maggior parte dei VCS sono costruiti per gestire file di testo, non binari.

Tuttavia , probabilmente dovresti configurare il tuo server dei pacchetti locale e fare in modo che la tua build recuperi le tue dipendenze da lì. Ti dà la rete di sicurezza per evitare problemi come questo . TL; DR: Un ragazzo inedito 17 righe di codice e ha rotto Internet. Questo non sarebbe successo se tutti avessero preso il mio consiglio e mantenuto il proprio server dei pacchetti.

    
risposta data 01.11.2016 - 23:08
fonte
0

Come regola generale, non memorizzi le risorse artefatti nel tuo sistema di controllo della versione, perché dovresti essere in grado di ricostruirle dall'origine, se necessario.

Un'alternativa è caricare i tuoi artefatti in una posizione nota, che può essere sottoposta a backup (o qualcosa come Amazon S3, che ha spazio di archiviazione ridondante). Un'altra alternativa, di solito migliore, è utilizzare un gestore di repository, come Nexus .

In pratica, se si dispone di un sistema di controllo della versione centralizzato, non importa se si memorizzano le risorse nel repository o meno, a condizione di strutturare il VCS in modo che gli utenti non debbano scaricarlo. Con Subversion, ad esempio, puoi avere un albero separato per gli artefatti (insieme a trunk / branches / tags).

Tuttavia, se si utilizza un VCS distribuito, come Git, sicuramente non desidera memorizzare gli artefatti nel repository. Il motivo è che scarichi il repository intero con Git, incluse tutte le versioni obsolete di tutti i file. Ciò può richiedere un tempo spiacevolmente lungo anche se contiene solo il codice sorgente (prova ad esempio l' SDK Java AWS per esempio ).

    
risposta data 01.11.2016 - 21:58
fonte

Leggi altre domande sui tag