git log --before=4 month показать мне ветки, в которых есть коммиты трехнедельной давности. Что я делаю не так?

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

 for k in $(git branch -r | awk -Forigin !'/\/Prefix1\/|\/prefix2\//'); do
  if [ "$(git log -1 --before="3 month" $k)" ]; then
    echo "$(git log -1 --pretty=format:"%ci, %cr, " $k) $k";
  fi;
done

В настоящее время проблема заключается в том, что когда я запускаю это, я вижу ветки, которые получили коммиты 3 недели назад, 5 месяцев назад, 2 месяца назад, 1 месяц назад и т. д. и т. д., и я не могу понять, почему.

Но если я запущу только: git log --before="4 month" --pretty=format:"%ci, %cr, " Работает как положено.

Может ли кто-нибудь дать мне какие-либо указания?


person Ka_booom    schedule 04.05.2020    source источник


Ответы (1)


-1 в git log -1 [filters] $k будет:

  • развернуть историю git log [filters] $k
  • ограничить эту историю первой строкой

Таким образом, если в истории ветки есть 3-месячная фиксация (я думаю, любая из ваших ветвей есть), git log -1 --before="3 month" $k всегда будет показывать 1 строку - первую фиксацию в своей истории, которой больше 3 месяцев.

Ваше ведущее условие if [ ... ] всегда будет истинным.


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

git log --before="3month" $k^..$k
person LeGEC    schedule 04.05.2020
comment
несколько раз редактировал мой ответ, последнее предложение должно сработать. - person LeGEC; 04.05.2020
comment
Спасибо за педагогический ответ. Кажется, это сделало свое дело! ‹3 - person Ka_booom; 04.05.2020
comment
@Ka_booom Пожалуйста, подумайте о том, чтобы принять ответ (и, в конечном итоге, проголосовать за него), ср. Что делать, если кто-то ответит на мой вопрос?. - person Keldorn; 04.05.2020
comment
Я снова здесь с уточняющим вопросом: - person Ka_booom; 25.03.2021
comment
Привет, лучший способ сделать это — задать новый вопрос (кнопка {Задать вопрос вверху страницы) и вставьте ссылку на этот текущий пост в свой новый вопрос. - person LeGEC; 25.03.2021
comment
@Ka_boom: ваш комментарий заканчивается после :, я не вижу там вопроса - person LeGEC; 25.03.2021