2011-07-29 4 views
2

저는 한동안 Subversion을 사용하여 XCode를 사용해 왔지만 하나의 개발자로 사용했을 때 문제가 발생하지 않았습니다. 2 개의 명령 만 사용하고 커밋하고 추가했습니다.Subversion은 XCode 4.0을 사용하는 다중 사용자 환경에서 사용합니다.

하지만 지금은 (다른 버전의 컨트롤을 사용한 적이없는) 다른 개발자와 코드를 공유해야하고 코드 통합/병합이 악몽이되었습니다. .h/.m 파일을 통합/병합 할 때 아무런 문제가 발생하지 않지만 ".nib", "xcodeproj"".xcdatamodeld" 개의 파일이 나오는 즉시 우리는 무엇을해야할지 모릅니다.

"xcodeproj"을 병합하려고 할 때마다 프로젝트가 손상되어 병합 ".xcdatamodeld"이 우리에게 일종의 불가능했습니다.

그래서 누군가가 다중 사용자 환경에서 XCode 4.0과 함께 Subversion/git/mercurial을 효과적으로 사용하는 방법에 대한 경험을 공유 할 수 있는지 궁금합니다. 또는 다중 사용자 환경에서 Subversion을 효과적으로 사용하는 방법을 설명 할 수있는 링크를 공유하십시오.

감사합니다.

답변

0

내가 알고있는 이런 종류의 파일을 병합 할 수있는 안전한 방법이 없습니다. 따라서 한 번에 한 사람 만이 파일을 변경하도록해야합니다. 그렇게하면 항상 작동하지 않으므로 파일에서 변경 한 내용을 커밋 메시지로 기록하십시오. 그런 다음 충돌이있는 경우 파일의 많은 부분을 변경 한 버전을 가져 와서 수동으로 다시 해결할 수 있습니다.

일반적으로 .xcodeproject에 새 소스 파일을 추가하거나 .nib의 요소 정렬을 변경하는 것과 같이 큰 문제는 아닙니다. 프로젝트가 거대하거나 펜촉이 전체 인터페이스를 포함하고 있다면 문제가됩니다. 실제로 잘 작동하려면 프로젝트가 너무 커지면 하위 프로젝트로 분할해야합니다.

0

나는 2 명의 다른 개발자들에게 Xcode with git와 같은 문제가있다. 불행히도 Xcode 프로젝트 파일은 XML 파일이며, 프로젝트에 포함 된 파일을 추적하고 설정합니다. 확실하지 않지만 .nib 파일도 XML 파일이라고 생각합니다. 누군가가 저를 바로 잡을 수 있습니다.

힘내는 Xcode 프로젝트 파일을 병합하는 데 큰 도움이되었으며, * .nib 파일에도 문제가 없었습니다. 우리가 한 유일한 시간은 같은 이름의 파일을 추가/제거하거나 많은 파일을 많이 삭제하고 추가하는 경우입니다.

우리가 해결할 수있는 유일한 방법은 파일을 추가하거나 제거하는 즉시 서로를 밀어 넣는 것입니다. 그래서 그 사람은 최신 파일을 가지고 있고 자신의 저장소에 파일을 추가하지 않았고 동일한 파일을 가지고있는 최신 커밋을 가져 왔습니다. 또는 제거되었거나 이름이 바뀐 파일에 변경 내용을 추가하여 작업합니다.

파일을 추가하거나 제거하는 즉시 우리가 찾은 최상의 해결책입니다. 다른 모든 사람들이 팀을 끌어 당깁니다. 훌륭한 솔루션이 아닙니다. 그러나 어쨌든 자주 커밋해야합니다.

4

Subversion을 사용하고 계십니까? 저장소에있는 파일의 90 %에서 99 %에 대해 checkout, edit, commit의 표준 Subversion 워크 플로우가 잘 작동합니다. 그러나 JPEGS 및 GIFS와 같은 일부 유형의 파일의 경우 단순히 병합하지 마십시오. 이 경우 이전 SCCS 및 RCS 요일에 사용했던 방법대로해야합니다. 파일을 편집하고 커밋하기 전에 파일을 잠 가야합니다.

파일을 잠그면 다른 사람이 동일한 파일을 편집하지 못하며 파일 작업을 수행하는 동안 변경 내용을 커밋 할 수 없습니다. 그것은 원유이지만 작동합니다.Subversion에서는 편집중인 파일을 항상 잠글 수 있지만 파일에 svn:needs-lock 속성이 있으면 읽기 전용으로 체크 아웃됩니다. 쓰기가 가능하도록 파일을 편집하기 전에 파일을 잠 가야하며 잠겨 있지 않으면 파일을 커밋 할 수 없습니다.

해당 파일의 경우 svn:needs-lock 속성을 설정하십시오.

Subversion 클라이언트 구성에서 auto-properties을 설정하여 새로 추가 된 모든 파일 (접미사에 따라 다름)에이 속성을 자동으로 설정할 수 있습니다.

그리고 모든 .nibs와 xcodeproj 및이 유형의 다른 모든 파리에 svn : needs-lock이 설정되어 있는지 확인하려면 내 pre-commit hook을 사용하면 이러한 파일을 차단할 수 있습니다 이 속성이 설정되어 있지 않으면 커밋되지 않습니다.

+0

David W. 사전 커밋 후크가 활성화되어 있지 않습니다. 링크를 수정 해 주시겠습니까? – Dejell

+0

@Odelya 사전 커밋 훅을 [Github] (https://github.com/qazwart/SVN-Precommit-Kitchen-Sink-Hook)로 이동 했으므로 공개적으로 사용할 수 있습니다. –

+0

고마워요 - ou는 Subversion 클라이언트 구성에서 자동 속성을 설정하여 새로 추가 된 모든 파일 (접미사에 따라 다름)에 자동으로이 속성을 설정할 수 있습니다. XCode 클라이언트로 할 수 있습니까? – Dejell

관련 문제