Xcode5の* .xccheckoutファイルはVCSの下で無視されますか?


157

アップルは、Xcode 5でプロジェクトに関連する新しいタイプのファイル「xccheckout」を導入しました。

このファイルは「.xcodeproj / project.xcworkspace / xcshareddata /」ディレクトリにあり、プロジェクトのバージョン管理システムに関連しているようです。

サンプルファイルは次のとおりです。http//pastebin.com/5EP63iRa

このタイプのファイルはVCSでは無視する必要があると思いますが、よくわかりません。

だからここに質問があります:

  1. 「xccheckout」は無視する必要がありますか?
  2. その目的は何ですか?

この質問は非常に関連する傾向があります。したがって、文法的にも構文的にも正確にしたいのですが。英語を母国語とする場合、または英語に非常に堪能な場合は、自分の言語を確認するための支援をお願いしたいと思います。ありがとうございました!
Artem Abramov 2013年

1
マイナーな提案された変更:「Appleは新しいものを導入しました」、「サンプルファイルはこちらです:」。質問1の不一致の引用があります
ソフィソフトウェアLLC

3
私は常にgithub / gitignoreリポジトリを参照して、どのファイルを無視する必要があるかを確認します-> github.com/github/gitignore/blob/master/Objective-C.gitignore
eliocs

回答:


109

Xcode 5 ファイルチェックインする必要があり.xccheckoutます。一般に、ファイルはxcshareddataコミットする必要があります。

.xccheckoutファイルには、リポジトリは、ワークスペースで使用されているかについてのメタデータが含まれています。大きな違いはない単一のリポジトリ内の単一のプロジェクトの場合。しかし、異なるリポジトリからの複数のプロジェクトがあるワークスペースを使用している場合、ワークスペースに.xccheckoutファイルが存在することにより、Xcodeはワークスペースを構成するすべてのコンポーネントが何であるか、およびそれらをどこから取得するかを知ることができます。


8
共有するつもりがなかった場合、アップルはそれを保存する.xcuserdataので、含める必要があります。
Joshcodes 2013年

4
回答で述べたように、xccheckoutファイルには、ワークスペースで使用されるすべてのリポジトリの情報が含まれています。これは、使用するSCMシステムに関係なく当てはまります。そのようなワークスペースはsvnまたはgitにあり、そのプロジェクトはsvnリポジトリとgitリポジトリの両方にあります。
Chris Hanson

72
xccheckoutには各開発者のマシンに固有のキーと名前が含まれているようです... xcodeを実行するとすぐに、ファイル内のいくつかのキーが変更され、IDESourceControlWCCNameと呼ばれるものが<string> OurCompanyAPI </ string>から<stringに変更されます> our_company_api / string>-後者は、リポジトリのクローンを作成するときに使用した名前です。このファイルが共有されることになっている場合、Appleはかなり貧弱な仕事をしています。
Herr Grumps 2013

7
このファイルをチェックインすると、すべての同僚が異なるIDESourceControlProjectIdentifier ...を取得するため、.xccheckoutはコミットごとに変更されます。-_-
・クール

9
Appleが当初意図していたものに関係なく、.xccheckoutファイルはXcode 6ベータでいくつかの非常識な問題を引き起こしているため、VCSから削除することにしました。いくつかのキャッシュのバグに関連しているようで、XcodeはそれらをVCSから毎回自動的に再生成できると思います。
eonil 2014

63

*.xccheckoutファイルには、VCSのメタデータが含まれているので、VCSにチェックインするべきではありません。

一方、このファイルをチェックインしても、マージの問題やその他の問題は発生しません。

このファイルを無視したい場合は(推奨)、この行をプロジェクトのに追加する必要があります.gitignore

*.xccheckout

Abizernソリューションは、ワークスペース内のプロジェクトでは機能しません。ワークスペースを使用する場合、*.xccheckoutファイルへのパスは次のようになるためです<workspace-name>.xcworkspace/xcshareddata/<workspace-name>.xcchekout。そして、それは実際にはあなたが望む以上のものを無視します。

編集: このファイルは、プロジェクト内のおそらく多くのVCSシステムに関するXcodeの知識を管理するために存在します。ChrisHansonの回答を参照してください。99%を超えるプロジェクトの場合、.xccheckoutファイルは過剰な構成です。


1
このステートメントを「実際にはあなたが望む以上に無視する」と拡張できれば素晴らしいことです。具体的には、チェックインする必要のある、そのフォルダーに入る他のファイルのいくつかの例
Mark Edington '30

