Sono un committer abituale e ho trovato che mi va bene, ma devo ammettere che i miei messaggi di commit sono quasi sempre come,
Age: 9 mins [*] Working on implementing and testing PaintSystem.
Age: 17 mins [*] Working on implementing and testing PaintSystem.
Age: 37 mins [*] Working on implementing and testing PaintSystem.
Age: 52 mins [*] Working on implementing and testing PaintSystem.
Quindi non posso dire esattamente che fare un commit così frequente e abituale alla mia filiale (mercuriale) abbia esattamente incoraggiato i registri di commit più dettagliati. A volte eseguo addirittura il commit del codice a metà se, ad esempio, mia moglie mi chiede di uscire per cena, a quel punto copierò in tutta fretta e utilizzerò il messaggio di commit "Working on [...]" precedente.
I miei schemi di log di commit sono in genere, "Working on [...] Working on [...] Working [...] Completed [...] Started working on [...] Working on [...] Completed [...] Started working on [...]"
Il rovescio della medaglia però mi ha salvato il sedere. A volte mi imbatto in un caso limite che non ho previsto e non ho potuto testare, a quel punto i frequenti commit mi aiutano a capire esattamente dove ho introdotto l'errore.
Quindi non conosco le migliori abitudini e certamente non sono in grado di ascoltare le abitudini di registrazione dei commit ideali, ma posso certamente dire che l'impegno più frequente può sicuramente aiutare quando è necessario eseguire un regressione.
Should each one-line change get a commit?
Ho già effettuato modifiche su una sola riga, ma di solito sono complicate e forse ho avuto poco tempo. I miei impegni non sempre assomigliano a unità di lavoro o cambiamenti perfetti e completi. Come detto, a volte sono solo il risultato di mia moglie che mi chiede di andare fuori a cena inaspettatamente.
TBH molti dei miei commit che seguono che il pattern di "Working on [...]"
log non sta modellando unità coerenti di cambiamento (perché spesso non riesco a trovare un messaggio migliore di "Working on [...]"
) ma solo il risultato di me che riprendo fiato, Mi piace farmi una tazza di caffè. Il messaggio "Completed [...]"
indica la fine di quell'unità di lavoro, e lì scrivo spesso un messaggio molto più dettagliato insieme ai primi messaggi di tipo "Started working on [...]"
quando inizio a lavorare su qualcosa. Se la media si impegna come una volta ogni 15 minuti, allora i messaggi "Lavorare su [...]" sono più simili all'intervallo per ciò che qualcuno potrebbe commettere in un ingombrante commit con un messaggio più dettagliato.
Should I commit before any test (e.g., at least for syntax/compiling
errors and then have to totally undo it; as the idea didn't work or
the message is a lie)?
Vado avanti e lo commetto prima ancora di eseguire i test a volte (di nuovo se avessi un evento inaspettato). Inoltre, anche se sono solo, spingo su un server (uno solo che gira qui a casa su una LAN) che fa CI. Potrebbe sembrare eccessivo, ma non so, mi sono così abituato ad appoggiarlo nei miei ex luoghi di lavoro. Inoltre non voglio essere preoccupato di dover eseguire tutte le mie unità e test di integrazione a mano ogni volta. Mi piace avere tutto legato solo alla spinta. Se un test fallisce è abbastanza facile lavorare in un modo in avanti in cui eseguo la regressione, correggere l'errore nell'ultimo rev e continuare ad andare avanti. Detto questo, faccio almeno build il codice contro una build di debug prima che io commetta.
Should I make sure I commit each morning/afternoon before I stop
working for dinner while its still fresh?
Mi piace commettere prima di uscire e fare una pausa tra la programmazione. Non ho davvero pensato molto al motivo preciso fino a quando non ho incontrato questa domanda. Suppongo che sia per impedire a me stesso di riprendere da dove ho lasciato senza un registro di commit lì al posto di dove ho lasciato fuori che posso diff e così via. Hmm, ho bisogno di risponderti su questo dato che forse non è teoricamente necessario dato quanto frequentemente mi impegno. Mi sento ancora più a mio agio a commettere e spingere prima di lasciare il computer per qualsiasi motivo. Alcuni potrebbero essere l'ex paura psicologica di, diciamo, il computer che prende fuoco dopo che me ne vado e di avere i project manager nei giorni in cui stavamo usando SVN con gli sviluppatori a volte andando avanti per settimane senza commettere il respiro sul collo e ricordando costantemente dobbiamo controllare il codice il più spesso possibile ricordandoci che il nostro codice è di proprietà dell'azienda. Inoltre è un po 'più efficiente, specialmente con la spinta, in modo che il mio processo CI possa iniziare a eseguire tutti i test mentre sono via, così posso tornare e vedere i risultati.
Oh, a volte mi ubriaco un po 'dopo che me ne vado e di solito è una cattiva idea cercare di scrivere codice complesso mentre sono ubriaco (anche se non sempre, una volta mi è venuto in mente un bel menu di menu contestuale dopo un momento di eureka mentre ero ubriaco, ma avevo solo 6 birre e non era così complesso da codificare). Se provo a farlo, almeno ho commesso il codice scritto in modo sobrio prima di partire per tornare indietro invece di mescolare il codice ubriaco con il codice sobrio, a quel punto il mio registro di commit potrebbe leggere come, "Reverting back to code written before Jagermeister shots."
I don ' Lo faccio molto spesso a meno che non mi sia venuta l'ispirazione per il codice ubriaco, ma in quei rari casi, è stato davvero d'aiuto che ho commesso qualcosa prima che uscissi e mi fossi ubriacato.