Git — как узнать были ли изменения в определенных файлах?
Задача такая: узнать были ли изменения в определенных файлах и директориях текущей ветки с момента ее создания. Команда будет выполнятся баш скриптом.
Есть, например, такая команда: git diff --name-only master -- dirname
Она дает практически то, что нужно, но учитываются изменения внесенные и в ту ветку, с которой идет сравнение. А необходимо узнать были ли изменения в текущей.
youngmysteriouslight, спасибо, очень на то похоже, я пока тоже думал в том же направлении - поиск места разделения веток и сравнения с этим коммитом. Я нашел пару других способов дающих такой же diff, но при этом один из них возвращает совсем другой коммит (но diff такой же) и в общем пока я не уверен что правильнее и будет ли это работать во всех случаях.
По тому как вы описал задачу - вариант youngmysteriouslight выглядит правильным. Я думаю, что youngmysteriouslight стоит оформить свой комментарий как ответ, а вам отметить его решением, либо прокомментировать, если он чем-то не подходит. А то висит вопрос без ответа, хотя похоже, что по факту ответ дан =)
Команда merge-base сработает корректно только если в ветке не было обновлений из корневой ветки. Иначе просто покажет точку последнего выполнения git merge master. Найти настоящий корень ветки несколько сложнее, но реально.
diff -u <(git rev-list --first-parent child_branch) <(git rev-list --first-parent parent_branch) | sed -ne 's/^ //p' | head -1