SVN 또는 Git을 사용해야합니까? [닫은]


321

새로운 분산 프로젝트를 시작하고 있습니다. SVN 또는 Git을 사용해야합니까? 그 이유는 무엇입니까?


5
예, git은 Mac에서 작동합니다. macports를 사용하여 설치하면 커밋 및 찾아보기 인터페이스에 mac 프론트 엔드를 설치합니다.
세스 존슨


3
@Andre-MonoDevelop를 사용할 수 있기 때문에 Vault에서 SVN으로 전환하여 Mac 또는 PC에서 .NET 소프트웨어를 개발할 수 있습니다. Vault에는 고객이 없지만 SVN에는 고객이있었습니다 :-)
schmoopy


4
Github / 비트 버킷 + 소스 트리 = 천국! - sourcetreeapp.com
thecodeassassin

답변:


253

SVN은 하나의 저장소이고 많은 클라이언트입니다. 힘내는 클라이언트 리포지토리가 많은 리포지토리이며, 각각 사용자가 있습니다. 사람들이 외부 서버로 작업을 푸시하지 않고도 로컬에서 자신의 편집 내용을 추적 할 수있는 지점으로 분산되어 있습니다.

SVN은 Git이 자신의 Git 리포지토리를 가진 각 사용자를 기반으로하는 더 중심적인 위치에 설계되었으며 이러한 리포지토리 변경 사항은 다시 중앙 위치로 변경됩니다. 이런 이유로 Git은 개인에게 더 나은 로컬 버전 관리 기능을 제공합니다.

한편 , TortoiseGit , GitExtensions 중에서 선택할 수 있습니다 (그리고 자신의 클라이언트 인 github ( Windows 용 GitHub)에서 "중앙"git-repository를 호스팅하는 경우 ).

SVN에서 벗어나기를 원한다면 Bazaar 를 약간 평가 해 볼 수 있습니다 . 이 분산 요소가있는 차세대 버전 제어 시스템 중 하나입니다. git과 같이 POSIX에 의존하지 않으므로 기본 Windows 빌드 가 있으며 강력한 오픈 소스 브랜드가 있습니다.

그러나 아직 이러한 종류의 기능이 필요하지 않을 수도 있습니다. 한 번 봐 가지고 분산 VCSes의 특징, 장점과 단점 . SVN 오퍼보다 더 필요한 경우 하나를 고려하십시오. 그렇지 않은 경우 SVN의 (현재) 우수한 데스크탑 통합을 고수 할 수 있습니다.


24
Hg (Mercury)
Joel

24
TortoiseGit을 설치하고 최신 휴대용 MSysGit 버전을 가져와 TortoiseGit에 위치를 알려줄 수 있습니다. svn의 가난한 이름 바꾸기 지원이 마침내 나를 충분히 화나게했기 때문에 방금 큰 svn 저장소를 git으로 옮겼습니다.
우리 모두 모니카

4
2 년이 지난 지금 우리는 몇 가지 좋은 윈도우 도구를 가지고 있습니다. 현재 MSysGit과 함께 netbeans를 사용하고 있습니다. TortoiseGit 과도 행운이있었습니다. 프로덕션에 사용하기에 충분하다고 생각합니다. Subversion git에서 간단한 충돌을 관리하는 것이 얼마나 어려운지를 고려하면 크게 향상됩니다.
Keyo

24
우리는 Windows에서 Git을 많이 사용하고 있으며 오랫동안 가지고 있습니다. Git은 Windows에서 절대적으로 환상적입니다.
Charlie Flowers

13
@Oli 여기에 의견과 경험을 바탕으로 답변 (Windows git client에 대한 esp)을 업데이트하는 것이 좋습니다. 현재 답변은 작성된 후 2-3 년이 지났으므로 편향 된 것처럼 보입니다.
amit

111

나는 "Windows에서는 좋지 않다"라는이 개념을 결코 이해하지 못했다. 나는 Windows에서만 독점적으로 개발했으며 git에 아무런 문제가 없었습니다.

나는 git over subversion을 추천 할 것이다; 그것은 단순히 훨씬 더 다재다능하고 subversion이 결코 할 수 없었던 방식으로 "오프라인 개발"을 허용합니다. 상상할 수있는 거의 모든 플랫폼에서 사용할 수 있으며 아마도 사용할 것보다 많은 기능을 가지고 있습니다.


9
반면에, 창에서 git과 관련하여 꽤 문제가 있었는데, 실제로 내 저장소에 이상한 일이있었습니다. 그리고 cygwin에서 가장 최신 버전을 사용하고있었습니다 (한 달 전과 같았습니다).
Roman Plášil

