LINUX.ORG.RU

Избежать пересборки всего проекта при переключении ветки

 


0

1

Есть директория1 с исходным кодом проекта на несколько гигабайт (например, llvm). Объектные файлы находятся в отдельной директории2.

Проблема: переключение с помощью git checkout в другой бранч и обратно в директории1 без каких-либо правок кода влечет пересборку весьма значительной части того, что уже было собрано в директории2.

Вопрос: правильно ли я понимаю, что единственным способом избежать пересборки является фиксация директории1 с исходным кодом (т.е. один раз создать нужный бранч и писать код там, но не прыгать между бранчами)?

Такой вариант тоже мог бы устроить, но если хочешь посмотреть, что происходит в основном бранче, то придется клонировать этот репо в отдельную директорию с этим бранчем. Таким образом, не получится организовать схему «один репозиторий - множество сборок». Придется для каждой сборки иметь и отдельный репозиторий с кодом.



Последнее исправление: nasecom (всего исправлений: 4)

Вариантов, вроде, хватает:

  • Собирать разные ветки в разных каталогах.
  • Перемещать/линковать каталог сборки в post-checkout хуке.
  • Использовать ccache, с ним будет быстрее.
  • Работать с разными ветками в разных git-worktree.
xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Спасибо за ответ. Видимо, worktree + ccache наиболее применимо.

nasecom
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.