VCS에서 Xcode5의 * .xccheckout 파일을 무시해야합니까?


157

Apple은 Xcode 5에 "xccheckout"이라는 새로운 프로젝트 관련 파일 형식을 도입했습니다.

이 파일은 ".xcodeproj / project.xcworkspace / xcshareddata /"디렉토리에 있으며 프로젝트의 버전 관리 시스템과 관련이있는 것 같습니다.

예제 파일은 다음과 같습니다. http://pastebin.com/5EP63iRa

VCS에서는 이러한 유형의 파일을 무시해야한다고 확신하지만 확실하지 않습니다.

여기 질문이 있습니다 :

  1. "xccheckout"을 무시해야합니까?
  2. 그 목적은 무엇입니까?

이 질문은 매우 관련성이있는 경향이 있습니다. 그래서 나는 문법적으로 문법적으로 정확하기를 원합니다. 영어를 모국어로 사용하거나 영어를 능숙하게 구사할 수 있다면 언어 확인에 도움을 요청하고 싶습니다. 감사합니다!
Artem Abramov

1
사소한 변경 사항 : "Apple에서 새로운 기능을 도입했습니다", "예제 파일 ::" 질문 1에 불일치 한 인용문이 있습니다.
Sofi Software LLC

3
나는 항상 참조하는 github에 / gitignore의 repo 무시해야하는 파일을 알고 -> github.com/github/gitignore/blob/master/Objective-C.gitignore
eliocs을

답변:


109

당신은 해야 엑스 코드 5에서 확인 .xccheckout파일; 일반적으로 파일은 xcshareddata커밋해야합니다.

.xccheckout파일 저장소는 작업 공간에서 사용 되는가에 대한 메타 데이터가 포함되어 있습니다. 별다른 차이가없는 단일 리포지토리의 단일 프로젝트. 그러나 다른 저장소의 여러 프로젝트가있는 작업 영역을 사용하는 경우 작업 영역에 .xccheckout파일이 있으면 Xcode는 작업 영역을 구성하는 모든 구성 요소가 무엇이며 어디서 가져올 수 있는지 알 수 있습니다.


8
공유 할 의도가 없다면 Apple은이를 저장 .xcuserdata해야합니다.
Joshcodes

4
내 대답에서 말했듯이 xccheckout 파일에는 작업 공간에서 사용되는 모든 리포지토리에 대한 정보가 포함되어 있습니다. 즉, 사건 에 관계없이 그들이 무엇을 사용 SCM 시스템의 이러한 작업은 SVN이나 자식에있을 수 있습니다, 그 프로젝트는 SVN과 자식 저장소의 혼합에있을 수 있습니다 -.
Chris Hanson

72
xccheckout에는 각 개발자의 컴퓨터에 고유 한 키와 이름이 포함되어 있습니다 ... xcode를 실행하자마자 파일의 일부 키가 변경되고 IDESourceControlWCCName이라는 이름이 <string> OurCompanyAPI </ string>에서 <string으로 변경됩니다. > our_company_api / string>-후자는 저장소를 복제 할 때 사용한 이름입니다. 이 파일을 공유해야한다면, Apple은 꽤 열악한 작업을 수행 한 것입니다.
Herr Grumps

7
이 파일을 체크인하면 모든 동료가 다른 IDESourceControlProjectIdentifier를 얻습니다. 따라서 각 커밋마다 .xccheckout이 수정됩니다. -_-
Cœur

9
Apple이 원래 의도했던 것에 관계없이 .xccheckout파일은 Xcode 6 베타에서 미친 문제를 일으키고 있으며 VCS에서 제거하기로 결정했습니다. 캐싱 버그와 관련이있는 것으로 보이며 Xcode는 매번 VCS에서 자동으로 버그를 재생성 할 수 있다고 생각합니다.
eonil

63

*.xccheckout파일은 VCS의 메타 데이터를 포함, 따라서 VCS에 체크인 할 수 없습니다.

반면에 :이 파일을 체크인하면 병합 문제 또는 다른 문제가 발생하지 않을 수 있습니다.

이 파일을 무시하려면 (권장) 프로젝트에 다음 줄을 추가해야합니다 .gitignore.

*.xccheckout

Abizern솔루션 은 작업 공간 내의 프로젝트에서 작동하지 않습니다. 작업 공간을 사용할 때 *.xccheckout파일 경로 는 다음과 같습니다 <workspace-name>.xcworkspace/xcshareddata/<workspace-name>.xcchekout. 그리고 실제로 당신이 원하는 것보다 더 많은 것을 무시합니다.

편집 : 이 파일은 프로젝트의 많은 VCS 시스템에 대한 Xcode의 지식을 관리하기 위해 존재합니다 .Chris Hanson 답변을 참조하십시오 . 프로젝트의 99 % 이상에 대해 .xccheckout 파일은 구성 오버 킬입니다.


1
이 문장을 확장 할 수 있다면 정말 좋을 것입니다. "실제로 원하는 것보다 더 많이 무시합니다." 특히 해당 폴더에 체크인해야하는 다른 파일의 예가 있습니다.
Mark Edington