7
@Roman : Cygwin 포트는 기본 win32 포트와 거의 동일하지 않습니다. Cygwin 포트의 테스트가 훨씬 덜 될 것으로 예상됩니다.
SamB

49
"아마도 사용하지 않을 것보다 많은 기능"은 제 책에 적기입니다
BT

26
@ BT "붉은 깃발"에 동의하지 않습니다. 나는 종종 무언가를 할 수있는 방법이 있기를 원한다는 것을 알게되었고, 약간의 검색을 한 후에 내가 알지 못하는 몇 가지 명령이 있다는 것을 알게되었습니다. Windows 컴퓨터에서도 GIT를 사용하지만 아직 큰 문제는 없습니다.
testing123

@ testing123 그러나 실제로는 "사용하지 않을 것"이라는 기능이 아닙니다. 실제로 사용하게 되었기 때문입니다.
mulllhausen 2016

77

다음은 Git vs. SVN (2009 년 9 월)에 대해 삭제 된 이후 중복 된 질문 에 대한 답변의 사본입니다 .

보다 나은? 일반적인 링크 WhyGitIsBetterThanX 외에는 서로 다릅니다.

하나는 지점에 대한 저렴한 사본을 기반으로하는 중앙 VCS이고 태그는 다른 그래프 (Git)는 개정 그래프를 기반으로하는 분산 VCS입니다. VCS의 핵심 개념도 참조하십시오 .


그 첫 부분은 두 프로그램 (SVN과 Git)의 기본 목적은 동일하지만 그것들이 상당히 다르게 구현되었다고 주장하는 잘못된 정보 주석을 생성했습니다. SVN과 Git
근본적인 차이점 을 명확히하기 위해 다음 같이 바꾸어 보겠습니다.

  • SVN은 개정 제어 의 세 번째 구현입니다 . RCS, CVS 및 SVN 은 버전이 지정된 데이터의 디렉토리를 관리합니다. SVN은 VCS 기능 (라벨링 및 병합)을 제공하지만 태그는 디렉토리 사본 일 뿐이며 (태그 디렉토리의 아무 것도 터치하지 않을 경우를 제외하고 분기와 유사) 병합은 여전히 ​​복잡하며 메타를 기반으로합니다. -이미 병합 된 것을 기억하기 위해 데이터가 추가되었습니다.

  • Git은 파일 컨텐츠 관리 (파일 병합 도구)로, 커밋 의 DAG ( Directed Acyclic Graph )를 기반으로 진정한 버전 제어 시스템으로 발전했습니다. ) 및 where 태그는 실제 메타 데이터입니다.

당신이 같은 것을 달성하고 같은 문제를 해결할 수 있기 때문에 "기본적으로"다르지 않다고 말하는 것은 ... 많은 수준에서 명백한 거짓입니다.

  • 복잡한 병합이 많은 경우 SVN을 사용하면 병합 시간이 길어지고 오류가 발생하기 쉽습니다. 많은 브랜치를 생성 해야하는 경우 SVN보다 Git을 사용하여 훨씬 쉽게 더 쉽게 브랜치를 관리하고 병합해야합니다. 특히 많은 수의 파일이 관련된 경우 (속도가 중요합니다)
  • 진행중인 작업에 대해 부분적으로 병합하는 경우 Git 준비 영역 (인덱스)을 활용하여 필요한 것만 커밋하고 나머지는 숨기고 다른 지점으로 이동합니다.
  • 오프라인 개발이 필요한 경우 ... Git을 사용하면 다른 리포지토리에서 수행하려는 워크 플로에 관계없이 항상 로컬 리포지토리를 통해 "온라인"상태가됩니다.

여전히 오래된 (삭제 된) 답변에 대한 의견은 다음과 같이 주장했습니다.

VonC : 구현의 근본적인 차이 (차이는 매우 근본적이며 우리 모두는 이에 동의합니다)와 목적의 차이를 혼동하고 있습니다.
그것들은 모두 같은 목적으로 사용되는 도구입니다. 이전에 SVN을 사용했던 많은 팀들이 Git을 위해 그것을 성공적으로 버릴 수 있었던 이유입니다.
그들이 같은 문제를 해결하지 못했다면이 대체 가능성 은 존재하지 않을 것입니다.

내가 대답 한 :

"substitutability"... 재미있는 용어 ( 컴퓨터 프로그래밍에 사용됨 ).
물론 Git은 SVN의 하위 유형이 아닙니다.

둘 다 동일한 기술 기능 (태그, 브랜치, 병합)을 달성 할 수 있지만 Git은 방해가되지 않으며 도구 자체에 대해 생각하지 않고도 파일 내용에 집중할 수 있습니다 .

