Непоследовательные результаты журнала git при фильтрации по каталогу

Я сталкиваюсь со странным поведением журнала git при фильтрации по определенному каталогу. Вот команда, которую я использую:

18:05:04 ~/Documents/01_repo/b2b-crm  (uat)
└─▶ $ git log --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e -- 'force-app/main/default/'
COMMIT: ff565cdef935907ec6b8995463c907375a70f9f2
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js

COMMIT: 84ee2707977848ff7a7b693b1e2f56f4b54c678d
M       force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js

Однако, когда я запускаю команду снова, с удаленным фильтром каталогов, я получаю другой список измененных файлов:

18:05:12 ~/Documents/01_repo/b2b-crm  (uat)
└─▶ $ git log --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e                             
COMMIT: ff565cdef935907ec6b8995463c907375a70f9f2
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js

COMMIT: 6e0d17558b091d00fe47304b588ec5e066c09d37
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParameters.cmp
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
M       force-app/main/default/aura/GE_CL_SaveComponents/GE_CL_SaveComponents.cmp
M       force-app/main/default/aura/GE_CL_SaveComponents/GE_CL_SaveComponentsController.js
M       force-app/main/default/aura/GE_CL_SelectedComponent/GE_CL_SelectedComponent.cmp
M       force-app/main/default/aura/GE_CL_SelectedComponent/GE_CL_SelectedComponentController.js
M       force-app/main/default/classes/GE_CL_ComponentList_Controller.cls
M       force-app/main/default/classes/GE_CL_ComponentList_Controller_Test.cls
M       force-app/main/default/classes/RD3_ContractGenerator.cls
M       force-app/main/default/classes/RD3_ContractGenerator_Test.cls

COMMIT: 84ee2707977848ff7a7b693b1e2f56f4b54c678d
M       force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js

Как видите, список ресурсов меняется, хотя все ресурсы имеют один и тот же путь. Почему git log возвращает разные результаты для одного и того же фильтра каталогов при нескольких выполнениях?

Проблема возникает как с zsh, так и с bash.

Я использую git версии 2.45.0.

Использование gitk для графического отображения состояния:

gitk 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e

gitk 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e -- force-app/main/default/

Я замечаю, что, наложив фильтр на каталог, я скрываю фиксацию, на которой я нахожусь, на уровне оформления заказа. Может ли кто-нибудь сказать мне, как избежать этого результата?

Полагая, что дополнительная информация может только помочь, я также показываю результат git diff в различных формах, и как видите, даже здесь результат у меня не складывается, возможно, причина в том, что эти файлы не были изменены по сравнению с текущей веткой?

10:36:20 ~/Documents/01_repo/b2b-crm  (uat)
└─▶ $ git diff --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
M       force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js
10:36:25 ~/Documents/01_repo/b2b-crm  (uat)
└─▶ $ git diff --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e b0341db807cf7e4fa6b0dff63cf7eabca057308e 
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
M       force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js
10:36:35 ~/Documents/01_repo/b2b-crm  (uat)
└─▶ $ git diff --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e b0341db807cf7e4fa6b0dff63cf7eabca057308e -- 'force-app/main/default/'
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
M       force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js

«Список ресурсов»? Что это такое? Вы имеете в виду список путей? Они не разные. Список коммитов есть. Единственная разница между двумя журналами — наличие/отсутствие коммита 6e0d17

Romain Valeri 17.05.2024 09:18

Блин, ты прав @RomainValeri! Вчера от усталости за день я не заметил этой простой детали! Однако меня интересует журнал возврата с отсутствующим коммитом, но при этом позволяющий фильтровать каталоги. Можете ли вы объяснить мне, что с ним происходит? Какой скрытый механизм стоит за этим?

Emanuele Alfano 17.05.2024 09:59

Да, я тоже задавался вопросом, почему коммит не отображается в вашем первом журнале. Пока без понятия, извини. Давайте продолжим поиск.

Romain Valeri 17.05.2024 10:08

Вы уже пробовали с --full-history?

knittl 17.05.2024 12:17

