문제

Subversion의 중앙 집중식 모델이 현재 동일한 코드 기반에서 일하고 지속적으로 공개하는 엔지니어 팀이있는 웹 애플리케이션 개발에 더 잘 작동하는 것처럼 들립니다.

반면에 GIT의 분산 모델은 iPhone 앱에 호소력이 있습니다. 1) 저장소를 탐색하기 위해 '연결이 필요하지 않기 때문에 2) 훨씬 더 빨리 3) 개발이 공유되지만 자주 자주는 아닙니다.

내가 내 자신의 질문에 대답했다면 죄송합니다. 나는 토론을 자극한다는 의미는 아니며, 한 줄의 답변을 자유롭게주십시오.

도움이 되었습니까?

해결책

확실히 git. 올해 아이폰 프로그래밍과 git라는 두 가지 새로운 것을 배웠습니다. iPhone 프로그래밍으로 인해 내 인생을 미워했지만 Git은 소프트웨어 개발 방식을 향상 시켰습니다. 고통없는 가지는 내가 지점을 만들 수 있음을 의미했습니다. 모든 것, 세계의 다른 사람들에게 말하지 않고, 내가 완전히 만족할 때 나는 그것을 우리의 놀랍도록 안정적인 마스터/트렁크로 다시 합쳐질 수 있습니다.

대단합니다. 준비되지 않은 것을 풀어야 할 압력이없고 로컬에서 확인할 수 있으므로 작고 유용한 커밋을 조각하는 것이 더 쉽습니다.

나는 여전히 iPhone에 대해 결정되지 않았습니다.

다른 팁

나는 당신이 당신의 상점에서 구성한 것을 투표 할 것입니다.

분산 대 중앙 집중식 VC에 대해 알아야 할 한 가지는 분산 된 사람이 중앙 집중식으로 할 수있는 모든 것을 할 수 있다는 것입니다. GIT를 사용하면 여러 가지 방법으로 관리되는 단일 공개 저장소 인 단일 공개 저장소를 가질 수 있습니다. 예를 들어 모든 개발자가 밀어 넣을 수 있다면 중앙 집중식 VC에 대해 원하는 모든 것을 얻습니다. GIT의 모든 추가 이점과 CVS/SVN의 부적합이 없습니다.

Xcode에는 SVN 통합이 있지만 구현이 매우 열악하다는 것을 알게되었습니다. 우수한 것을 확인할 수 있습니다 (미안합니다) 버전 대안을 원한다면.

그 말을했지만, 나는 기본적으로 1 인 상점 (두 개의 기계를 사용하고 있지만)이며 git은 사용하기가 훨씬 더 좋다고 생각합니다.

나는 iPhone 개발과 관련하여 한 남자 상점이며, Mercurial (Git과 매우 유사)을 사용합니다. 저의 결정 요인은 분산 소스 관리 시스템을 사용하는 법을 배우고 싶다는 것입니다.

당신이 One Man Shop이라면 주요 차이점은 코드 분기 및 병합이 GIT/Mercurial에서 훨씬 쉽다는 것입니다. 사소한 차이점은 SVN 리포지토리가 훨씬 더 많은 디스크 공간을 차지한다는 것입니다 (그러나 iPhone 프로젝트에서는 큰 문제가 될 가능성이 크지 않습니다). 그 외에는 그다지 큰 차이를 알지 못할 것입니다.

소스 제어에 대한 일반적인 조언은 다음과 같습니다. 전복은 내가 가장 좋아하는 도구이며, 내가 가장 많은 경험을 가진 도구입니다. 즉, 모든 워크 스테이션에서 가장 먼저하는 일은 SVK를 다운로드하고 설치하는 것입니다. 이는 SVK를 설치하는 것입니다. 이는 SVK를 설치하는 것입니다. 이로 인해 SVK를 설치하는 것입니다. 이는 SVK 리포지토리에 대한 연결이 끊어졌습니다 (때로는 WiFi 액세스가없는 공원이나 뒷마당에서 노트북에서 주로 작업하기 때문에).

Subversion+SVK는 GIT 또는 Mercurial 또는 Bazaar의 이점을 대부분 제공합니다 (나는 그것들도 평가하고 있지만). Subversion의 향후 개발은 DVCS 사용 사례를 지원하기 위해 SVK/GIT/HG 기능을 추가 할 것이라고 생각합니다.