당신은 확실히 (항상) 단지 (전술에 대한 참조이다 "(작업이 수행 ... 정확성) 그 프로그램의 바람직한 특성 중 하나를 변경하지 않고"힘내으로 SVN을 대체 할 수 대체 가능성 정의 ) :

  • 하나는 확장 버전 도구이고 다른 하나는 실제 버전 제어 시스템입니다.
  • 하나는 단순한 병합 워크 플로와 (너무 많지 않은) 병렬 버전을 갖춘 중소 규모 모 놀리 식 프로젝트에 적합합니다. SVN은 이러한 목적으로 충분하며 모든 Git 기능이 필요하지 않을 수 있습니다.
  • 다른 하나 는 복잡한 병합 워크 플로의 여러 분기, 분기의 병렬 버전, 병합 병합 등에서 여러 개의 파일을 사용 하여 여러 구성 요소 (구성 요소 당 하나의 리포지토리)를 기반으로하는 중대형 프로젝트를 허용 합니다. SVN으로 할 수는 있지만 Git을 사용하면 훨씬 좋습니다.
    SVN은 병합 워크 플로를 사용하여 어떤 크기의 프로젝트도 관리 할 수 ​​없습니다. 힘내.

다시 말하지만, 그들의 본질은 근본적으로 다릅니다 (이는 다른 구현으로 이어지지 만 요점이 아닙니다).
하나는 디렉토리와 파일로 개정 관리를보고 다른 하나는 파일의 내용 만 볼 수 있습니다 (빈 디렉토리는 Git에 등록되지 않습니다!).

일반적인 최종 목표는 동일 할 수 있지만 동일한 방식으로 사용할 수 없으며 동일한 범위의 문제를 해결할 수 없습니다 (범위 또는 복잡성).


10
나는 git과 svn이 근본적으로 다르다는 것에 동의하지 않지만 많은 점에 동의하지 않습니다. svn은 cvs를 대체하기 위해 작성되었을 수도 있지만 cvs는 RCS 위에서 스크립트로 시작되었으므로 직접적인 관련이 있습니다. 여전히 인용하는 사람은 전적으로 옳습니다. 파일의 개정, 구현 및 발생하는 프로세스 (또는 파일 수행 방법)는 기본적으로 구현 세부 사항입니다. CRC와 SHA1의 차이점과 근본적으로 매우 다르지만 동일한 작업을 수행합니다.
Erik Funkenbusch

37

거의 언급되지 않는 SVN의 2 가지 주요 장점 :

  1. 큰 파일 지원. 코드 외에도 SVN을 사용하여 홈 디렉토리를 관리합니다. SVN은 TrueCrypt 파일에서 질식하지 않는 유일한 VCS (분산 여부)입니다 (500MB 이상 파일을 효과적으로 처리하는 다른 VCS가있는 경우 수정하십시오). diff 비교가 스트리밍되기 때문입니다 (매우 중요한 포인트입니다). Rsync는 양방향이 아니므로 허용되지 않습니다.

  2. 부분 저장소 (subdir) 체크 아웃 / 체크인. Mercurial과 bzr은 이것을 지원하지 않으며 git의 지원은 제한적입니다. 이것은 팀 환경에서는 좋지 않지만 내 홈 디렉토리에서 다른 컴퓨터의 무언가를 확인하고 싶다면 귀중합니다.

단지 내 경험.


6
"500MB 이상의 파일을 효과적으로 처리하는 다른 VCS가있는 경우 수정하십시오"-Perforce!
james creasy

8
Perforce = 무료입니다. 또한 모든 플랫폼에서 Perforce를 사용할 수있는 것은 아닙니다.
WhyNotHugo

4
SVN 저장소를 truecrypt 컨테이너에 넣지 않겠습니까? 또한 ssh를 통해 터널링하고 해당 특정 저장소를 다른 truecrypt 파일 내에 저장하도록 서버를 구성 할 수 있습니다. 이는 해당 리포지토리를 부분적으로 체크 아웃 할 수있는 이점이 있습니다.
WhyNotHugo

1
@Hugo 내가 아는 한 Perforce 클라이언트는 Windows, Unix, Linux 변형, Mac, Amiga, BeOS, Cygwin, HPUX, IBM AS / 400, OS / 2, DEC VMS 및 Novell File Server에서 사용할 수 있습니다. 목록에서 누락 된 관련 플랫폼이 있습니까?
EIS

