개인 (한 사람) 프로젝트를위한 자식. 지나침? Subversion과 git의 두 가지

나는 Subversion과 git의 두 가지 버전 제어 시스템을 알고 사용합니다. Subversion은 현재 유일한 개발자 인 개인 프로젝트에 사용되고 git은 오픈 소스 프로젝트 및 다른 사람들도 프로젝트에서 작업 할 것이라고 생각하는 프로젝트에 사용됩니다. 이것은 대부분 git의 놀라운 포크 및 병합 기능 때문입니다. 모든 사람이 자신의 브랜치에서 작업 할 수 있습니다. 매우 편리합니다.

이제는 git이 이해가 안되는 것처럼 Subversion을 개인 프로젝트에 사용합니다. 약간 과잉 인 것 같습니다. 내가 유일한 개발자 일 때 중앙 집중식 (일반적으로 내 홈 서버)이라면 괜찮습니다. 어쨌든 정기적으로 백업합니다. 내 지점을 만들 수있는 능력이 필요하지 않습니다. 주요 지점 내 지점입니다. 예, SVN은 분기에 대한 간단한 지원을 제공하지만 훨씬 강력한 지원은 의미가 없습니다. 병합하는 것은 고통 스럽거나 적어도 내 작은 경험으로 고통받을 수 있습니다.

개인 프로젝트에서 git을 사용해야하는 이유가 있습니까? 아니면 단순히 과잉입니까?



답변

과잉이 아닙니다. 개인 프로젝트에 Git 및 Mercurial over Subversion을 사용하기 시작한 주된 이유는 리포지토리 시작이 훨씬 쉽다는 것입니다.

새로운 프로젝트를 시작하고 싶습니까?

> git init

밤! 하위 버전 저장소로 분기 및 태그를 지원하기 위해 저장소 서버를 설정하거나 폴더 구조를 체크인 할 필요가 없습니다.

나중에 프로젝트를 공유하는 것은 단지 git push원격 저장소가 아닌 다른 문제 일뿐 입니다. 서브 버전으로 빨리 해보십시오!


답변

로컬 개인 프로젝트에 Subversion을 사용하는 것은 과잉이지만 Git은 그렇지 않다고 주장합니다. Git은 SVN의 비효율적 인 “개정”개념과 Git의 객체 스냅 샷으로 인해 공간을 덜 차지하고, 설정이 덜 필요 git init하고 (수십 개의 svnadmin명령 및 권한 설정 등) 백업이 더 쉽습니다 ( git clone --bare또는 git push originGithub를 사용하는 경우) 또는 유사]) 완료되었으며 코드 관리를위한 더 나은 도구가 있습니다 (분기는 무료이며 병합이 더 쉽고 깨끗합니다). 다른 사람이 귀하의 저장소 복제본을 가지고 있지 않다고해서 DVCS의 이점이 “과잉”이라는 의미는 아닙니다.

또한 Git의 브랜칭 지원은 SVN보다 덜 복잡하며 더 큰 보상이 있다고 말합니다.


답변

결코 자신의 코드를 분기하지 않을 것이라고 생각하는 것은 조금 근시안적입니다. 나는 내 자신의 코드를 여러 번 분기했다. 특히 새로운 접근법을 실험 할 때 나는 아직 완전히 확신하지 못했다. 결국에는 기능이 필요합니다.

이것은 오랜 시간 Subversion 사용자로부터 온 것입니다. 하나의 도구로 통합하면 삶을 더 쉽게 만들 수 있습니다.


답변

오버 킬은 “솔루션”으로 인한 부수적 인 손상이있을 때 예약됩니다. 총을 사용하여 비행을 죽이면 총알이 다른 곳으로 이동하여 손상이 발생합니다. 과잉입니다. 문제를 일으키지 않는 필요 이상으로 강력한 것을 사용하는 것은 과도하지 않으며 개발 프로세스를 간소화하는 데 도움이되는 경우 좋은 일이 될 수 있습니다. 해를 끼치 지 않으며 두 개의 소프트웨어 대신 두 개의 소프트웨어 만 업데이트하면됩니다. 그렇다면 왜 하나의 시스템 대신 두 개의 시스템이 필요합니까?


답변

나는 한 사람의 프로젝트에 Git을 사용하고 그것을 좋아합니다. 나는 이전에 Subversion을 사용하고 있었지만 아직 Git 사용의 단점을 보지 못했습니다. 더 강력하지만 단순한 것을 더 복잡하게 만드는 방식은 아닙니다. 간단한 것들을 불필요하게 복잡하게하거나 비싸고 느리게 만드는 것 IMHO는 과도한 것을 호출하는 데 필요한 조건입니다. 또한 Github에서 이전에 다른 사람의 한 사람 프로젝트를 포크하여 원하는 기능을 추가 한 다음 풀 요청을 보냈습니다. 내 프로젝트에 관심이있는 사람이 같은 일을했다면 꽤 멋지다.


답변

나는 결코 DVCS 전에 개인 프로젝트에 소스 제어를 사용하지 않는, 그래서 누군가 반대보기를 복용 상상하기 좀 이상해. 내 이유 중 일부는 다음과 같습니다.

  • 설치 및 분해가 쉽습니다. 예를 들어, 동료가 지난 주에 몇 가지 작은 단계로 해결 한 프로그래밍 퍼즐을주었습니다. 나는 45 분 동안 작업을 유지하는 git repo를 만들었고 사라졌습니다. 나는 그런 식으로 서브 버전이 얼마나 쉬운 지 모르겠지만, 아무도 그것을들은 적이 없다.
  • 연결이 끊어졌습니다. 저에게는 오프라인으로 일할 수 있다는 것이 일을하는 것보다 취미 프로젝트에 훨씬 더 도움이됩니다. 집 방화벽에 구멍을 뚫거나 프로젝트를 공개적으로 호스팅 할 필요가 없습니다. 썸 드라이브 나 랩톱에 임시로 저장소를 배치하고 모든 것을 동기화 상태로 유지할 수 있습니다.
  • 모든 것이 배치되었습니다. 리포지토리와 작업 트리를 함께 사용하면 OS 업그레이드와 같은 작업 중에 소규모 프로젝트를 쉽게 추적 할 수 있습니다.
  • 강력한 기능. 물론, 나는 항상 힘이 필요하지 않지만, 필요할 때 거기에 있고, 필요 없을 때 어떤 자원도 소비하지 않습니다.

답변

나는 git-bisect입력에 따라 커밋을 앞뒤로 탐색하여 주어진 행동을 소개 한 정확한 커밋을 찾는 것이 정말 좋다고 들었습니다 .

당신은 것입니다 무슨 일이 있었는지 것들에 대한 어떤 일이 단순히 알아낼 수 없습니다 그렇게해야합니다.


편집 : 또한 고객이 사용하는 이전 버전에서 버그 수정을 수행해야 할 때 분기 기능이 매우 중요합니다. 당신은 “이 작은 것을 고치지 만 지금은 다시 한번 테스트하고 싶지 않기 때문에 최신 버전을 원하지 않습니다”를 관리 할 수 ​​있어야합니다.