Есть ли способ попросить git diff показать имя метода вместо имени класса?
Это беспокоило меня некоторое время, и поиск не дал никаких подсказок.
Выпуск:
Когда я делаю git diff
на файл PHP, содержащий Class
каждое описание блока имеет имя класса без упоминания имени метода.
Например:
@@ -351,7 +351,7 @@ class Session
$form->setError($field, $subpassValid['msg']);
}
// E-Mail address error checking
$field = "email"; //Use field name for email
- if(!isset($subemail) || strlen($subemail = trim($subemail)) == 0){
+ if(!$subemail || strlen($subemail = trim($subemail)) == 0){
$form->setError($field, "* Email not entered");
@@ -373,7 +373,7 @@ class Session
...
Вопрос:
Есть ли способ сказать git
показывать имена методов вместо / вдоль стороны имени класса?
Редактировать:
Дополнительная информация:
diff version: 2.8.1
git version: 1.7.6 (from the git-core PPA)
OS: Ubuntu 9.10
Изначально у меня была версия git 1.7.0.4 из репозитория Ubuntu, но я обновил ее, надеясь, что это ошибка. К сожалению, это не решило проблему.
Edit2:
После дополнительного тестирования выясняется, что если объявление функции вообще имеет отступ (с пробелами или табуляцией) git diff
не подбирает имя функции. Это похоже на ошибку вgit
,
3 ответа
Если у вас возникла эта проблема, это может быть связано с тем, что git
Давайте diff
определить заголовок куска. Если вы хотите, чтобы заставить git
чтобы использовать его предопределенные для PHP, поместите следующую строку в .gitattributes
в корневой папке вашего репозитория git или .git/info/attributes
файл в вашем хранилище:
*.php diff=php
(Другие языки также поддерживаются. Список встроенных шаблонов доступен в документации.)
Установка этого глобально
Это должно быть возможно глобально установить, выполнив следующее в git version >= 1.4
- Поместите строки в
~/.gitattributes
- Бежать
git config --global core.attributesfile "~/.gitattributes"
Или, если вы хотите установить это глобально
- Поместите строки в
/etc/gitattributes
Предупреждение: если вы установили это глобально, ваши коллеги могут получить разные результаты при запуске git diff
так как они не будут проверять копию .gitattributes
с хранилищем.
Я не совсем понимаю, почему это не работает так, как должно.
В качестве временного решения добавьте следующее к .gitattributes
:
*.php diff=phpf
И эти строки .git/config
или же ~/.gitconfig
:
[diff "phpf"]
xfuncname = "^[\t ]*(((public|protected|private|static)[\t ]+)*function.*)$\n"
Для постоянного решения обратитесь к разработчикам Git напрямую по списку рассылки git@vger.kernel.org.
Этот diff, вероятно, будет лучше с Git 2.19 (Q3 2018), так как шаблон userdiff для .php
был обновлен
Смотрите коммит 1ab6316, коммит 9992fbd (03 июля 2018 г.) от Kana Natsuno ( kana
)
(Объединено Юнио С Хамано - gitster
- в коммите d3f0938, 24 июля 2018 г.)
userdiff: поддержка новых ключевых слов в заголовке PHP
Последняя версия PHP поддерживает
interface
,trait
,abstract class
а такжеfinal class
,
Этот патч исправляет регулярное выражение заголовка PHP для поддержки всех этих ключевых слов.