2009-05-19 5 views
7

Subversion을 통해 Git 및 Mercurial에 대한 과대 광고가 무엇인지 말해 줄 수 있습니까?간단히 말해, git와 mercurial의 전복에 비해 어떤 이점이 있습니까?

+2

dupe of http : // stackoverflow.com/questions/871/why-is-git-subversion보다 많은 다른 사람들 –

+1

아마도 중앙 집중식 버전 제어에 비해 분산 버전 제어를 논의하기 위해 질문과 제목을 다시 작성하십시오. – Kekoa

+0

@kekoav :이 질문과 유사 : http://stackoverflow.com/questions/26845/do-you-use-distributed-version-control –

답변

4

힘과 습관은 distributed이고 SVN은 없습니다.

이점이나 없습니까? 당신은 결정합니다 ...

5

다양한 소스 제어 시스템에 대한 비교는 http://whygitisbetterthanx.com/에서 찾을 수 있습니다. git에 대해 가장 좋아하는 것은 다음과 같습니다.

  • 더 빠릅니다.
  • SVN이 .svn 하위 디렉토리와 같은 소스 코드를 복제하지 않습니다.
  • 오프라인으로 커밋 한 다음 밀어 넣을 수 있습니다.
+0

그 중 하나는 정말 Subversion에 관한 버그입니다 - 모든 저주받은 .svn 디렉토리 방법! –

+1

소스 코드가 중복되지 않습니까? 나는 당신이 그 말을 바꿀 수 있다고 생각합니다. – hasen

+2

아직 보지 않았다면 다음 사이트를 방문하십시오 : http://whyhgisbetterthanx.com/ –

3

이것은 GIT의 Mercurial 등이 Subversion이나 CVS와는 다른 방식으로 작업 할 수있게 해줍니다. Subversion과 CVS는 중앙 집중식 저장소 구조만을 제공하고 나머지는 "배포"합니다. 분산 된 방식을 사용하면 개발자 간의 임시 협업이 쉬워지고 자신의 컴퓨터에서 변경 그룹을 관리하는 방법에 영향을 미칠 수 있습니다.

귀하에게 가장 적합한 방법은 귀하 또는 귀하의 조직에서 결정해야 할 사항입니다. 나를 위해

3

하나 개 중요한 것은 : SVN 정말 태그를 지원하지 않습니다

  1. 태그 상징적 없습니다. repo (COW 복사본)의 경로입니다.
  2. SVN에서 파일은 태그에 속합니다 (태그는 파일의 복사본이기 때문에). 다른 시스템과 인간의 직감 ​​: 태그는 파일에 속합니다. 그것은 타당한 관계입니다.
  3. 따라서 "파일에있는 모든 태그"와 같은 것을 나열하는 것은 어렵습니다. 이 정보는 SVN 저장소에 직접 저장되지 않습니다.
6

Git이가는 한, 내 생각에 가장 큰 Git의 고급 분기 및 병합 지원이 있습니다. 힘내라는 것은 정말 쉽고, 분기하기 쉽고, 변경 사항을 병합하는 기능은 SVN보다 훨씬 낫다. gitk과 같은 도구를 사용하면 Git 저장소의 분기 간 관계를 시각화하는 것이 정말 쉽습니다.

다른 많은 이점이 있습니다. Git은 더 나은 도구와 더 나은 툴체인을 가지고 있으며 중앙 repo가 ​​필요 없다는 사실을 생각하면 작은 프로젝트를 스스로 작업 할 때 "체크 아웃"된 repo가 ​​좋다. 하지만 병합과 분기가 가장 큰 이점이라고 생각합니다.

(I는 "분기"로컬 복제에 대한 의욕의 강조를 좋아 한 적이 있지만 그의 많은뿐만 아니라, 의욕에 간다;. 나는 거의 같은 REPO의 모든 지점을 유지 망할 놈의 방법을 선호)

2

