스토리 보드는 여러 사람이 공동 작업 할 때 git 워크 플로 관점에서 볼 때 가장 큰 고통입니다. 예를 들어, .storyboard 파일의 XML 에는 가장 최근의 파일 조작자가 실행중인 구성에 따라 시작 <document>
태그 toolsVersion
및 systemVersion
속성이 변경됩니다. 동기화 모두의 엑스 코드 버전은 정확하게 도움 보인다 toolsVersion
,하지만 systemVersion
개발자가 실행중인 특정 Mac 및 / 또는 OS X 버전에 따라 무엇을, 아무리을 변경합니다.
이것은 바보이지만 대부분 무해합니다. 그러나 걱정스러운 점은 다른 경우에는 git pull
. 다음에 스토리 보드를 열어서 스토리 보드를 자동으로 변경하는 것 입니다. 즉, Alice는 스토리 보드를 변경하고이를 커밋하여 리포지토리에 푸시합니다. Bob은 Alice의 변경 사항을 가져와 스토리 보드를 열어 추가 변경을 수행합니다. 스토리 보드를 여는 순간, 파일 아이콘은 즉시 수정되었지만 저장되지 않은 상태로 변경되며, git status
이상한 변화가 많이 발생했음을 나타냅니다. Bob이 아무것도 변경하지 않았거나 파일을 직접 저장하지 않고이 모든 것을 수행했습니다.
우리가보고있는 가장 일반적인 자동 변경 <classes>
은 스토리 보드 파일의 끝 부분에서 태그 계층 전체가 사라지거나 다시 나타나는 것입니다 . 우리는 이것을 일으키는 원인을 알지 못했습니다. 여러 .lproj 디렉토리에 여러 현지화 된 스토리 보드 버전이있을 수 있으며 Interface Builder에서이를 열 때 클래스 계층 구조가 일부에서 제거되어 다른 계층에 추가되거나 단독으로 남겨질 수 있습니다. 이로 인해 많은 소음이 발생 git diff
하지만 실제로는 기능이 손상되지 않습니다. 우리는 종종 git의 인덱스에 실제로 변경 한 내용을 선택적으로 추가하고, 커밋 한 다음 자연스럽고 무의미한 것을 버립니다.<classes>
변화. 이것은 커밋을 작고 멋지게 유지하는 것입니다. Xcode가 변경 사항을 계속 다시 수행하기 때문에 결국 귀찮게하기가 너무 어려워지고 누군가 다른 것들과 함께 분노를 범하게됩니다 ... 다른 사람의 Xcode가 변경하지 않기로 결정할 때까지는 괜찮습니다. 명백한 이유. (우리의 커밋 역사는 이것을 맹세합니다.)
다른 사람이이 행동을보고 있습니까? 하나 이상의 개발자 Mac에서 Xcode 버그 또는 구성 문제입니까? 우리는 XIB 파일과 공동 작업 할 때 비슷한 동작을 보았지만 스토리 보드는 이에 더 취약 해 보입니다.