我使用Xcode存储库来处理svn,今天我在我的核心数据模型中添加了一个新版本并尝试提交它。但Xcode通过错误:
svn: Commit failed (details follow):
svn: Entry for '/Users/user/Desktop/project/Core Data/Translator.xcdatamodeld/Translator 2.0.xcdatamodel/contents' is marked as 'copied' but is not itself scheduled
for addition. Perhaps you're committing a target that is
inside an unversioned (or not-yet-versioned) directory?
我认为问题在于svn将xcdatamodel作为玩家进行处理,并且由于它已被更改,因此它不再受版本控制。但那我该怎么办呢?不提交新模型并手动传输吗?)
答案 0 :(得分:1)
我建议编写一个subversion checkout / commit钩子,它将创建Translator.xcdatamodeld目录的zip或tar存档,然后检查它。实际的xcdatamodeld目录将被忽略。 (压缩存档可能最好不,因为压缩会使svn更难以计算差异并使存储库更大。)
答案 1 :(得分:-1)
问题是当你从第一个数据模型开始时,Xcode会创建一个文件,让我们说: myProject.xcdatamodeld
假设您通过菜单编辑器>创建。添加模型版本,这是名为_myProject_v2_的模型的第二个版本。 Xcode实际上做的是:它创建一个名为原始模型的文件夹,并将原始模型复制到子文件夹中,然后使用包含新版本的文件创建第二个子文件夹:
myProject.xcdatamodeld
|
+- myProject.xcdatamodel
| |
| +- contents (a file containing the actual model)
|
+- myProject_v2.xcdatamodel
|
+- contents (a file containing the 2nd version of the model)
所以SVN感到困惑,因为他认为是一个文件(原始的myProject.xcdatamodeld)并存储在SVN中,现在是一个带有子文件夹的文件夹。 而且,这些由XCode创建的子文件夹最终会获得隐藏的 .svn 文件夹..所以我的解决方案是: