путаница мерзавца - не работает, как описано в документе - PullRequest
5 голосов
/ 24 июня 2009

Документация гласит: «Поскольку git-cherry сравнивает набор изменений, а не идентификатор фиксации (sha1), вы можете использовать git-cherry, чтобы узнать, был ли примененный вами локально коммит применен под другим идентификатором фиксации».

Посмотрим:

$ git cherry master release-1.1.0 | head -1
- 533e2559342910fbffa2be5b38fdd7f2ddb2ed53
$ git show 533e2559342910fbffa2be5b38fdd7f2ddb2ed53
...
(cherry picked from commit 409c61b3304373a73c787fdf9c08cc338934b74d)
...

git show показывает тот же набор изменений для 409c .. и 533e

$ git br --contains 533e2559342910fbffa2be5b38fdd7f2ddb2ed53
release-1.1.0
$ git br --contains 409c61b3304373a73c787fdf9c08cc338934b74d
master
release-1.0.4

Это означает, что набор изменений находится как в master, так и в release-1.1.0. Так почему же мерзавец с вишней показывает 533e ..?

1 Ответ

3 голосов
/ 24 июня 2009

В нем также говорится «Коммиты сравниваются с их идентификатором патча, полученным из программы git-patch-id». Когда вы применили свой выбранный вишней дифференциал, он случайно оказался немного другим?

В этом случае не только будут отличаться идентификаторы коммитов, но и идентификатор патча в виде git-patch-id будет сообщать разные идентификаторы патчей для коммитов, и поэтому они не будут считаться находящимися в ветвях друг друга.

Это легко проверить:

git show 533e2559342910fbffa2be5b38fdd7f2ddb2ed53 | git-patch-id
git show 409c61b3304373a73c787fdf9c08cc338934b74d | git-patch-id

Если первый sha1, возвращаемый git-patch-id, отличается между двумя запусками, это то, что произошло.

Предостерегайте лектора - я не пробовал свою теорию, но именно так я интерпретирую man-страницы.

...