2013-02-07 3 views
0

У меня есть приложение OSX, которое я создал на питоне. Как и многие приложения OSX, в нем есть много (всех?) Его зависимостей. например ...forking git project для разных ОС

./git_repo 
└── mac (dir) 
    ├── myapp.app (dir) 
    │   ├── Frameworks (dir) 
    │   ├───MacOS (dir) 
    │   ├───Resources (dir) 
    │   │   ├──main.py 
    │   │   ├──lib1.py 
    │   │   ├──lib2.py 
      ├─img(dir) 

Структура каталогов намного больше, чем это, с большим количеством файлов в каждой директории, но вы получите идею

Моей первой вилки будет для Linux, в котором мне нужно основной. py, lib1.py, lib2.py и img. Мне больше ничего не нужно в директории Resources или любом другом каталоге. Я также буду добавлять конкретные файлы Linux, которые не требуются для mac. Общая структура dir будет намного более плоской, чем структура mac.

После этого я буду разворачиваться для Windows, с файлами, которые я перечислил для Linux, и некоторыми специальными файлами Windows, не требуемыми для mac/linux.

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

  1. Используйте отдельные Git ветви и слияния/вишневого пикап изменения в случае необходимости (это может быть трудно, как структура каталогов всего 3 будет совершенно иной
  2. Использование Git подмодуль - начитались до об этом, но не уверена, какие компоненты я должен сделать подмодули - общие элементы, или дополнительные
  3. использовать отдельные хранилища - не уверен, если это любой других филиалы

в конце концов я просто необходимо отслеживать изменения для тех, кто главного файлов для всех 3 ОС, сохраняя изменяется отдельно и без необходимости предпринимать огромные шаги при работе с конкретной ОС/ветвью (например, файл make и т. д.)

Каков наилучший способ достижения этого? Спасибо за чтение

ответ

0

Вы должны использовать git-submodule и сделать общие подмодули частей и связать их в соответствующих ветвях платформы.

1

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

Лучшим способом для этого было бы структурирование вашего проекта в качестве стандартного проекта setuptools/distutils с помощью setup.py. Затем используйте the py2app extension для создания пакета приложений OS X и the py2exe extension для создания исполняемых файлов Windows.

Второй способ - структурировать ваш проект таким образом, который имеет для вас смысл, и иметь скрипты сборки, которые копируют соответствующие файлы на место. Например, у вас есть папка src/ со всеми вашими источниками Python, папка build/, которую Git игнорирует, и build-mac.sh, которая создает пакет приложений внутри build/ и копирует исходные файлы Python на место.

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

Смежные вопросы