non effettua il check in dalla root del progetto

7

Ogni volta che eseguo il check-in, effettuo sempre il check-in da root del progetto ... cioè controlla tutti i file nella mia copia di lavoro, quindi dopo il check-in il repository di controllo del codice sorgente contiene esattamente lo stesso insieme di file che ho appena terminato di testare nella mia copia locale. Mi assicuro inoltre che il controllo del codice sorgente sia impostato per contrassegnare i file locali che sono non nel controllo del codice sorgente. In generale, ci sono nessuno di questi file ... se ci sono, li aggiungo al controllo del codice sorgente o li contrassegno come "ignorati". Controllo anche tutte le mie modifiche insieme in un unico check-in.

Molti colleghi si registrano in modo molto diverso. Selezionano con cura ogni file per il check-in, come se fossero un maestro gioielliere che seleziona solo le gemme migliori da inserire nella corona reale, e controllano ciascuna di esse come un check-in separato. Si basano solo sulla loro memoria per capire quali file devono essere controllati, o specialmente aggiunti al controllo del codice sorgente.

I risultati sono abbastanza prevedibili ... frequenti build falliti perché dimenticano di aggiungere i loro nuovi file al controllo del codice sorgente o dimenticano di archiviare un file modificato (in particolare i file di progetto modificati).

Ne ho parlato a loro e non sembrano mai cambiare. Quando l'ho menzionato al responsabile della squadra ha detto, "questo è solo un modo diverso di lavorare". A cui potrei rispondere: cosa succede se voglio guidare la macchina con gli occhi chiusi? È solo "un modo diverso di guidare"?

Ho ragione di essere infastidito da questa pratica?

    
posta JoelFan 31.10.2010 - 20:12
fonte

6 risposte

11

Non essere disturbato dalla pratica di controllare i singoli file - se qualcuno può farlo e farlo funzionare, va bene.

Fai essere infastidito da persone che controllano build non funzionanti. La preoccupazione principale è il risultato. Affrontare la causa principale è assolutamente una buona idea, ma il miglior primo passo è trovare la motivazione appropriata per interrompere il controllo del codice non funzionante.

    
risposta data 31.10.2010 - 21:14
fonte
4

Se le build rotte sono un problema, ti suggerirei di evangelizzare le build automatizzate per la tua squadra. Se qualcuno controlla un file che interrompe la compilazione, una build automatizzata ti dirà immediatamente, piuttosto che aspettare che arrivi il prossimo ragazzo e scoprirlo, trascorrendo 15 minuti a rintracciare la persona che ha effettuato il check-in ha rotto la build (perché potrebbe non essere stato l'ultimo check-in!) e così via ...

Se le persone eseguono il check-in dei file uno alla volta, è possibile ritardare la creazione automatica di alcuni minuti dopo aver rilevato un check-in, per consentire alle persone di archiviare il resto dei propri file. Anche questa è causa di preoccupazione (domanda: inseriscono i commenti appropriati nel messaggio di commit?), Ma non è un grosso problema come la rottura della build.

    
risposta data 31.10.2010 - 23:53
fonte
3

Sì, penso che tu abbia ragione.

Nel migliore dei casi (se lo fanno sempre correttamente) quello che stanno facendo è solo un modo più lento di fare ciò che stai facendo.

Il problema più grande è che sta esponendo meno delle pratiche di lavoro ideali. In primo luogo sembra che stiano lavorando su più di una cosa alla volta - quindi piuttosto che lavorare in piccoli passi, stanno facendo dei grandi cambiamenti che sono irrilevanti e quindi devono fare qualche altra operazione nel mezzo e commetterlo. O forse non si stanno ripulendo da soli e le loro modifiche locali senza commit hanno tutti i tipi di cianfrusaglie (grandi blocchi di codice commentato, metodi ridondanti, roba rotta che era solo un esperimento temporaneo).

Ho lavorato con persone che fanno questo ed è sempre un incubo: la situazione peggiore è quando hanno una discarica non accettata localmente, quindi quando aggiornano la loro versione locale viene borked, ma alcune delle cose che vogliono mantenere sono nel stessi file della spazzatura. Di conseguenza, si perdono nel sistemare le cose che vogliono tenere da quelle che vogliono ripristinare.

    
risposta data 31.10.2010 - 20:24
fonte
2

Le liste dei cambiamenti sono un concetto fantastico. Solo una serie di modifiche coerenti (che risolve una cosa) dovrebbe far parte di una singola lista di modifiche che viene controllata insieme.

Per aggiungere alla mia risposta: Idealmente dovresti essere in grado di creare un elenco di modifiche dei tuoi file, passarlo a un elenco pulito (completamente sincronizzato con il repository) applicare l'elenco delle modifiche e crearlo prima del check-in. Se i tuoi compagni di squadra non si prendono la briga di farlo, fanno parte del processo di revisione del codice.

    
risposta data 01.11.2010 - 05:48
fonte
1

Lasciando il problema ortogonale di come non dimenticare di aggiungere i file a parte, il tuo approccio può portare ad un altro problema: verificare accidentalmente le modifiche che erano solo per test ecc.

La selezione manuale dei file di origine (o delle sottodirectory) per il commit è un approccio possibile che può essere eseguito in modo responsabile e senza interruzioni regolari delle build (utilizzando le informazioni sullo stato del VCS). Il vero problema qui è diffondere il changeset su molti diversi check-in, uno per ogni file. Ciò porterà inevitabilmente a difficoltà quando la cronologia delle versioni è necessaria per qualsiasi cosa.

    
risposta data 01.11.2010 - 04:38
fonte
1

È possibile lavorare un po 'sciatta se si dispone di buoni strumenti per evitare il verificarsi di cattive build. Generalmente questo manterrà la squadra più felice che richiedere una vigilanza costante.

Configurare una build continua è il primo passo. Se le build rotte sono un problema, lo rivelerà.

Quindi potresti scrivere uno script di invio che, dato un elenco di file, controlla il project head in una nuova directory, li aggiusta, esegue test e controlla i file insieme se passano. Quindi possono scegliere se preferiscono, purché utilizzino lo script di invio.

    
risposta data 01.11.2010 - 05:36
fonte

Leggi altre domande sui tag