Есть ли способ попросить git diff показать имя метода вместо имени класса?
Это немного исказило меня, и поиск не дал никаких подсказок.
Вопрос:
Когда я делаю git diff
в файле PHP, содержащем Class
, каждое описание hunk имеет имя класса без упоминания имени метода.
Например:
@@ -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
показать имена методов вместо/вдоль стороны имени класса?
Edit:
Дополнительная информация:
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
.
Ответы
Ответ 1
Если у вас возникла эта проблема, возможно, это связано с тем, что git
позволяет diff
определять заголовок hunk. Если вы хотите заставить 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
в репозитории.
Ответ 2
Я не совсем понимаю, почему он не работает способ, которым он должен.
В качестве временного решения добавьте следующее к .gitattributes
:
*.php diff=phpf
И эти строки до .git/config
или ~/.gitconfig
:
[diff "phpf"]
xfuncname = "^[\t ]*(((public|protected|private|static)[\t ]+)*function.*)$\n"
Для постоянного решения попросите разработчиков Git непосредственно в git @vger.kernel.org рассылке.