Мерзавец - Как я управляю созданными файлами в различных ответвлениях?

Некоторый фон

Я использовал Мерзавца некоторое время теперь. Проекты, что я продолжал работать, не были слишком сложными в отношении ответвлений/тегов.

Я решил использовать мерзавца-svn на работе. Репозиторий SVN имеет много различных ответвлений. Много этих ответвлений является клиентскими настроенными версиями соединительной линии.

Проблема

Я часто работаю над проблемами для различных клиентов в различном то же время. Таким образом, я переключаюсь назад и вперед между ответвлениями все время. Проблема состоит в том, что для тестирования продуктов я должен восстановить проект каждый раз, когда я переключаюсь между ответвлениями. Сборка берет> 2 часа (с нуля) :(

Я предполагаю, что существует способ спрятать файлы типа "build" в ответвлении customer_a и затем контроль customer_b, измените, создайте, протестируйте, фиксация. Затем спрячьте файлы типа "build" и контроль customer_a снова и поп customer_a притон для возвращения туда, где я был.

Это только работает, если файлы типа "build" прослеживаются (т.е. добавляются или фиксируются). Я не хочу отслеживать файлы типа "build", и я определенно не хочу регистрировать их. Существует ли способ спрятать (или сделать что-то подобное) для неотслеженных файлов? Или обычная практика, которую люди используют для достижения того же типа вещи?

Обратите внимание, что способ, которым наш проект разрабатывается каждая библиотека (которых существуют тысячи) добирается, создает файлы, локальные для папки библиотеки, т.е. они не перемещены в папку сборки в корне проекта. Все созданные файлы распространены повсеместно.

Обновление...

Таким образом на основе некоторых комментариев я думаю, что должен дать пример своей проблемы

Вот моя структура папок.

branch1/
      src/
         component1/
                    c1.c
         component2/
                    c2.c
      libsrc/
          library1/
                    lib_1.c
          library2/
                    lib_2.c

branch2/
      src/
         component1/
                    c1.c
         component2/
                    c2.c
      libsrc/
          library1/
                    lib_1.c
          library2/
                    lib_2.c

Таким образом, проблема - это branch1 и branch2 имейте ту же родословную, но отличались вполне немного. Таким образом, если я проверяю branch1 и создайте его, я получу двоичные файлы (например, lib_1.o), что я связываюсь против в моем Makefile создавать заключительные двоичные файлы компонента.

Если я затем контроль branch2 внесите изменение в c1.c и выполненный делают, это пытается связаться с двоичными файлами, которые были созданы branch1 (lib_1.o), так как они все еще существуют в каталогах, как создано в предыдущем ответвлении. Для предотвращения этого, я должен сделать чистую сборку каждый раз, когда я переключаю ответвления (который занимает часы).

15
задан Will 17 May 2010 в 02:59
поделиться

3 ответа

Хорошо

Итак, этот вопрос некоторое время оставался без ответа, и я просто пробовал разные решения локально .

Лучшее, что я придумал, - это использовать крючки до и после оформления заказа.

Вот что я сделал

  1. Создайте папку .binaries на верхнем уровне вашего репозитория и добавьте ее в файл .gitignore .

  2. Добавьте также форматы файлов двоичных файлов в свой файл .gitignore .

  3. напишите сценарий на вашем любимом языке сценариев, чтобы найти все файлы указанного формата, который переместит их в папку .binaries / / с той же структурой пути, например src / library1 / lib1.o следует ПЕРЕМЕСТИТЬ в .binaries / / src / library1 / lib1.o - это должно вызываться при предварительной проверке.

  4. Напишите сценарий для перемещения файлов из папки .binaries в текущую ветку, например. .binaries / /src/library1/lib1.o следует ПЕРЕМЕСТИТЬ в src / library1 / lib1.o - это должно вызываться после оформления заказа

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

5
ответ дан 1 December 2019 в 05:15
поделиться

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

1
ответ дан 1 December 2019 в 05:15
поделиться

Проблема в том, что вам нужно вернуть правильные двоичные файлы:

  • нужна не только правая ветка,
  • , но и правильная версия

Последний пункт - не слишком важно, если вы продолжаете разрабатывать последние версии своих двух веток (и соглашаетесь перестроить все, если вы проверяете старый тег и переходите оттуда).
Но все же, если после сборки вы автоматически публикуете эти файлы .o в репозиторий, предназначенный для управления двоичными файлами, это решит вашу проблему аккуратно.
Например, подойдет локальное репозиторий Nexus.

0
ответ дан 1 December 2019 в 05:15
поделиться
Другие вопросы по тегам:

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