嘿我经常将我的XCode iPhone项目上传到svn存储库,以便在另一台机器上构建。
我的问题是,当我向项目添加资源时,有时我忘记将资源添加为相对于项目。
我知道一个答案是要更加小心(当你疲惫时不容易!)但是如果有办法运行脚本来检查我的资源路径是相对的,当我建立并警告我,如果他们不是它将是对我来说是一个很好的节省时间。
我将如何做到这一点?
由于
克里斯
答案 0 :(得分:1)
您可以选择项目中的所有文件,并一次性为所有文件设置路径类型。虽然这不是一个脚本,但这确实比单独执行文件节省了大量时间
我认为编写脚本的最佳方法是查看.xcodeproj文件 - 文件路径列在那里。如果您的项目名为MyProject,则需要打开(通过在Finder中使用Show Package Contents或只在终端中使用常用的cd)MyProject.xcodeproj目录。
在这里,您将找到一个名为project.pbxproj的文件 - 在编辑器中打开它,不会弄乱您的格式并查看文件。如果在项目中搜索某个文件,您应该能够看到Xcode如何存储对项目文件的引用。
查找名为/ * Begin PBXFileReference section * /的部分。在这里列出了所有文件,以及它们相对于项目的位置,例如:
... path = Classes/MyClass.h; sourceTree = SOURCE_ROOT
如果您可以解析此文件,您应该能够实现您想要的 - 但请记住备份该文件,否则您可能会破坏您的项目。
答案 1 :(得分:0)
如果您改为编写一个脚本,询问SCM是否未提交项目中的任何内容,那该怎么办?例如,想一想这个场景
Project Root
Codex
Project.xcodeproj
…
Design
anImage.png
其中anImage.png
位于Codex
之外,Xcode项目所在的位置(其路径以../
开头)。强大的.pbxproj
解析器必须支持Xcode引用文件的所有变体,以确切知道是否存在杂散文件。
OTOH,SCM知道一切都在哪里(你提到过ping到SVN服务器),所以为什么不去问它呢。