Come gestisci la configurazione di più sviluppatori in un progetto?

3

Ho riflettuto ultimamente su come gestisco i cambiamenti di configurazione tra più sviluppatori su un progetto.

Specificamente qui su un progetto Laravel in PHP, ma immagino che ciò si applichi in gran parte a tutti i framework / linguaggi.

In generale, diresti che è una buona pratica non impegnare la tua configurazione? In tal caso, qual è la tua pratica per farlo con il controllo della versione come git?

O imposti ciascuna configurazione come una configurazione ambiente diversa? Per esempio. In Laravel ci sono configurazioni di ambiente, quindi ogni sviluppatore ha una directory con le proprie impostazioni diverse, e questo è ciò che sto attualmente usando. Quindi nel codice puoi impostare come Laravel rileverà l'ambiente in cui si trova. Funziona, mi sto chiedendo cosa fanno altri sviluppatori che lavorano su progetti con altri sviluppatori.

    
posta stilliard 29.11.2013 - 12:59
fonte

6 risposte

4

Lo stai facendo bene

Il vantaggio è che in realtà stai testando i meccanismi che verranno utilizzati durante la distribuzione in altri ambienti; test, staging, produzione, ecc. Ogni sviluppatore verificherà automaticamente che la configurazione specifica per l'ambiente funzioni.

Ho provato l'approccio del modello e non ho verificato la configurazione di ogni sviluppatore. Funziona ma troverai di volta in volta qualcosa che si rompe per tutti.

    
risposta data 09.01.2014 - 17:55
fonte
2

Laravel ha un magnifico supporto integrato per questo. Puoi configurare un ambiente diverso per il computer di ogni sviluppatore. Controlla la pagina seguente per una spiegazione dettagliata: link

Puoi scoprire che cosa il tuo hostname (nella documentazione di Laravel indicava come "nome-macchina-tuo") sta eseguendo echo gethostname(); usando un file PHP vuoto.

Nei nostri progetti abbiamo ambienti di installazione come "john", "peter", "etc". Ciò presuppone che gli sviluppatori non passino da un computer all'altro.

    
risposta data 29.11.2013 - 14:37
fonte
0

Non c'è una risposta semplice a questo, il trucco che ho usato (quando scrivevo php) era che se il progetto era in modalità di sviluppo cercava un file di configurazione esterno in un certo posto fuori dall'ambiente. Proprio come una buona misura una copia standard di questo file era all'interno dell'ambiente in modo tale che quando si ottengono i file sorgente, si otterrebbe una distribuzione dev standard. Altre configurazioni potrebbero essere inserite nel file all'esterno

In questo modo, se nuove configurazioni dovessero essere aggiunte, tutti le avrebbero conosciute dal file standard e potrebbero modificare i loro file secondo necessità. Inoltre nessun problema di git o rischio di cattivi commit.

Sono sicuro che ci sono modi migliori per farlo, ma ha funzionato allora con 20 sviluppatori che lavorano sugli stessi progetti.

    
risposta data 29.11.2013 - 13:11
fonte
0

Configura un sottodominio differente con una propria cartella per ogni ramo di sviluppo di ogni sviluppatore. Eseguilo sul tuo server dev che dovrebbe replicare il tuo ambiente di produzione il più possibile (sistema operativo, ecc.).

Chiedi ai tuoi sviluppatori di mappare un'unità di rete (o di utilizzare l'FTP, che non è l'ideale) e di utilizzarla per accedere alla loro base di codice.

Ora crea una sottocartella di configurazione per ogni ambiente di sviluppo in cui mantieni le poche variabili specifiche. Mantieni il resto in un file di configurazione generale usato da tutti. Carica il file di configurazione specifico in base al sottodominio. Predefinito a quello di produzione se non è impostato alcun sottodominio.

Probabilmente dovrai scrivere alcune righe di codice per mappare la configurazione corretta.

    
risposta data 29.11.2013 - 13:22
fonte
0

Usa le versioni dist dei tuoi file di configurazione e aggiungi nomi di file di configurazione originali a .gitignore (ad esempio, config_prod.ini.dist è sotto controllo di versione e usato come modello per config_prod.ini che è in .gitignore)

    
risposta data 29.11.2013 - 17:37
fonte
0

La configurazione di un'applicazione è una responsabilità diversa rispetto all'applicazione stessa. Non mescolare i due. Il concetto di una variabile di ambiente o ambiente è una variabile a cui si fa riferimento con un singolo nome ma con valori diversi a seconda dell'ambiente, da cui il nome "variabile d'ambiente". La tua applicazione non dovrebbe mai, mai dover controllare quale ambiente è effettivamente in esecuzione, dovrebbe sempre fare affidamento sulle variabili impostate al di fuori di esso per avere il valore corretto per un particolare ambiente. In breve, se il tuo codice deve controllare attivamente su quale ambiente è attivo, lo stai facendo male.

Archiviare la configurazione dell'ambiente al di fuori dell'origine del codice, in un repository separato. In questo modo non sarai incline a prendere scorciatoie e mescolare i due.

    
risposta data 13.12.2013 - 08:29
fonte

Leggi altre domande sui tag