GIT или SVN Комментарий, добавляемый в файл после коммита или наоборот - PullRequest
0 голосов
/ 01 ноября 2011

Мне любопытно, можно ли в GIT (или Mercurial) или SVN добавить ваши комментарии из комментария к коммиту. Например, если у меня есть файл ABC.cpp и я сделаю коммит -m "hello world", в конце файла ABC.cpp к нему будет добавлен комментарий фиксации? Или наоборот? Например: GIT или SVN смотрят на значение тега в конце кода ABC.cpp и добавляют его в качестве комментария к коммиту?

Спасибо

Ответы [ 3 ]

3 голосов
/ 01 ноября 2011

Все еще да , вы можете попытаться получить его в Git / Mercurial, но Грег в любом случае прав - это плохие манеры сегодня.

Просто намеки, а неготовые к использованию решения

  • в случае Git

вы можете написать свои собственные фильтры для выполнения подстановок в файлах при фиксации / извлечении.Это «чистые» и «грязные» фильтры.В файле .gitattributes вы можете установить фильтр для определенных путей, а затем настроить сценарии, которые будут обрабатывать файлы непосредственно перед их извлечением («smudge», см. Рис. 7-2) и непосредственно перед их фиксацией («clean », см. рис. 7-3)

( Pro Git , раздел« Расширение ключевых слов »).

  • в случаеMercurial, расширение ключевых слов и тщательно разработанное ключевое слово, которое перехватывает сообщение коммита

    [keywordmaps] ... Commitmess = {desc}

in.hgrc, который позволит вам использовать $ Commitmess $ в источниках

1 голос
/ 01 ноября 2011

Один из моих любимых примеров того, почему это плохо, пришел на сайт CVS.В CVS, если вы добавите «$ Log $» в свой файл, он помещает комментарий фиксации в строку сразу после этой строки.Это все равно, что поместить вывод "cvs log" в ваш коммит.

Какой-то яркий человек вставил в качестве комментария коммита "Добавлена ​​строка $ Log $ в файл".Таким образом, прямо под комментарием к коммиту была строка:

Added $Log$ line in the file

В следующем коммите оба экземпляра $Log вызвали повтор комментирования.И так как один из этих комментариев содержал «$ Log», у нас теперь было четыре экземпляра «$ Log $».

Каждый раз, когда была сделана фиксация, мы удваивали количество строк в $ Log.$ entry.Удаление лишних строк $ Log $ не помогло, потому что следующий коммит вернул их обратно и снова удвоил.

В конце мне пришлось отредактировать файл ,v в хранилище, чтобы уничтожитьвесь $ Log $ mess.

В документации Subversion они высказывают свое мнение о $ Log $ очень ясно .

1 голос
/ 01 ноября 2011

Нет, это то, что раньше делали в дни CVS (и ранее), но сегодня это обычно считается плохой практикой.Основная проблема заключается в том, что это затрудняет объединение очень , поскольку каждое изменение файла автоматически конфликтует с любым другим изменением.

...