Мерзавец: как проанализировать код, который имеет многофайловую историю?

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

Как может я использовать мерзавца для выяснения: "куда эта строка кода прибывала из?" когда содержание переместилось через несколько файлов в, он - время жизни?

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

7
задан Dane O'Connor 19 January 2010 в 20:01
поделиться

2 ответа

Я бы порекомендовал смотреть на три инструмента в Git Toolbox. Первый виноват, что очень такое же, как в CVS. Он показывает, что Commit Compare прикоснулся к каждой строке в файле. Если вы хотите посмотреть, посмотрите, что там было раньше, вы можете принять коммит, который коснулся линии и посмотрите на предыдущий коммит.

git show <sha1_of_interesting_commit>^ -- file/path

Вы можете повторить вину, чтобы увидеть, что произошло до этого.

git blame <sha1_of_interesting_commit>^ -- file/path

Второй инструмент использует - следуйте для отслеживания файлов прошлых переименоводов.

git log --follow -- file/path

Третий - и, возможно, самый полезный инструмент - это вариант Pickaxe для журнала. Это поиск истории для изменений удаленных, введенных или измененных строк, которые включают в себя данный бит текста. Это особенно полезно для отслеживания таких вещей, как имена функций. Это может быть новым в файле в конкретном коммите, но пришло ли он из другого исходного файла? Был призыв к нему добавлен одновременно или до того, как он переехал?

git log -S"Interesting_Function"

Если вы используете патч или вариант статистики (например, -P или - stat ) Выход будет ограничен этими файлами, изменения которых фактически включали строку поиска, если вы также не используете - Rickaxe-All , где отображается все изменения.

в сочетании с Git Git Grep , чтобы показать, где все текущие вхождения строки, PICKAXE - это чрезвычайно полезная история добычи полезных ископаемых.

5
ответ дан 7 December 2019 в 12:20
поделиться

Гит виноват - это то, что вы бы использовали, чтобы задать «Откуда эту строку кода?». Я не знаю, справляется ли это переименовать. Вероятно, делает.

0
ответ дан 7 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

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