선형중앙 VCS, 브랜치와 태그가 같은 (선형 역사 점) 위치 :

  • 망할 놈의 콘텐츠 중심이기 때문에,에 의해 파괴보다 훨씬 더 효율적으로 병합합니다 :

    • 이 바로 패치
    에게 적용
  • 병합 할 필요는 그래프 내에서 매우 빨리 발견
  • +0

    Subversion에 비해 이러한 기능이 가장 중요합니다. Mercurial은 같은 방식으로 작동합니다 (기록은 DAG, 모든 복제본에는 전체 기록이 있습니다). –

    1

    나를 위해, svn 잘 작동합니다. 경험에 따라 1 - 10 명의 개발자 용.

    '실제'버전이 중복 호스트의 클라우드에 어디에 있는지 분명합니다 (데이터 및 가동 시간을 고려한 일부 장소). git에 대해 읽는 것이 더 복잡하고 크고 유능한 것 같습니다. 따라서 작업량이 적은 등 'svn 중앙 집중식'워크 플로우 (http://whygitisbetterthanx.com/ 사이트 참조)를 원하면 svn을 사용하십시오.

    모든 재미가있는 곳이 분명 할 때까지 CVS를 사용했습니다. 나는 몇 년 후에, 내가 다시 변화한다면, 그것은 자식이 될 것인가? 하지만 실제로 - 설정 한 날이 아닌 다른 날에 버전 제어 시스템을 사용하는 경우 잘못된 작업을 수행하고있는 것입니다.

    4

    개인 프로젝트가 있다고 가정하면 버전 관리를 받겠습니까? (나는 네가 그렇다고 말하기를 희망한다.)

    그렇다면 간단하지 않습니까? 힘내네 당신이 서버 또는 아무것도 그런 설정을 요구하지 않습니다. 작업 디렉토리가 저장소입니다.

    새로운 미친 아이디어를 원하십니까? 해당 지점에서 분기하고 실험하십시오. 성공하면 주 분기로 돌아가서 병합하십시오. 아이디어가 잘 풀리지 않으면, 메인 브랜치로 돌아가 crazy_idea 브랜치를 지우십시오.

    crazy_idea에서 작업하고 싶지만 마스터 분기를 계속 정상적으로 개발하고 싶습니까? 다시 말하지만, 아무런 문제가 없습니다. 분기 간을 앞뒤로 전환 할 수 있으며, 충분히 성숙한 후에 만 ​​crazy_idea를 병합 할 수 있습니다.

    팀에 속하더라도 각 개발자 (또는 소수의 개발자 그룹)는 나머지 코드와 병합하기 전에 실험 분기에서 어떤 아이디어로 작업 할 수 있습니다.

    나는 그것이 오픈 소스를 더욱 쉽게 만든다고 생각한다. 모든 사용자에게 액세스 권한을 부여 할 필요는 없습니다. 누군가 훌륭한 기능을 구현했다면, 그는 당신에게 그를 끌어 내려달라고 요청할 수 있습니다. 보고있는 것을 좋아하면 병합 할 수 있습니다.

    놀랍지 : 자식은 svn보다 훨씬 간단합니다.

    정말. 나는 항상 버전 제어에 대해 들었지만 결코하지 않았다. 내 svn 서버 아래에 내 코드를 넣으려고 할 때, 그것은 악몽이었다; 나는 정말로 그것을 싫어했다.

    이제 모든 것을 git에 넣었습니다.

    +0

    나는 Mercurial에도 불구하고 같은 경험을했다. Subversion은 개념적으로 CVS보다 깔끔하고 우수한 시스템입니다. Mercurial은 더욱 간단하면서도 강력한 성능을 제공합니다. 중앙 서버를 구성 할 필요없이 필요할 때 바로 저장소를 만들 수 있습니다. –

    1

    그들은 개념적으로 코드를 쉽게 분기/병합 할 수있는 변경 집합으로 구성합니다. SVN에 브랜치를 병합하는 것은 대단히 고통스런 경험입니다.

    관련 문제