1
예, OpenBSD (그리고 경험을 통해 이것을 알았으므로 이것을 구글 할 필요가 없었습니다). 내가 잘못했을 수도 있지만 maemo에서 작동하지 않을 것이라고 생각합니다 (예, maemo에서 git을 사용합니다).
WhyNotHugo

25

더 많은 연구를하고이 링크를 검토 한 후 : https://git.wiki.kernel.org/articles/g/i/t/GitSvnComparison_cb82.html

(아래 일부 추출물) :

  • 엄청나게 빠릅니다. 내가 사용한 다른 SCM 은이를 따라갈 수 없었으며 Subversion, Perforce, darcs, BitKeeper, ClearCase 및 CVS를 포함하여 많이 사용했습니다.
  • 완전히 배포되었습니다. 저장소 소유자는 내가 일하는 방식을 지시 할 수 없습니다. 랩톱에서 연결을 끊은 상태에서 분기를 만들고 변경 사항을 커밋 한 다음 나중에 다른 리포지토리와 동기화 할 수 있습니다.
  • 많은 미디어에서 동기화가 발생할 수 있습니다. WebDAV를 통해 HTTP를 통해, FTP를 통해 또는 메시지 수신자가 적용 할 패치가 포함 된 이메일을 전송하여 SSH 채널. 중앙 저장소는 필요하지 않지만 사용할 수 있습니다.
  • 지점은 Subversion보다 훨씬 저렴합니다. 브랜치를 만드는 것은 41 바이트 파일을 디스크에 쓰는 것만 큼 간단합니다. 브랜치를 삭제하는 것은 해당 파일을 삭제하는 것만 큼 간단합니다.
  • Subversion 브랜치와 달리 전체 기록이 적용됩니다. 이상한 사본을 수행하지 않고 사본을 살펴볼 필요가 없습니다. Subversion을 사용할 때 나는 브랜치를 만들기 전에 발생한 브랜치에서 파일의 기록을 보는 것이 항상 어색하다는 것을 알았습니다. from #git : spearce : 페이지에서 SVN에 대해 한 가지 이해하지 못합니다. 나는 SVN 지점을 만들었고 기록을 탐색하면 지점의 전체 기록이 파일로 표시됩니다.
  • Git에서는 브랜치 병합이 더 간단하고 자동적입니다. Subversion에서는 올바른 병합 명령을 생성 할 수 있도록 마지막으로 병합 한 버전을 기억해야합니다. 힘내이 작업을 자동으로 수행하고 항상 올바르게 수행합니다. 즉, 두 개의 브랜치를 병합 할 때 실수 할 가능성이 줄어 듭니다.
  • 지점 병합은 리포지토리의 올바른 기록의 일부로 기록됩니다. 두 개의 브랜치를 병합하거나 브랜치를 트렁크에서 다시 병합하는 경우 해당 병합 작업은 언제, 언제 수행했는지와 함께 repostory 기록의 일부로 기록됩니다. 병합이 로그에있을 때 누가 병합을 수행했는지 논쟁하기가 어렵습니다.
  • 저장소 작성은 간단한 작업입니다. mkdir foo; cd foo; git init 그게 다야. 요즘에는 모든 것을 위해 Git 저장소를 만듭니다. 클래스 당 하나의 저장소를 사용하는 경향이 있습니다. 강의 노트, 과제물 및 LaTeX 답변 만 저장하기 때문에 이러한 저장소의 대부분은 디스크 1MB 미만입니다.
  • 저장소의 내부 파일 형식은 매우 간단합니다. 이것은 수리가 매우 쉽지만 손상되기가 매우 간단하기 때문에 더 좋습니다. 나는 누군가 Git 저장소가 손상되었다고 생각하지 않는다. fsfs로 Subversion이 손상되는 것을 보았습니다. 그리고 Berkley DB가 Subversion의 bdb 백엔드에 내 코드를 신뢰하기에 너무 많이 손상되는 것을 보았습니다.
  • Git의 파일 형식은 매우 간단한 형식 임에도 불구하고 데이터 압축에 매우 적합합니다. Mozilla 프로젝트의 CVS 저장소는 약 3GB입니다. Subversion의 fsfs 형식은 약 12GB입니다. Git에서는 약 300MB입니다.

이 모든 것을 읽은 후에는 Git이 갈 길이라고 확신합니다 (약간의 학습 곡선이 있음에도 불구하고). Windows 플랫폼에서도 Git과 SVN을 사용했습니다.

위의 내용을 읽은 후 다른 사람들의 의견을 듣고 싶습니다.


