Мне нужны отзывы о том, как структурировать мои а) каталоги Xcode4 и б) иерархии git для приложений и их библиотек. Я ищу что-то, что будет мне полезно, когда я представлю больше библиотек и больше разработчиков. Моя общая ситуация такова:
- Я занимаюсь разработкой двух гипотетических приложений для iOS, например MyTwitterApp и MyFacebookApp
- У меня также есть проект статической библиотеки MyJSONLibrary, который оба приложения используют
- Я хочу управлять исходным контролем всех трех проектов с помощью git (пока локально, но в конечном итоге с мастером на другом центральном сервере, чтобы я мог привлекать других разработчиков)
Одна (теоретическая) стратегия использует следующую иерархию каталогов, где у меня есть одна копия каждого проекта, и рабочая область для каждого из приложений будет ссылаться на их соответствующий проект MyXXXApp вместе с библиотекой MyJSONLibrary:
+-- dev/
+-- workspaces/
| +-- MyTwitterApp.xcworkspace
| +-- MyFacebookApp.xcworkspace
+-- projects/
+-- MyTwitterApp/
| +-- .git/
| +-- MyTwitterApp.xcodeproj/
| +-- (source files)/
+-- MyFacebookApp/
| +-- .git/
| +-- MyFacebookApp.xcodeproj/
| +-- (source files)/
+-MyJSONLibrary/
+-- .git/
+-- MyJSONLibrary.xcodeproj/
+-- (source files)/
Однако я не уверен, понравится ли xcode / git два разных рабочих пространства, в основном редактирующих один и тот же физический каталог проекта.
Или, альтернативно, я мог бы пойти с чем-то вроде:
+-- dev/
+-- MyTwitterAppWorkspace/
| +-- MyTwitterApp.xcworkspace
| +-- MyTwitterApp/
| | +-- .git/
| | +-- MyTwitterApp.xcodeproj/
| | +-- (source files)/
| +-MyJSONLibrary/
| +-- .git/
| +-- MyJSONLibrary.xcodeproj/
| +-- (source files)/
+-- MyFacebookAppWorkspace/
+-- MyFacebookApp.xcworkspace
+-- MyFacebookApp/
| +-- .git/
| +-- MyFacebookApp.xcodeproj/
| +-- (source files)/
+-MyJSONLibrary/
+-- .git/
+-- MyJSONLibrary.xcodeproj/
+-- (source files)/
Это означает, что у меня теперь есть две копии моего проекта MyJSONLibrary в любой момент времени и, вероятно, требуется использование централизованного git-сервера для координации изменений, сделанных между ними обоими, однако это, вероятно, дает мне больше гибкости в управлении этими двумя приложения в зависимости от разных версий библиотеки.
Я также читал, что, возможно, подмодули git могут быть полезны, но я не уверен, что они хорошо работают, когда библиотека должна использоваться несколькими приложениями.
Буду очень признателен за любые мысли или рекомендации передового опыта.
Спасибо.
Craig