【问题标题】:Is it safe to ignore /xcuserdata/ with Git if using Launch Arguments?如果使用启动参数,使用 Git 忽略 /xcuserdata/ 是否安全?
【发布时间】:2012-12-06 19:28:32
【问题描述】:

我在启动时传递了一个参数:-D DEBUG,它允许我在我的发布应用程序中使用以下内容:

#ifndef DEBUG
    /* Some code I only want to be run when using the release app */
#endif

当我运行git status时,它显示添加-D DEBUG时更改的文件是MyExampleProject.xcodeproj/xcuserdata/myusername.xcuserdatad/xcschemes/MyExampleProject.xcscheme

应该使用常用的 Xcode .gitignore file 排除。有没有其他方法可以包含符合.gitignore 且不依赖于我的用户帐户xcuserdata 的此参数?

【问题讨论】:

    标签: xcode git gitignore


    【解决方案1】:

    对于单个项目,通常可以安全地忽略 xcuserdata。每个用户都有自己的文件来保存用户状态、打开的文件夹、打开的最后一个文件等等。它确实包含您的计划。如果是第一次打开并且文件不存在,Xcode 会为你创建它。

    但是...当您有一个持续构建服务器(例如 Hudson 或 Jenkins)时,我们在办公室遇到了这个问题,该服务器从 Git 或 SVN 复制源代码而无需打开它并尝试构建它。如果您忽略此文件,将没有可构建的方案,否则将强制某人打开项目以在第一次自动创建它。

    我们通过选中管理方案下的共享框解决了这个问题。这会将方案从您的个人 xcuserdata 下移到一个共享文件夹中,该文件夹可以通过源代码控制提交并由连续构建服务器使用。希望这会有所帮助。

    【讨论】:

    • 没问题!就在一周前,我们刚刚遇到了同样的问题。很高兴我能帮忙。
    • 是的,Bill Burgess 你是对的,一旦我从 bitbucket 中删除它并且我们正在团队合作,所以它给我带来了很多问题。如果您在团队中工作并使用源代码管理,则永远不要删除它。
    • 将方案添加到共享列表中,在方案管理器中解决此问题
    【解决方案2】:

    此文件夹仅包含一些临时信息。像 Xcode 的 UI 状态和类似的属性。 It is recommended by GitHub 以排除 .gitignore 文件中的 xcuserdata 文件夹。

    【讨论】:

    • 这会影响我使用方案吗?
    • 取决于什么样的方案。共享方案(见Manage Schemes)存储在项目文件中不会丢失,但本地方案存储在xcuserdata中。
    【解决方案3】:

    是的,删除 xcuserdata 是安全的。

    在 Finder 中打开您的 pproject 文件夹,然后在 .xcworkspace 或 .xcodeproj 中右键单击以“显示包内容”。您将看到 2 个文件夹:xcshareddataxcuserdata

    删除 xcuserdata 文件夹,然后尝试打开应用程序。

    【讨论】:

      【解决方案4】:

      没有直接详细回答问题,但是是的,因为它获得了您的用户名,所以它是安全的,您项目中的其他开发人员不会使用your_username.xcuserdatad

      我发现 Xcode(至少在 2021 年)将 xcuserdata 放在至少 3 个位置:

      > find . -name "*xcuserdata"
      ./.swiftpm/xcode/package.xcworkspace/xcuserdata
      ./.swiftpm/xcode/xcuserdata
      ./project_name.xcodeproj/xcuserdata
      ./project_name.xcodeproj/project.xcworkspace/xcuserdata
      

      所以最简单的做法是将**xcuserdata 添加到.gitignore。这与 Github 的建议不同,后者只是 xcuserdata


      xcuserdata 中的文件是非共享方案数据和 UI 配置(例如 UserInterfaceState.xcuserstate)。它们是非共享的,因为它们属于用户。仅当您是用户时才会读取这些设置。我认为您无法在您拥有的另一台机器上使用这些设置。我很想知道。

      【讨论】:

        猜你喜欢
        • 2014-11-12
        • 1970-01-01
        • 2012-03-30
        • 1970-01-01
        • 1970-01-01
        • 2020-08-30
        • 2020-12-04
        • 1970-01-01
        • 2011-11-12
        相关资源
        最近更新 更多