15
Git은 일부 작업에서 엄청나게 빠릅니다. 주로 작업이 로컬 저장소에만 영향을 미치기 때문입니다. 자식의 체크인은, 예를 들어, 안 정당 SVN의 체크인이 팀의 나머지 부분에 대한 준비 저장소에 변화의 추진도 있기 때문에하는 SVN의 체크인과 비교 될 수있다. 이를 위해서는 네트워크 히트 가 필요 하며 Git의 네트워크 커밋을 네트워크 전송에 비교하는 것은 부적절한 비교를합니다. 커밋 한 다음 하드 드라이브를 잃어 버리면 Git으로 변경 사항을 잃어 버립니다. 그것이 당신이 기대하는 것이라면 괜찮습니다. 그러나 비 분산 SCM에서는 예상되지 않습니다.
Edwin Buck

1
@EdwinBuck Waqar가 고려한 것을 고려하지 않으면 git을 고려한 네트워크 시간에도 테스트에서 더 빠르다 : git-scm.com/about/small-and-fast
Sqeaky

요점은 "저장소를 만들기 사소한 작업입니다" 이며 매우 특히 Windows에서, 중요한 : SVN에 비해 신속 상호 분산의 repos의 무리를 시뮬레이션하기 위해 훨씬 쉽게 모든 (--bare)의 repo 힘내보다 중앙에 conected입니다 SVN과 유사한 작업을 수행합니다 (Windows SVN 서버 응용 프로그램 설치 등). 또한 (비교적으로) 나는 Git이 OS에서보다 일관성이 있음을 발견했다. 명령 줄은 매우 잘 설계되어 있으므로 대부분의 시간 (및 OS간에 거의 동일)과 다양한 SVN 기본 클라이언트 / 서버 앱 ...
Shivan Dragon

1
언급 한 위키 기사는 실수로 가득합니다. 따라서 귀하의 답변이 잘못되었습니다. 공감. 위키에 svnvsgit.com 을 참조하는 대화 페이지가 있는데 이는 왜 비교가 틀린지 알려줍니다.
bahrep

엄청나게 빠릅니까? ciforth 프로젝트를 로컬 cvs에서 github로 옮겼습니다. 이것은 간단한 프로젝트이지만 10,000 개의 주요 소스 파일이 하나 있습니다. 이 파일에서 Blame을 사용하려고하면 github이 시간 초과됩니다. 대부분 하나가 빨리 말하는 것에 만족하지 않고 그러한 한정자를 사용한다고 주장하는 것은 균형 잡힌 의견이 아니며, 당신이 말하는 모든 것에 대해 의심하게 만듭니다. Groetjes Albert
Albert van der Horst

12

Subversion 저장소를 설정하겠습니다. 이 방법으로 개별 개발자는 Subversion 클라이언트를 사용할지 Git 클라이언트를 사용할지 () 선택할 수 있습니다 git-svn. 사용 git-svn은 완전한 Git 솔루션의 모든 이점을 제공하지는 않지만 개별 개발자가 자신의 워크 플로를 크게 제어 할 수 있습니다.

나는 Git이 Unix와 Mac OS X 에서처럼 Windows에서 잘 작동하기 전에 비교적 짧은 시간이 될 것이라고 믿습니다.

Subversion에는 탐색기 통합을위한 TortoiseSVN 및 Visual Studio 통합을위한 AnkhSVN과 같은 Windows 용 도구가 있습니다.


11

재미있는 점은 Subversion Repos에서 프로젝트를 호스팅하지만 Git Clone 명령을 통해 프로젝트에 액세스한다는 것입니다.

Google 코드 프로젝트에서 Git으로 개발을 읽으십시오.

Google 코드는 기본적으로 Subversion을 사용하지만 개발 중에 Git을 쉽게 사용할 수 있습니다. "git svn"을 검색하면이 방법이 널리 퍼져 있음을 알 수 있으며 실험 해 보는 것도 좋습니다.

Svn 리포지토리에서 Git을 사용하면 다음과 같은 이점이 있습니다.

  1. 여러 컴퓨터에 분산 되어 작업을 수행 할 수 있습니다.
  2. 다른 사람들이 체크 아웃 할 수있는 중앙 backup/public svn 저장소가 있습니다.
  3. 그리고 그들은 Git을 자유롭게 사용할 수 있습니다.

3
참고 사항 : 2011 년 7 월 현재 Google 코드는 Git을 기본적으로 지원합니다.
Jeremy Salwen

9

실제로 귀하의 질문에 대답하지는 않지만 Distributed Revision Control 의 이점을 원한다면 (사운드처럼 들리며) Windows를 사용하고 있습니다. Mercurial이 훨씬 나은 Windows 지원을 제공하는 것보다 Git 보다 Mercurial 을 사용 하는 것이 좋습니다. Mercurial에는 Mac 포트도 있습니다.


