Проблемы gofmt и diff/VCS?

У меня есть вопрос об инструменте Go gofmt , который форматирует автоматически вывод программ в соответствии с официальными спецификациями Go (например, вы не можете спорить о том, где скобки должны идти в Go, потому что это, видимо, зафиксировано спецификациями).

На следующей странице:

http://golang.org/doc/effective_go.html

в абзаце «Форматирование» написано, что:

В качестве примера, нет необходимости тратить время на выстраивание комментариев на поля структуры. Гофм сделает это для тебя. Учитывая объявление

type T struct {
    name string // name of the object
    value int // its value
}

gofmt выстроит столбцы:

type T struct {
    name    string // name of the object
    value   int    // its value
}

Однако я не понимаю, как это могло бы сыграть хорошо с diff и VCSes.

Например, если бы у меня была новая строка:

confuzzabler int // doo doo be doo

и я запустил diff , я должен был бы получить следующее:

2d1
<     confuzzabler int // doo doo be doo
7d5
< 

И жизнь была бы все хорошо: diff показывает единственную линию, которая изменилась.

Однако если я снова запускаю gofmt , я получил следующее:

type T struct {
    confuzzabler int    // doo doo be doo
    name         string // name of the object
    value        int    // its value
}

И теперь я повторно запускаю diff и получаю следующее:

2,4c2,3
<     confuzzabler int    // doo doo be doo
<     name         string // name of the object
<     value        int    // its value
---
>     name    string // name of the object
>     value   int    // its value
7d5
< 

Что является очень запутанным и вводящим в заблуждение diff выводом, потому что изменилась только одна строка.

Как вы имеете дело с этим как разработчик Движения?

5
задан SyntaxT3rr0r 8 September 2011 в 13:08
поделиться