2012-05-22 192 views
1

我使用Xcode存儲庫來處理svn,今天我向我的核心數據模型添加了一個新版本,並試圖提交它。但是Xcode中通過錯誤:核心數據版本控制和SVN

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 treates xcdatamodel的多爾德,並且因爲它改變了它不納入版本控制的了。但是,我應該怎麼做呢?不要提交新的模型並手動傳輸它?)

回答

1

我會建議編寫一個可以創建Translator.xcdatamodeld目錄的zip或tar歸檔文件的Subversion簽出/提交鉤子,然後檢查其中的內容。實際的xcdatamodeld目錄將被忽略。 (這很可能是最好來壓縮歸檔文件,因爲壓縮只會使它更難爲SVN計算比較和讓你的倉庫較大。)

+0

謝謝,這真是一個非常不錯的鉤子) –

0

的問題是,當你開始第一個數據模型, 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文件夾 ..所以我的解決辦法是:

  1. 刪除文件夾myProject.xcdatamodeld從SVN
  2. 執行提交的其餘
  3. 密切Xcode和重命名文件夾的項目:誒:_projectFolder_old_
  4. 做的項目,該項目希望不會有myProject.xcdatamodeld的結賬
  5. 從xcode中創建一個名爲的僞造數據模型myProject。不要在模型中創建任何東西,也沒用
  6. 版本,它與編輯>添加模型版本
  7. 密切的XCode在Finder中
  8. 打開你的舊數據模型在myProject.xcdatamodeld(鼠標右鍵, 顯示包內容
  9. 在Finder中打開原始的模型和文件從* projectFolder_old/myProject.xcdatamodeld/myProject.xcdatamodel *到新的項目中複製內容:projectFolder/myProject.xcdatamodeld /平方米yProject.xcdatamodel(你需要做兩顯示包內容
  10. 重複你的第二個版本,文件從* projectFolder_old/myProject的複製內容。xcdatamodeld/myProject_v2.xcdatamodel *新的項目:* projectFolder/myProject.xcdatamodeld/myProject_v2.xcdatamodel *
  11. 重新打開Xcode和檢查無誤後
  12. 添加到svn的文件時,如果尚未添加,並做了提交