2013-11-16 5 views
3

Xcode 5 должен улучшить управление подпроектами из разных репозиториев. Согласно документации, перетаскивание подпроекта в рабочее пространство спросит, должен ли новый проект быть включен в рабочую область и автоматически проверен с основным проектом.Как добавить рабочую копию подпроекта в рабочее пространство в Xcode 5?

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

С git status I получить кучу «Неотслеживаемых файлов» для нового проекта, который я добавил в рабочую область. Это именно то, чего я ожидал бы при добавлении новых файлов, которые я намерен добавить в основной проект напрямую. Но, очевидно, я не хочу добавлять файлы подпроекта в основной репозиторий.

Это то, что я делаю:

  1. В Finder, перетащите весь подпроект в MainProject/Libraries.
  2. Перетащите MainProject/Libraries/SubProject/SubProject.xcodeproj в рабочее пространство.
  3. Когда меня спрашивают, я принимаю «Поделиться рабочей копией».
  4. Использование git status я

    # Changes to be committed: 
    # (use "git reset HEAD <file>..." to unstage) 
    # 
    # new file: Libraries/SubProject/SubProject.xcodeproj/project.pbxproj 
    # new file: Libraries/SubProject/SubProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata 
    # new file: Libraries/SubProject/SubProject.xcodeproj/project.xcworkspace/xcshareddata/SubProject.xccheckout 
    # new file: Libraries/SubProject/SubProject.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings 
    
    # Untracked files: 
    # (use "git add <file>..." to include in what will be committed) 
    # 
    # Libraries/SubProject/.gitignore 
    # Libraries/SubProject/SubProject 
    # Libraries/SubProject/SubProjectTest 
    # Libraries/SubProject/DemoApp 
    

ответ

0

Если посмотреть на файл xccheckout вашего рабочего пространства (рабочая область/xcshareddata/MyProject.xccheckout), вы увидите что-то вроде этого:

<key>IDESourceControlProjectOriginsDictionary</key> 
<dict> 
    <key>291D49C7-ABC9-4A7B-95B7-A7988B531D68</key> 
    <string>https://github.com/whatever/whatever.git</string> 
    <key>77C26974-A34E-46C6-BFCB-6753E157F937</key> 
    <string>file:///Users/me/Dropbox/MyProject/</string> 
</dict> 
<key>IDESourceControlProjectRelativeInstallPathDictionary</key> 
<dict> 
    <key>291D49C7-ABC9-4A7B-95B7-A7988B531D68</key> 
    <string>../../whatever</string> 
    <key>77C26974-A34E-46C6-BFCB-6753E157F937</key> 
    <string>../..</string> 
</dict> 

Итак, похоже, что Xcode отмечает, что подпроект относится к рабочему пространству и где его начало. В этом случае начало рабочего пространства находится в Dropbox, а подпроект «что угодно» клонируется из GitHub. Проект «любой» проверяется на том же уровне иерархии папок, что и основная папка проекта - это не подпапка.

т.е.

|-- Projects 
|------ whatever (cloned from GitHub origin) 
|------ MyProject (cloned from Dropbox origin) 
|---------- MyProject.xcworkspace 
|---------- MyProject.xcproj 
|---------- ... 

Xcode также записывает какую ревизию рабочей копии в, так что, когда следующий человек приходит и проверяет/копирует ваш проект и отсутствует проект «независимо», Xcode может проверьте их для них (и вставьте его в тот же относительный каталог).

Вы заметите, что подмодули git не входят в нее. Это функция Xcode. Это позволяет вам иметь одну рабочую копию конкретного проекта, но добавить ее в качестве подпроекта в нескольких других проектах (поэтому он сказал «обмениваться рабочей копией»). Итак, в приведенном выше примере у меня может быть другой проект (MyOtherProject), который ссылается на ту же рабочую копию «что угодно». Вы также можете смешивать и сопоставлять системы VCS (предполагая, что Xcode поддерживает их все).

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

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