2010-11-30 5 views
3

개발중인 Java 응용 프로그램에 임베드 할 VCS를 선택해야합니다. Java 응용 프로그램은 API를 통해 VCS와 상호 작용하지만 사용자는 Eclipse 플러그인을 통해 직접 상호 작용할 수도 있습니다.Mercurial v Git v Subversion

3 개의 후보 VCS가 확인되었습니다. Mercurial, Git 및 Subversion. 나는 (특별한 순서없이) 다음 기준에 따라 하나를 선택해야합니다

  • 자바 API을. Java API를 사용할 수없는 경우 응용 프로그램에서 명령 줄을 통해 VCS 명령을 실행할 수 있기 때문에 100 %는 필요하지 않습니다. 그러나, API는 분명히
  • 단순 바람직
  • 이클립스 플러그인 될 것이다. VCS를 사용하는 사람들 (소프트웨어를 통해 또는 Eclipse를 통해 간접적으로)은 소프트웨어 개발자가 될 것이지만 아마도 가장 정교하지는 않을 것입니다.
  • 라이센스. 라이센스는 상업용 응용 프로그램에서 VCS를 (위에서 설명한 방식으로) 사용할 수 있어야합니다.

내가 간과 한 사항이있을 수 있습니다.

감사합니다.

+1

라이센스 제한이 있습니까? 아니면 응용 프로그램을 오픈 소스로 만들기 위해 노력하고 있습니까? – anirvan

+0

@anrivan - 좋은 지적, 업데이트하겠습니다! –

+0

마이그레이션을 고려 사항으로 추가합니다. 솔루션에서 쉽게 마이그레이션 할 수 있다면 솔루션을 선택하는 데 따른 위험이 적습니다. –

답변

0

우선, 애플리케이션에 집중화 된 VCS와 특히 잘 맞는 워크 플로우가 없으면 Subversion을 사용하지 마십시오. 그리고 심지어는 svn이 너무 느리기 때문에 Mercurial 또는 git을 사용하려고합니다.

Mercurial (hg) vs Git에 대해서는 개인적으로 git를 선택합니다. 한편, hg는 더 간단하고 직관적이지만, 자식은 이고, 대답은 훨씬 더이며, hg보다 훨씬 더 많은 생각이 있습니다.

스크립트 가능성이 문제 일 수 있습니다. 힘내는 실제로 유닉스 쉘에서 스크립팅이 가능하도록 만들어졌다. (GNU 소프트웨어가 설치된 윈도우에서 실행 되기는하지만). Hg에는 파이썬 인터페이스가 있지만, 올바르게 C를 확장하면 jython을 사용할 수 없게 될 것입니다.

에 관한 라이센스, HG와 자식이 모두 · 배타적,하지만 당신은 그들에게 밖으로 껍질 경우 그 문제가되지해야합니다 거기에 Java 용 타사 자식 라이브러리처럼 그는 말했다, 그것은 보인다. SVN은 Apache 라이센스를 사용하므로이 프론트에서 이길 수 있습니다 (기본적으로 원하는 모든 것을 할 수 있습니다).

+2

"스크래치 아웃 서브 버전"부분에 동의합니다. Subversion은 작업 복사본이 손상되거나 병합 충돌이 발생하자마자 * simplicity * 요구 사항을 만족하지 못합니다. –

+1

지정되지 않은 기준에 대해 전복을 긁어 낸다. 잘 했어! 어떤 경우에는 svn은 큰 체크 아웃을 제외하고는 느리지 않으며 느린 네트워크 링크를 통해 커밋합니다. 지정된 실제 기준에서 svn은 모두를 만족시키는 세 가지 중 하나입니다. – JeremyP

+1

Btw * 많은 * 빠른 부분에 번호가 있습니까? (그리고 mindshare 부분은 kernel/X/ruby ​​/ freedesktop과 같은 일부 서클에서만 유효합니다. 예를 들어, devs 기반의 Windows와는 잘 맞지 않습니다.) – tonfa

3
  • 자바 API : Subversion은 자바에 대한 바인딩을 가지고 있으며, 계속 자바 의욕의 재 구현 어떤 종류의 (dev에 메일 링리스트 참조)이있다.
  • Eclipse 플러그인 : Eclipse 용 세 가지를 모두 지원하는 플러그인이 있습니다.
  • 단순함 : Subversion에는 틀림없이 더 간단한 모델이 중앙 집중화되어 있습니다. Mercurial은 Git보다 배우고 사용하는 경향이 있지만, 그렇지 않은 경우 기능이 아주 비슷합니다.
  • 라이센스 : 힘내와 의욕적 인 GPL이지만, 라이센스 관련 사항없이 명령 행을 통해 호출 할 수 있습니다.Subversion은 copyleft가 아닌 Apache 라이센스를 사용합니다.

이제 세 가지를 모두 지원할 수 있도록 차이점을 추상화하는 인터페이스를 작성하지 않으시겠습니까? Mercurial과 Git은 매우 비슷하기 때문에이 두 가지를 적어도 지원하려면 비교적 간단해야합니다.

+0

Hg/Git과 SVN의 근본적인 설계상의 차이점을 감안할 때, 나는이 세 가지를 모두 지원하는 것이 Hg와 Git (* distributed * 버전 제어)의 목적을 무너 뜨릴 것이라고 생각한다. 하지만 아마도'git-svn'은 옵션입니다 ... –