К сожалению нет, я об этом особо не думал! Я только что попробовал, и это работает!! @knittl ОГРОМНОЕ СПАСИБО, сейчас я приступлю к созданию ответного сообщения.

Emanuele Alfano 17.05.2024 15:30
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
5
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я хотел поделиться решением проблемы, с которой я столкнулся при использовании git log с фильтром каталогов. Первоначально при запуске команды:

15:28:46 ~/Documents/01_repo/b2b-crm  (uat)
└─▶ $ git log --name-status --oneline --pretty=format:"COMMIT: %H" --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e -- 'force-app/main/default/'               
COMMIT: ff565cdef935907ec6b8995463c907375a70f9f2
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js

COMMIT: 84ee2707977848ff7a7b693b1e2f56f4b54c678d
M       force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js

Я получил список измененных файлов, которые не соответствовали моим ожиданиям. Удаление фильтра каталогов изменило вывод, отображая больше измененных файлов.

После некоторых исследований и с помощью сообщества, особенно @knittl, я обнаружил, что недостающий параметр — --full-history. Этот параметр имеет решающее значение для включения в журнал всех коммитов, затронувших указанный путь, даже если изменение было сделано в ветке, которая позже была объединена.

Вот правильная команда, которая обеспечивает ожидаемый результат:

15:28:53 ~/Documents/01_repo/b2b-crm  (uat)
└─▶ $ git log --name-status --oneline --pretty=format:"COMMIT: %H" --full-history --diff-filter=ACDMRTUXB 814cfc685b430020192e7c0db04b2874b5790a1e..b0341db807cf7e4fa6b0dff63cf7eabca057308e -- 'force-app/main/default/'
COMMIT: ff565cdef935907ec6b8995463c907375a70f9f2
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js

COMMIT: 6e0d17558b091d00fe47304b588ec5e066c09d37
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParameters.cmp
M       force-app/main/default/aura/GE_CL_ConfigurationParameters/GE_CL_ConfigurationParametersController.js
M       force-app/main/default/aura/GE_CL_SaveComponents/GE_CL_SaveComponents.cmp
M       force-app/main/default/aura/GE_CL_SaveComponents/GE_CL_SaveComponentsController.js
M       force-app/main/default/aura/GE_CL_SelectedComponent/GE_CL_SelectedComponent.cmp
M       force-app/main/default/aura/GE_CL_SelectedComponent/GE_CL_SelectedComponentController.js
M       force-app/main/default/classes/GE_CL_ComponentList_Controller.cls
M       force-app/main/default/classes/GE_CL_ComponentList_Controller_Test.cls
M       force-app/main/default/classes/RD3_ContractGenerator.cls
M       force-app/main/default/classes/RD3_ContractGenerator_Test.cls

COMMIT: 84ee2707977848ff7a7b693b1e2f56f4b54c678d
M       force-app/main/default/aura/IS_ImprimirContrato_Quadient/IS_ImprimirContrato_QuadientHelper.js

С помощью этой команды git log теперь показывает все файлы, измененные по указанному пути, независимо от ветки, в которой были внесены изменения.

Я надеюсь, что это решение может быть полезно другим, кто оказался в такой же ситуации.

Такая подробная обратная связь очень полезна. Отличная работа.

Romain Valeri 17.05.2024 16:35

Другие вопросы по теме

Похожие вопросы

Цитирование команды оболочки внутри команды osascript, запускаемой оболочкой внутри файла JSON
Как избежать ошибки «Неверный тип аргумента» при выполнении, казалось бы, допустимой команды AWS CLI, созданной с использованием jq и bash?
Как найти одинаковые файлы в дереве каталогов
Используйте вывод сценария с кавычками в качестве аргументов командной строки
Microchip MPLAB X IDE: настройка и запуск общего сценария Bash перед сборкой, который работает как в Windows, так и в Linux как часть процесса сборки
Как получить вывод Telnet в переменную?
Как создать одно и то же расширение PHP для нескольких версий на одном сервере с Ubuntu?
Сортировка пользовательского массива со строками дает неправильный порядок, даже если содержимое файла полностью доступно на диске
Потоковая передача вывода команды bash в cURL
Как импортировать множество fsLayers в докер как одно изображение