9

팀이 이미 cvs 또는 svn과 같은 버전 및 소스 제어 소프트웨어에 익숙하다면 간단하고 작은 프로젝트 (예 : 주장하는 것처럼)에 대해 SVN을 따르는 것이 좋습니다. 나는 svn에 정말 익숙하지만 현재 전자 상거래 프로젝트에서 django를 사용하고 있는데 git에 대해 작업하기로 결정했습니다 (나는 svn 모드에서 git을 사용하고 있습니다. 적어도 하나의 다른 개발자와 협력하기 위해). 다른 개발자는 SVN에 익숙하고 다른 사람들의 경험은 다를 수 있지만 우리 모두는이 작은 프로젝트에 git을 수용하는 데 정말 나쁜 시간을 보내고 있습니다. (우리는 하드 코어 리눅스 사용자 모두 중요하다.)

물론 마일리지는 다를 수 있습니다.


8

확실히 svn, Windows는 세계 최고 수준의 시민이기 때문에 git( 자세한 내용 은 http://en.wikipedia.org/wiki/Git_(software)#Portability 를 참조하십시오).

업데이트 : 끊어진 링크에 대해 죄송하지만 괄호가 포함 된 URI로 작업하도록 SO를 포기하려고했습니다. [링크가 수정되었습니다. -ed]


1
참고 : URL을 꺾쇠 괄호로 묶거나 괄호를 % 28 및 % 29로 바꾸십시오.
PhiLho

1
[] () 구문에서 URL 인코딩이 작동합니까?
행크 게이

16
이것은 잘못된 FUD입니다. Git은 Windows에서 환상적입니다. 그리고 SVN은 어느 곳에서나 나쁘다.
Charlie Flowers

6
저를 거부하는 모든 사람들을 위해 2008 년경 개발자 의견을 살펴보십시오. Linus와 갱은 Windows 지원에 신경 쓰지 않았 음을 분명히 알 수 있습니다. 괜찮습니다. 나는 그것을하고 싶지도 않습니다. 내 소프트웨어는 파일 시스템에서 POSIXish 동작을 기대하는 VCS만큼 복잡하지 않습니다. 하지만 문맥을 보면 내 진술을 FUD로 특성화하는 것은 불공평 한 것 같습니다.
행크 게이

2
어쩌면 2008 년 git은 Windows에서 좋지 않았지만 2009 년부터 msysgit을 사용해 왔으며 완벽하게 작동합니다. 여기에는 GitHub와 동등한 오프라인 데스크톱 인 gitk가 포함됩니다.
Dan Dascalescu

8

요점은 Git은 분산 VCS이고 Subversion은 중앙 집중식입니다. 분산 VCS는 이해하기가 조금 더 어렵지만 많은 장점이 있습니다. 이 장점이 필요하지 않으면 Subversion이 더 나은 선택 일 수 있습니다.

또 다른 질문은 도구 지원입니다. 사용하려는 도구가 어떤 VCS를 더 잘 지원합니까?

편집 : 3 년 전 나는 이런 식으로 대답했다.

그리고 Git은 현재 Cygwin 또는 MSYS를 통해서만 Windows에서 작동합니다 . Subversion은 Windows를 처음부터 지원했습니다. Windows 용 git-solutions가 효과가있을 수 있으므로 Git 개발자 대부분이 Linux에서 작업하고 처음부터 이식성이 없었기 때문에 문제가있을 수 있습니다. 현재 Windows에서 개발하기 위해 Subversion을 선호합니다. 몇 년 안에 이것은 관련이 없을 수 있습니다.

이제 세상은 조금 바뀌 었습니다. Git은 이제 Windows에서 잘 구현되었습니다. 더 이상이 시스템을 사용하지 않기 때문에 Windows에서 철저하게 테스트하지는 않았지만 모든 주요 VCS (SVN, Git, Mercurial, Bazaar)가 이제 적절한 Windows 구현을 가지고 있다고 확신합니다. SVN의 이점은 사라졌습니다. 다른 지점 (중앙 집중식과 분산 식 및 도구 지원 확인)은 계속 유효합니다.


저는 부적합의 지평이 몇 년보다 훨씬 짧을 것이라고 낙관합니다.
Greg Hewgill

예, 아마도 1 년일 것입니다. Git은 역동적 인 개발 커뮤니티를 가지고 있습니다. 그러나 파괴도 있습니다. 1-2 년 후에이 질문에 답하기 위해 두 가지를 다시 살펴 봐야합니다.
Mnementh

1
이제 1 ~ 2 년 후입니다. 어때요? :)
Merlyn Morgan-Graham