フォローアップ:この質問ではAdamの .gitignoreを使用しています。それは要旨として利用可能であり、xcshareddataフォルダーの内容についてのいくつかの説明があります。
マークエディントン2013

@ マーク:それは無視されproject.xcworkspace/ます。それは今のところ大丈夫かもしれませんが、私は新しいXcodeバージョンのためにそれを当てにしません。
Berik

6
この回答は誤りであり.gitignore、開発者に提供するGitHubの標準で指定しないでください*.xccheckout
Chris Hanson

2
このファイルが導入されてからリポジトリに含めた後、最近、すべてのリポジトリからこのファイルを削除し始めました。これにより、常にマージの競合が発生します。主に、自分のフレームワークをサブモジュールとして含むプロジェクトで発生します。そして、サブモジュールの管理にgitを使用しているので、このファイルから何も得られません。いいね、アップル、ありがとう、でも結構です。
Pascal

38

場合によります。このファイルには、使用しているリモートリポジトリへの参照が含まれています。PerforceやSubversionなどの集中型VCSを使用している場合は、全員のリモートリポジトリが同じであるため、ファイルをチェックインできます。

Mercurialやgitなどの分散VCSを使用しているが、それをCVCSであるかのように使用している場合(つまり、共有リポジトリからマシンの個人ワークスペースに直接複製された全員)、それでも確認したい場合があります。に。

ただし、すべてのユーザーが独自のリモートクローンを持つDVCSを使用している場合(たとえば、標準の使用パターンでGitHubを使用している場合)、このファイルをチェックインしないでください。そうした場合、プルリクエストでリポジトリ設定が要求されます。他のすべての人のxccheckoutファイルにコピーされますが、すべてのリモートリポジトリを使用しているため、リポジトリ設定は他の人とは異なります。


1
この答えは私には最高だと思います。それらをチェックインすると、チームコミットの差分に不要なチャットが発生しました。私は.gitignoreに追加してそれらを除外します:* / .xcworkspace / xcshareddata / *。xccheckout Appleがなぜとにかく.gitフォルダーにあるこの情報を冗長に保存することを選択したのかまだわかりません(私の推測はVCS全体で一貫して機能するようにする)
Juan CarlosMéndez15年

20

はい、Project.xccheckoutファイルをリポジトリにコミットする必要があります。Xcodeはこのファイルを使用して、ワークスペースを開いた他のユーザーに、ワークスペースで使用されているソース管理リポジトリのリスト全体と作業コピーの場所を伝えますに対する Git、SVN、またはその両方)。

ワークスペースを開くと、XcodeはそのProject.xccheckoutファイルを使用して、ワークスペースの一部を構成する他のリポジトリがあることをユーザーに通知し、どちらをチェックアウトするかを尋ねます。追加のリポジトリをチェックアウトするとき、Xcodeは、Project.xccheckoutファイルが生成されたときと同じワークスペース相対フォルダー構造に作業コピーを配置します。

クリス・ハンソンとして言った、それはおそらく、単一のリポジトリ、1 -プロジェクトワークスペースのために重要ではありませんが、より複雑な業務のために、それは確かに非常に便利でしょう。

この詳細については、WWDC 2013セッションのビデオ「Xcodeでのソース管理について」を参照してください。関連部分は約15分から始まります。


このファイルは、Xcode for SCMを使用する場合にのみ役立ちます。そうでない場合は、そのファイルはまったく必要ありません。さらに、gitフォークを使用している場合でも、その場合、リポジトリごとのパスは開発者ごとに異なります
Carlos Ricardo

3

これは、Xcodeの.gitignoreにあるものです。

#Xcode
*.xcuserstate
project.xcworkspace/
xcuserdata/

それは、プロジェクトがリポジトリーから私を探す方法のローカル状態に関連するすべてのものを保持します。

xccheckoutファイルはここにあるので、私のシステムではデフォルトで追跡されません。

Xcodeは改善され、共有する必要があるものとローカルに保持する必要があるものを分離しています。例えば; これらの行は、デフォルトのビルドスキームを無視します。これは、特定のビルドスキームを共有としてマークでき、無視されないディレクトリに配置されるため問題ありません。

ブレークポイントは無視されますが、特定のブレークポイントをプロジェクト間で共有されるものとしてマークすることができ、それらも無視されないディレクトリに配置されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.