Xcode, git и промежуточные сборки - PullRequest
5 голосов
/ 31 января 2010

Мне бы хотелось две вещи:

  1. чтобы иметь возможность изменять ветви в git, а затем запускать или строить в Xcode без перекомпиляции всего проекта.

  2. git игнорирует промежуточные файлы сборки во время слияния, поэтому он не попросит меня разрешить конфликты.

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

Ответы [ 3 ]

1 голос
/ 06 января 2011

Вы можете определить две переменные:

  • MY_BRANCH_NAME = branch_foo (адаптировано в каждой ветке)
  • TARGET_TEMP_DIR = $(CONFIGURATION_TEMP_DIR)/$(TARGET_NAME)$(MY_BRANCH_NAME).build (одинаково для всех филиалов)

Таким образом, сборки для ваших разных веток будут создаваться и храниться в отдельных папках, без необходимости перекомпиляции всего из-за изменения конфигурации между ветвями.

Вы можете сделать это в файлах xcconfig или автоматически определить MY_BRANCH_NAME в качестве аргумента xcodebuild в скрипте сборки, среди прочих средств.

1 голос
/ 31 января 2010

Ну, вы сами правильно ответили на # 2, так что на самом деле ваш вопрос касается только # 1. Я на самом деле не понимаю, зачем XCode нужно что-то перекомпилировать - git не будет менять временную метку неизмененных файлов при переключении веток.

Реализовали ли вы на самом деле решение №2, чтобы вся проблема не была вызвана git-топанием по каталогу сборки, которое должно быть .gitignore 'd?

0 голосов
/ 01 февраля 2010

XCode собирается делать все свои данные на основе временных меток файлов, о которых идет речь. Если вы замените файл более новым файлом, то Xcode должен заметить, что временная метка файла новее, чем временная метка продукта сборки, и перекомпилировать его.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...