3
Git에는 소프트웨어 개발 파이프 라인의 다른 단계로 분산 SCM 모델이 확장되어 있지 않습니다. 분산 릴리스 빌드 시스템, 분산 자동 테스트, 품질 관리, 릴리스 제어 등을위한 좋은 모델은 없습니다. 분산 백업에 대한 실험적인 지원을 받고 있습니다. 따라서 Git은 개발자에게 더 많은 것을 제공하고 소프트웨어 개발 프로세스에는 더 적은 것을 제공합니다. 모든 Git 구현은 결국 하나의 리포를 중앙 중심으로 축복하여 가장 흥미로운 Git 기능을 SVN 팩시밀리로 단순화합니다.
Edwin Buck

1
@hibbelig Git에는 중앙 저장소가 없으며 모든 저장소는 (분산 설계로 인해) 사실상 동일합니다. 즉, 모든 리포지토리를 동일하게 처리하기 위해 프로덕션 파이프 라인을 재 작업하거나 하나의 리포지토리를 "인공적으로 상승 된"상태 (즉, 중앙 리포지토리 )로 인위적으로 축복 할 수 있습니다 . 전자를 사용하는 경우 개발자 데스크에서 릴리스를 제공 할 수있는 병렬 파이프 라인을 구축하는 것에 대해 아무도 모른다. 후자를 사용하는 경우 분산 처리에 대한 약속은 중앙 집중식 규칙에 의해 결정됩니다.
Edwin Buck

6

SVN이 더 널리 퍼지고 더 잘 알려져 있기 때문에 SVN을 선택합니다.

리눅스 사용자에게는 Git이 더 좋을 것 같습니다.


1
그러나 이것은 빠르게 변화하고 있습니다. SVN은 시장 점유율을 잃고 GIT는 다음과 같이 증가합니다. 예 : wikivs.com/wiki/Git_vs_Subversion#Popularity 또는 programmers.stackexchange.com/questions/136079/…
Zelphir

@Zelphir : 7 년 빨리 전화하지는 않겠지 만, GIT는 시장 점유율을 높이고 특히 파일 병합에 더 좋습니다.
Burkhard

4

Git은 아직 Windows에서 기본적으로 지원되지 않습니다. Posix 시스템에 최적화되어 있습니다. 그러나 Cygwin 또는 MinGW를 실행하면 Git을 성공적으로 실행할 수 있습니다.

요즘에는 SVN보다 Git을 선호하지만 SVN 토지 CVS에서 온 경우 임계 값을 초과하는 데 시간이 걸립니다.


8
'기본적으로'정의하십시오. msysgit는 잘 작동
밀라노 Babuškov에게

4

SVN보다 훨씬 강력하기 때문에 Git을 선택했을 것입니다. 저렴한 코드 호스팅 서비스를 이용할 수 있습니다. 백업이나 유지 관리 작업을 수행 할 필요가 없습니다. GitHub 가 가장 확실한 후보입니다.

즉, Visual Studio와 다른 SCM 시스템의 통합에 대해서는 아무것도 모릅니다. SVN과의 통합이 눈에 띄게 더 좋습니다.


4

나는 SVN을 오랫동안 사용했지만 Git을 사용할 때마다 Git이 훨씬 강력하고 가벼우 며 약간의 학습 곡선이 관여하지만 SVN보다 낫다고 느꼈습니다.

내가 언급 한 것은 각 SVN 프로젝트가 커지면 내 보내지 않는 한 매우 큰 프로젝트가된다는 것입니다. GIT 프로젝트 (Git 데이터와 함께)는 크기가 매우 가볍습니다.

SVN에서는 초보자부터 전문가까지 개발자를 다루었으며 초보자와 중간체는 재사용하기 위해 다른 SVN 프로젝트에서 하나의 폴더를 복사하면 파일 충돌을 일으키는 것으로 보입니다. 반면, Git에서는 폴더를 복사하면 Git이 모든 하위 폴더에 .git 폴더를 도입하지 않기 때문에 작동합니다 (SVN처럼).

오랜 시간 동안 SVN을 많이 처리 한 후에 마침내 공동 작업과 병합 작업이 쉽고 로컬 사본의 변경 사항을 최대한 커밋 할 수 있다는 장점이 있기 때문에 개발자와 저를 Git으로 옮길 생각입니다. SVN (서버의 저장소에서 때때로 변경 사항을 커밋해야 함)과 달리 서버의 지점으로 한 번에 푸시했습니다.

내가 실제로 Git과 함께 가야할지 결정하도록 도와 줄 사람이 있습니까?


