gpt4 book ai didi

xcode - 如何将子项目工作副本添加到 Xcode 5 中的工作区?

转载 作者:太空狗 更新时间:2023-10-29 14:23:46 25 4
gpt4 key购买 nike

Xcode 5 应该改进来自不同存储库的子项目的管理。根据文档,将子项目拖入工作区将询问新项目是否应包含在工作区中并自动与主项目一起 check out 。

但是,当我这样做并接受此消息时,子项目似乎是作为主项目的一部分添加的,而不是来自不同存储库的单独的独立项目(使用 git 子模块)

git status对于添加到工作区的新项目,我得到了一堆“未跟踪文件”。这正是我在添加打算直接添加到主项目的新文件时所期望的。但显然我不想将子项目的文件添加到主存储库。

这是我的做法:

  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

最佳答案

如果您查看工作区的 xccheckout 文件 (workspace/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 上,“whatever”子项目是从 GitHub 克隆的。 “随便”项目在与主项目文件夹相同的文件夹层次结构级别 check out - 它不是子文件夹。

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

Xcode 还会记下工作副本的修订版本,这样当下一个人过来 checkout /复制您的项目并且缺少“任何”项目时,Xcode 可以为他们 checkout (并粘贴它在相同的相对目录中)。

你会注意到 git 子模块不会进入它。这是一个 Xcode 功能。它允许您拥有特定项目的一个工作副本,但将其作为子项目添加到多个其他项目中(这就是它说“共享工作副本”的原因)。因此,在上面的示例中,我可以有另一个项目 (MyOtherProject),它引用“whatever”的相同工作副本。您还可以混合搭配 VCS 系统(假设 Xcode 支持所有这些系统)。

如果像您的情况一样,您已将子项目克隆到主项目的层次结构中,那么您实际上获得了一个子模块。

关于xcode - 如何将子项目工作副本添加到 Xcode 5 中的工作区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20020479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com