그래서 나는 당신이 이미 전복을 사용하고 있다면 GIT를 배치하지 말고 대신 SVK를 잡고 그와 함께 갈 것을 권고합니다 (또한 꽤 성숙합니다. 몇 년 동안 주변에있었습니다). 단점은 때때로 느리게 될 수 있다는 것입니다 (Perl로 작성).

SVK를 다운로드하십시오

SVN 지원은 Xcode에 내장되어 있습니다. 최신 클라이언트를 수동으로 설치할 수 있습니다.

SVN을 사용하도록 강요하는 사람이 없다면 GIT를 사용해야 할 것입니다. GIT는 SVN과 상호 작용할 수 있기 때문에 아마도 GIT를 사용해야합니다 (기술적으로는 SVN을 사용하는 동안 GIT를 사용할 수 있습니다. 아마도 너무 많은 문제 일 것입니다). .

Xcode 통합의 경우 Git에는 아무것도 없지만 Xcode에서 Keystrokes를 사용하여 GIT 작업을 수행하는 것은 어렵지 않습니다. 나는 가장 자주 사용되는 GIT 명령을 위해 그것을 할 수있는 스크립트를 작성하여 사용자 스크립트에 배치했습니다. 두 가지 예는 다음과 같습니다.

git 초기화

#!/bin/sh
# 
# This script initializes a git repository and adds all the elements 
# of the project directory to the repository


# Set the basic variables of the script.
project_directory=`osascript << APPLESCRIPT
tell application "Xcode"
    set mypath to the project directory of project 1
    set mypath to the POSIX path of mypath as string
end tell
APPLESCRIPT`  

cd $project_directory

# create the git project configuration files
cat << EOF > .gitignore
.gitignore
.DS_Store
.gitattributes
build/*
EOF

cat << EOF > .gitattributes
*.pbxproj -crlf -diff -merge
EOF 

/usr/local/bin/git init
/usr/local/bin/git add *

git 추가

#!/bin/sh
# 
# This script does a git adds a file of the user's choosing
# to the git repository.


# Set the basic variables of the script.
project_directory=`osascript << APPLESCRIPT
tell application "Xcode"
    set mypath to the project directory of project 1
    set mypath to the POSIX path of mypath as string
end tell
APPLESCRIPT`  

files_to_add=`%%%{PBXUtilityScriptsPath}%%%/AskUserForExistingFileDialog "Add files"`

cd $project_directory

/usr/local/bin/git add $files_to_add

여기에서 다른 사람을 신속하게 쓸 수있는 패턴을 볼 수 있습니다. "사용자 스크립트"대화 내부에서 키 시퀀스를 명령에 할당 할 수 있습니다. 나는 일상적인 사용에서 git을 사용하기 위해 명령 줄로 이동할 필요가 없다는 것을 알았습니다.

한동안 CVS 또는 전복을 사용하지 않았기 때문에 명확한 대답을 할 수는 없지만 다른 iPhone 개발자와 GIT 프로젝트를 사용했으며 잘 작동합니다.

유일한 잠재적 위험은 때때로 한 사람 이상이 새 파일을 추가하는 경우 Xcode 프로젝트의 합병 충돌을 해결해야한다는 것입니다. 그러나 SVN이 비슷한 문제를 가질 것이라고 생각합니다.

GIT를 사용하는 경우 GitHub.com은 저장소로 매우 잘 작동하며 Mac에서 GIT 작업을위한 훌륭한 문서 세트가 있습니다 (사이트의 해당 부분을 방문하여 설정할 수 있음).

Xcode에서 SVN 클라이언트를 어떻게 업그레이드합니까? 나는 과거에 1.4에서 1.5로 가기 위해이 작업을 수행했지만 지루하고 어렵고 문서화되지 않았으며 결함이있었습니다. 그 이후로 해킹을 철회하려고 시도했지만 (아파치 서버를 깨뜨 렸음) 이제 전혀 사용할 수 없습니다. 이것은 기본적으로 1.5를 지원하는 최신 Xcode로 업그레이드 한 후입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top