SVN 제어 폴더를 다른 프로젝트에 복사하여 재사용하기 위해 개발자에게 전화하지 않았으며 명백한 문제가 '중간 적'인 것을 기대하지 않았습니다. 나는 그들을 초보자라고 부를 것이다. 예, 맞습니다. SVN에 파일이 속한 저장소를 알려주는 .svn 하위 폴더 때문입니다. 사용자가이 .svn 하위 폴더를 삭제 한 경우 폴더를 새 SVN 프로젝트로 가져올 수 있습니다. 나는 여전히 SVN을 사용하고 있지만 내 요구는 거의 없습니다. GIT는 대규모 프로젝트에 적합합니다.
dyasta

3
최신 svn 클라이언트는 .svn각 하위 디렉토리에 폴더가 필요하지 않습니다 . 복사 오류가 발생하기 전에 "수정"합니다.
Edwin Buck

4

이것은 다음과 같습니다.

개발이 선형 적일까요? 그렇다면 Subversion을 사용해야합니다.

반면에 개발이 선형 적이 지 않으면 다른 변경 사항에 대한 분기를 생성 한 다음 해당 변경 사항을 기본 개발 라인 (Git에 마스터 분기라고 함)으로 병합해야합니다. 당신을 위해 더 많이.


3

Bzr 을 사용해 보셨습니까 ?

그것은 시장에서 다른 것을 좋아하지 않기 때문에 꽤 좋고, 공감 적입니다 (우분투를 만드는 사람들)는 그것을 만들었습니다 ...


그러나 Windows 지원에는 실제로 약간의 작업이 필요합니다. Windows에서 최근의 모든 프로그래밍 (
공식적

사람들이 "시장에서 다른 것을 좋아하지 않기 때문에 소프트웨어를 만들었다"는 것은 OS 사용 시간의 거의 100 %입니다.
WhyNotHugo

@Hugo 오픈 소스를 사용하면 시장에서 다른 것을 좋아한다면 새로운 것을 만드는 대신 기여할 것입니다.
yingted

이것은 전혀 질문에 대한 답변이 아닙니다
Albert van der Horst

@AlbertvanderHorst 아닙니다. 아무도 더 잘 알지 못하는 SO의 서부 시절에 질문에 대답하고 대안을 제시했습니다. 내 서두에서 논쟁의 여지가 있지만 나는 또한 Canonical의 이름을 잘못 입력 한 것 같습니다. 부끄러운 줄 아세요!
Omar Kooheji

3

질문을 확장하고 Git이 MacOS에서 제대로 작동하는지 물어볼 수 있습니까?

댓글에 대한 답장 : 뉴스를 보내 주셔서 감사합니다. 집에서 Mac으로 설치하겠습니다.


1
예, 아름답게 작동합니다. MacPorts를 통해 설치하고 매일 사용합니다.
Greg Hewgill

그렇습니다. 모든 POSIX 기반 시스템 (Unix, Linux, Solaris, BSD 등)에서 훌륭합니다. 실제로 문제가있는 곳은 Windows뿐입니다.
Oli

그리고 git-gui 및 gitk는 아마도 Linux 및 Windows에서와 마찬가지로 OS-X에서 동일하게 작동합니다. tortoiseSVN과 달리 Windows 전용 AFAIK는 무엇입니까?
David Schmitt

@David Schmitt : 글쎄, tortoisesvn.tigris.org 는이를 "Windows Shell Extension for Subversion"이라고 부릅니다.
SamB

@Robert : OS X에서의 git 경험은 어땠습니까?
David Schmitt


2

SVN은 다른 사람들이 지적한 것처럼 Windows에서 좋은 선택처럼 보입니다.

개발자 중 일부가 GIT를 사용하려는 경우 SVIT 저장소가 GIT 저장소에서 다시 생성되는 GIT-SVN을 항상 사용할 수 있습니다. 그런 다음 GIT와 로컬로 작업 한 다음 SVN을 사용하여 변경 사항을 기본 저장소에 공개 할 수 있어야합니다.


1

DVCS와 함께 가야합니다. 소스 관리의 비약적인 발전과 같습니다. 개인적으로 나는 Monotone을 사용 하고 그 개발 시간은 끝이 없습니다. 우리는 Windows, Linux 및 Mac에 사용하고 있으며 매우 안정적입니다. 나는 각 플랫폼에서 프로젝트의 야간 빌드를하는 buildbot도 가지고 있습니다.

DVCS는 일반적으로 배포되는 동안 사람들이 변경 사항을주고받을 수 있도록 중앙 서버를 만들게됩니다.

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