Проблема: Make перестраивает весь проект после переключения веток в Git - PullRequest
0 голосов
/ 17 ноября 2018

Лучшая практика для Git, предположительно, это экспериментировать в ветвях и объединять эту работу с мастером только тогда, когда она кажется идеальной. Но это сильно замедляет мой цикл разработки, потому что переключение веток в Git затрагивает все файлы, даже те, которые не меняются. В результате make перестраивает весь проект с нуля, а не только те файлы, которые были изменены.

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Если ваш проект находится в C / C ++ или ObjectiveC, и причина в том, что make-файл (файл проекта) слегка изменен в ветвях, ccache будет очень полезен. Этот инструмент запоминает фактические параметры компиляции для каждого файла C и кэширует полученный файл obj. Когда вы перестраиваете проект, компилятор может быть пропущен для каждого файла отдельно, даже если был изменен make-файл.

0 голосов
/ 17 ноября 2018

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

Если время изменения файла не меняется, но все по-прежнему перестраивается, значит, у вас проблема с вашим make-файлом.

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

...