1

私はsvnの操作にXcodeリポジトリを使用していますが、今日、コアデータモデルに新しいバージョンを追加してコミットしようとしました。しかし、エラーによる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をドルダーとして扱い、変更されたため、バージョン管理されなくなったことだと思います。しかし、私はそれから何をすべきですか?新しいモデルをコミットして手動で転送しないでください?)

4

2 に答える 2

1

Translator.xcdatamodeldディレクトリのzipまたはtarアーカイブを作成するsubversioncheckout/ commitフックを作成し、それをチェックインすることをお勧めします。実際のxcdatamodeldディレクトリは無視されます。(アーカイブを圧縮しないのがおそらく最善でしょう。圧縮すると、svnが差分を計算してリポジトリを大きくするのが難しくなるからです。)

于 2012-05-22T16:29:31.187 に答える
-1

問題は、最初のデータモデルから始めると、Xcodeがファイルを作成することです。たとえば、myProject.xcdatamodeld

メニューエディタ>モデルバージョンの追加を使用して、_myProject_v2_という名前のモデルの2番目のバージョンを作成するとします。Xcodeが実際に行うことは、元のモデルという名前のフォルダーを作成し、元のモデルをサブフォルダーにコピーしてから、新しいバージョンを含むファイルを使用して2番目のサブフォルダーを作成することです。

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. SVNからフォルダーmyProject.xcdatamodeldを削除します
  2. 残りのコミットを行う
  3. Xcodeを閉じて、フォルダプロジェクトの名前を変更します。eh:_projectFolder_old_
  4. プロジェクトのチェックアウトを実行します。これには、myProject.xcdatamodeldが含まれないことが望ましいです。
  5. xcode内から、myProjectという名前の偽のデータモデルを作成します。モデルには何も作成しないでください、それは役に立たない
  6. エディタ>モデルバージョンの追加を使用してバージョン管理します
  7. XCodeを閉じる
  8. myProject.xcdatamodeldの古いデータモデルをFinderで開きます(マウスの右ボタン、パッケージの内容を表示
  9. Finderで元のモデルを開き、コンテンツファイルを* projectFolder_old / myProject.xcdatamodeld / myProject.xcdatamodel *から新しいプロジェクトにコピーします:projectFolder / myProject.xcdatamodeld / myProject.xcdatamodel (いくつかのパッケージコンテンツ の表示を行う必要があります)
  10. 2番目のバージョンについても繰り返し、コンテンツファイルを* projectFolder_old / myProject.xcdatamodeld / myProject_v2.xcdatamodel *から新しいプロジェクトにコピーします:* projectFolder / myProject.xcdatamodeld / myProject_v2.xcdatamodel *
  11. Xcodeを再度開き、すべてが正しいことを確認します
  12. まだ追加されていない場合は、ファイルをsvnに追加し、コミットを実行します
于 2012-12-03T11:50:50.207 に答える