후속 조치 : 이 질문 에서 Adam 의 .gitignore를 사용하고 있습니다. gist 로 사용할 수 있으며 xcshareddata 폴더 내용에 대한 설명이 있습니다.
Mark Edington

@ Mark : 무시합니다 project.xcworkspace/. 지금은 어색 할 수도 있지만 새로운 Xcode 버전에서는 그럴 것이라고 생각하지 않습니다.
Berik

6
이 답변은 정확 하지 않으며.gitignore 개발자에게 제공하는 GitHub의 표준 은 명시 하지 않아야합니다.*.xccheckout
Chris Hanson

2
이 파일이 소개 된 이후이 파일을 내 repos에 포함시킨 후 최근에 모든 repos에서 해당 파일을 제거하기 시작했습니다. 이것은 주로 자체 프레임 워크를 하위 모듈로 포함하는 프로젝트에서 병합 충돌을 항상 발생 시킵니다. 그리고 하위 모듈 관리에 git을 사용하기 때문에이 파일에서 아무것도 얻지 못했습니다. 좋은 시도, 애플, 감사합니다.
Pascal

38

때에 따라 다르지. 파일에는 사용중인 원격 저장소에 대한 참조가 포함되어 있습니다. Perforce 또는 Subversion과 같은 중앙 집중식 VCS를 사용하는 경우 모든 사람의 원격 저장소가 동일하므로 파일을 체크인하고 체크인 할 수 있습니다.

Mercurial 또는 git과 같은 분산 VCS를 사용하지만 CVCS 인 것처럼 사용하는 경우 (즉, 모든 사용자가 공유 저장소에서 머신의 개인 작업 공간으로 직접 복제 한 경우) 여전히 확인하고 싶을 수 있습니다. 에.

그러나 표준 사용 패턴으로 GitHub를 사용하는 것과 같이 자체 원격 클론을 가진 모든 사람과 함께 DVCS를 사용하는 경우이 파일을 체크인하지 않으려 고합니다. 풀 요청은 리포지토리 설정을 요구합니다. 다른 모든 xccheckout 파일로 복사되지만 저장소 설정은 다른 원격 저장소를 사용하고 있기 때문에 다른 사용자의 설정과 다릅니다.


1
이 대답은 나에게 최고인 것 같습니다. 그것들을 체크인하는 것은 우리 팀 커밋을 위해 불필요한 차이를 유발했습니다. 나는 그들을 유지하기 위해 다음과 같은 .gitignore에 추가 : * / .xcworkspace / xcshareddata / * 애플은 중복 어쨌든 (내 유일한 추측에있는 .git 폴더에 있는지이 정보를 저장하기 위해 선택한 이유를 나는 아직도 이해가 안 xccheckout. 상황이) VCS 일관되게 작동하도록
후안 카를로스 멘데스

20

예, Project.xccheckout파일을 저장소에 커밋해야합니다. Xcode는이 파일을 사용하여 작업 공간을 여는 다른 사용자에게 작업 공간에서 사용하는 전체 소스 제어 저장소 목록 및 작업 공간과 관련된 작업 사본위치 ( Git, SVN 또는 둘 다) 를 알려줍니다 .

작업 공간을 열면 Xcode는 Project.xccheckout파일을 사용 하여 작업 공간의 일부를 형성하는 다른 저장소가 있음을 사용자에게 알리고 체크 아웃해야 할지를 묻습니다. 추가 리포지토리를 체크 아웃 할 때 Xcode는 Project.xccheckout파일을 생성 할 때와 동일한 작업 공간 기준 폴더 구조에 작업 복사본을 배치합니다 .

크리스 핸슨은 말했다, 아마 단일 저장소, 하나의 프로젝트 작업을 위해 중요하지 않습니다,하지만 더 복잡한 업무를 위해 참으로 아주 편리 할 것입니다.

이에 대한 자세한 내용은 WWDC 2013 세션 비디오 Xcode의 소스 제어 이해를 참조하십시오 . 관련 부분은 약 15 분에 시작됩니다.


이 파일은 SCM에 Xcode를 사용하는 경우에만 유용하며, 그렇지 않으면 해당 파일이 전혀 필요하지 않습니다. 그리고 만약 당신이 git fork로 작업한다면, repo 경로는 개발자마다 고유 할 것입니다
Carlos Ricardo

3

이것이 Xcode의 .gitignore에있는 것입니다.

#Xcode
*.xcuserstate
project.xcworkspace/
xcuserdata/

프로젝트가 저장소에서 나를 찾는 방식의 로컬 상태와 관련된 모든 것을 유지합니다.

xccheckout 파일이 여기에 있으므로 기본적으로 내 시스템에서 추적되지 않습니다.

Xcode는 더 나아졌으며 공유해야 할 것과 로컬로 유지해야 할 것을 분리했습니다. 예를 들어; 이 줄은 기본 빌드 구성표를 무시합니다. 이는 특정 빌드 구성표를 공유 된 것으로 표시 할 수 있고 무시되지 않은 디렉토리에 저장되기 때문에 좋습니다.

중단 점은 무시되지만 특정 중단 점을 프로젝트에서 공유되는 것으로 표시 할 수 있으며 무시되지 않은 디렉토리에도 배치됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.