2012-04-19 11 views
6

Un sacco di volte, mi piace modificare alcune righe di codice per rendere più facile il debug, ma in realtà non voglio impegnarle. Ad esempio, disabiliterò alcune caratteristiche fastidiose (come le pubblicità) commentando alcune righe di codice, o imposterò i livelli di log e i filtri solo a quelli a cui tengo, o imporrò un condizionale per essere vero solo così il blocco di codice che voglio eseguire è in realtà tutto il tempo.Git: Come evitare di commettere file modificati solo a scopo di debug?

In Perforce, avrei creato un "elenco di modifiche" per questi file e l'ho etichettato come "NON IMPEGNERE!". Quale sarebbe l'equivalente di questo in Git? Un ramo non funziona perché queste modifiche di debug-only devono esistere con altre modifiche che sto facendo attualmente.

risposta

0

Grazie a tutti per le risposte. Quello che ho finito è scrivere un hook pre-commit in git che controlla la stringa "dont commit" (e altre variazioni) in ciascuno dei file. Se lo fa, allora il commit fallisce, e dovrò modificare quelle linee prima di impegnarsi. Questo perché il codice di debug deve essere trattato su base per-riga, non per file, perché alcuni file hanno sia le modifiche di debug che le modifiche reali da eseguire. (la mia vecchia soluzione con perforce non ha risolto questo problema).

5

Cercare l'opzione --assume-unchanged. C'è un articolo del blog about this che spiega le cose abbastanza bene. E anche this one che menziona la ricerca di tali file ignorati in seguito.

+0

il secondo link ha una spiegazione semplice e facile –

1

Quello che faccio di solito è semplicemente mettere il codice di debug nel proprio commit e ripristinarlo successivamente. Una soluzione più coinvolgente consiste nel creare un ramo intermedio da master, chiamandolo debug. Apporta tutte le tue modifiche di debug nel ramo debug, quindi rendi il tuo ramo di funzionalità fuori da debug. Quando sei pronto per rimuovere le modifiche di debug, basta ribasare il tuo ramo delle funzionalità su master.

0

In realtà non si desidera ignorare quei file, ma ignorare tali modifiche.

Vedo due soluzioni qui:

  1. Restore TESTA

Il comando che sto utilizzando per tale situazione è:

git checkout -- file ... 

Con tutti i file modificati per il debug scopo.

Ripristina il file a partire da HEAD. Quindi puoi tranquillamente fare il tuo git commit -a o qualsiasi altra cosa.

  1. di Tell git chiederti cosa cambia a commettere (per file)

    git add -p.

Vedere #1085162.

Ma sarà comunque necessario rimuovere il codice di debug.

0

Una delle soluzioni che non è universale ma che può adattarsi ad alcuni scenari di flusso di lavoro consiste nell'applicare i filtri di pre-commit di Git (manual, manual + samples).In breve, è solo uno strumento di pre-elaborazione che verrebbe chiamato su tutti i file impegnati prima del commit effettivo. Potresti avere questo meccanismo per rimuovere alcuni modelli come //<NOCOMMIT ... //NOCOMMIT> o qualsiasi altra cosa tu voglia. L'inconveniente è che queste linee di debug possono scomparire quando si ripristina un commit o anche tirare/fondere (non l'ho verificato).

Problemi correlati