È possibile configurare git diff per rispettare indentazione e sintassi? Non sto parlando di ignorare indentazione e spazi, ma piuttosto di usare righe vuote, livelli di indentazione e possibilmente parentesi, per aiutare ad abbinare le vecchie linee a nuove linee.Algoritmo git diff che non strappa le funzioni a parte? (diff. lingua)
E.g. git diff spesso attraversa funzioni e la loro docblock, in questo modo:
class C {
/**
+ * Goes to the bar.
+ */
+ function bar() {
+ return 'bar';
+ }
+
+ /**
* Gets your foo up to date.
*/
function foo() {
Quando io preferirei
class C {
+
+ /**
+ * Goes to the bar.
+ */
+ function bar() {
+ return 'bar';
+ }
/**
* Gets your foo up to date.
*/
function foo() {
In questo esempio è ancora abbastanza innocuo, ma ci sono esempi in cui funzioni e la loro docblock sono davvero squarciato a causa della ingorda e ingenua implementazione della diff.
Nota: ho già configurato *.php diff=php
in ~/.gitattributes
.
EDIT: Un altro esempio: diff Qui git mescola un docblock proprietà con un metodo di docblock:
/**
- * @var int
+ * @param string $str
*/
Ho il sospetto la risposta sarà in cui l'algoritmo diff si sceglie, ma non riuscivo a trovare uno che ha lavorato nel modo desiderato. – sevenseacat
Come scegli un algoritmo? – donquixote
La pazienza ha qualcosa a che fare con questo? – donquixote