È una parte di guardfile dell'ambiente degli sviluppatori privati o del progetto OSS pubblico?

3

Diciamo che ho un progetto open source su github. Ora desidero includere gli strumenti necessari per sviluppare il progetto in modo che altri possano contribuire facilmente. È difficile per me dire quando questi strumenti dovrebbero essere inclusi nel progetto affinché altri possano usarli e quando sono una preferenza personale e parte del mio ambiente di sviluppo privato.

Ad esempio, capisco che un file di configurazione di vim non dovrebbe far parte del progetto in quanto fa parte del mio editor di scelta. Capisco anche che un Gemfile dovrebbe essere parte del repository in quanto è necessario per eseguire il progetto. Ho un problema in cui questi due attraversano.

Che dire di un Guardfile [1]? Questo file compila automaticamente / aggiorna alcune parti del progetto se viene richiamato un comando specifico dalla riga di comando. Alcuni sviluppatori potrebbero avere un IDE o un sostituto che già fa questo, tuttavia la maggior parte sarebbe felice di avere un Guardfile specifico per progetto e su misura.

Sarebbe opportuno aggiungere un file o attraversare la linea dell'ambiente degli sviluppatori?

[1] link

    
posta ZirconCode 04.10.2014 - 04:36
fonte

2 risposte

3

Fa parte del tuo ambiente privato. La maggior parte della gente vuole; alcuni strumenti casuali come guard non sono qualcosa che conosco o mi interessa, né voglio usarli se per qualche motivo sono riusciti a essere installati. Costruisco progetti digitando make , non automaticamente in background.

Tuttavia, non sono d'accordo che i file utili in privato non dovrebbero mai far parte del repository. Molti progetti spediscono un file vim sotto tools/ o qualcosa del genere. Per purezza, però, potresti desiderare di metterli in un repository separato, forse un sottomodulo.

    
risposta data 04.10.2014 - 05:22
fonte
2

TL; DR

I file di build o test di Canonical devono sempre essere inclusi nel repository. I file che dovrebbero essere personalizzati da ogni sviluppatore dovrebbero essere inclusi in modo minimalista all'interno del repository, spesso sotto forma di file di esempio.

Motivi per includere un file Guardfile della linea di base Verbatim

I file necessari per creare o testare la base di codice dovrebbero essere inclusi nel repository. Un file Guard contenente le personalizzazioni necessarie per eseguire correttamente la tua suite di test, come gli argomenti relativi a RSpec, potrebbe quindi avere senso come parte integrante del repository. Tuttavia, il file Guardfile dovrebbe non contenere preferenze personali come lo screen clearing o altre personalizzazioni per sviluppatori.

In molti progetti, un Guardfile standard può essere una cosa perfettamente ragionevole da impegnare, a condizione che tutti i membri del team si aspettino di utilizzare la stessa configurazione. Ciò garantirà che le cose "funzionino" solo dopo la clonazione, ma al costo di implementare una configurazione vanilla su tutte le workstation degli sviluppatori.

Motivi per includere un file di esempio per la personalizzazione

Su progetti in cui la personalizzazione del Guardfile non è necessaria, ha senso impegnare direttamente il Guardfile. Tuttavia, su team o progetti in cui il Guardfile in uso può variare tra gli sviluppatori, spesso è meglio eseguire un esempio come Guardfile.example che gli sviluppatori possono quindi copiare in Guardfile prima modificandolo, assicurando che le singole personalizzazioni non vengano trasferite a monte.

Si noti che questo approccio richiede anche che il nome file per le personalizzazioni sia aggiunto al file .gitignore del progetto, o l'equivalente per il proprio SCM di scelta. Generalmente vorrai che vengano apportate modifiche a Guardfile.example per gli utenti futuri, ma non vorrà che venga eseguito il commit di Guardfile di ogni sviluppatore se fanno qualcosa di comune come git add . quando si impegna un nuovo lavoro.

Lo svantaggio dell'approccio basato sui file di esempio è che richiede un passaggio manuale da parte di ogni sviluppatore per configurare correttamente la catena di strumenti prima del primo utilizzo. Ciò aumenta il carico cognitivo del bootstrap del progetto e può essere facilmente dimenticato o trascurato quando si clona un progetto. Anche se il passo è documentato nel tuo readme, o il tuo progetto include una sorta di script di installazione che include una riga come cp Guardfile{.example,} , dovendo rinominare o configurare i file di configurazione specifici degli strumenti come Guardfile o .rspec prima di poter eseguire il test suite correttamente la prima volta può violare il principio di minima sorpresa per i nuovi membri del team.

    
risposta data 07.02.2015 - 11:36
fonte

Leggi altre domande sui tag