Quale livello di qualità nella cronologia del commit posso / devo prevedere / applicare?

7

Ho lavorato come sviluppatore solitario per molto tempo. Durante questo periodo, ho sviluppato un modo di formulare e ordinare i messaggi di commit: prima Refactor, descrivere esattamente il motivo del commit nel messaggio, link al tracker del problema, ... C'è persino uno script per creare diversi tipi di log delle modifiche (pubblico, azienda interna, sviluppatore) dalla cronologia dei commit. In questo modo, lo so sempre, quando e perché il codice nel codebase è cambiato allo stato in cui è ora.

Con l'avvento del rebase interattivo e il riordino dei commit, posso facilmente assicurarmi che la cronologia (e, quindi, la documentazione) appaia esattamente nel modo in cui voglio che sia. Il codice errato non entra nemmeno nella cronologia. Quindi, ogni commit ha il suo scopo ben definito.

Mi ci sono voluti anni per evolvere questa pratica, che considero buona. (È vero?) Tuttavia, applicarlo alle modifiche al codice di qualcun altro (ad esempio, riscrivere la cronologia delle modifiche di qualcun altro) è, per me, un compito che richiede molto tempo. Ho provato questo per identificare modifiche non necessarie o addirittura errate. La dimensione totale della patch in questione è leggermente troppo grande per essere rivista come una singola unità e ci sono alcune modifiche al codice discutibili.

In effetti, risulta che non posso permettermi di controllare il codice base come un "dittatore". Costa solo troppo tempo. Quindi mi piacerebbe perdere il controllo mantenendo una buona qualità del codice. Al momento, non vedo come ottenere ciò.

"Quanto pulito" dovrebbe essere la storia di un progetto? Quale formato e granularità per i commit dovrei richiedere? Dovrei chiedere allo sviluppatore di riformattare la cronologia (ad es. Per dividere un commit), anche se richiederebbe un'istruzione su come dividere un commit dopo il fatto? Devo insegnare agli sviluppatori a lavorare su rami delle funzionalità ? È possibile aiutare modelli di commit ? Con quale frequenza dovrebbero essere rivisti i cambiamenti degli altri?

    
posta krlmlr 11.03.2012 - 02:39
fonte

4 risposte

3

Poiché non stai più volando da solo, dovresti prima chiedere alla tua squadra.

Non c'è una risposta giusta a questa domanda, dipende non solo dal tuo prodotto, ma dalla tua squadra. Formulare un insieme di regole, meglio per rinforzare quelle importanti (ad esempio, il codice commette deve avere un numero di tracciamento) e incoraggiare uno stile per tutto il resto.

Dovrai imparare a fidarti del tuo team e accettare che fare cose diverse da come vuoi non sia sempre sbagliato.

    
risposta data 11.03.2012 - 05:50
fonte
4

Dipende da quanto sono buone le informazioni nel tuo tracker di problemi.

Se ogni singolo cambiamento è documentato nel tracker del problema e collegato al problema, allora non è VITALMENTE importante avere la modifica descritta nella cronologia del commit. Certo, un one-liner aiuta sempre. Ma a condizione che chiunque sia curioso possa trovare una descrizione del cambiamento, oltre alle ragioni del cambiamento, seguendo il link al tracker dei problemi, penso che sia sufficiente per la maggior parte degli scopi.

Ovviamente, se di tanto in tanto si verificano cambiamenti che non arrivano nel tracker dei problemi; o se le informazioni nel tracker dei problemi sono scadenti, è molto più importante avere una cronologia di commit molto dettagliata.

    
risposta data 11.03.2012 - 03:16
fonte
4

In genere è più semplice evitare di modificare la cronologia. Può essere fatto anche in un ambiente di squadra, ma richiede molto lavoro per poco beneficio e introduce un rischio di perdita di dati.

Avrai alcune commit incomplete e non costruite, ma va bene fintanto che sono su un ramo di sviluppo. Aggiungi il commento della documentazione della funzione quando unisci il ramo di sviluppo in master, che contiene solo il codice completato.

    
risposta data 12.03.2012 - 01:45
fonte
0

Pensa agli obiettivi di alto livello. Dai alla tua squadra quegli obiettivi. Non dire loro come realizzarlo.

Ad esempio, se l'obiettivo di alto livello è la documentazione delle funzionalità del prodotto, digli di farlo. Se il tuo modo automatizzato è il modo migliore a cui possono pensare, lo sceglieranno. Se c'è un modo migliore, lo sceglieranno.

Non solo questo riesce a raggiungere l'obiettivo almeno quanto a modo tuo, rende la squadra più felice perché prende una decisione.

    
risposta data 15.10.2018 - 21:45
fonte