2009-12-05 2 views
2

Randal Schwartz says 그가 SVN 저장소와 상호 작용할 때 Git의 SVN 가져 오기/내보내기 기능을 사용한다고합니다. 그는 SVN에서 프로젝트를 가져오고 Git을 사용하여 모든 로컬 편집/저장을 한 다음 변경 사항을 SVN 저장소로 다시 푸시합니다. SVN을 사용하는 것보다 SVN 리포지토리를 매일 사용하는 것이 가치있는 프로세스입니까? 특히 최종 저장소가 SVN이어야하는 경우.Git 가져 오기/내보내기를 SVN에 정기적 인 워크 플로우로 사용 하시겠습니까?

+0

답장을 보내 주셔서 감사합니다. 이것은 확실히 내 자신의 워크 플로우를 체크 아웃 할 것입니다. –

답변

4

이것은 주관적인 questi입니다 에, 그렇습니다, 그것 절대적으로 가치가입니다. Subversion을 로컬에서 처리하는 번거 로움없이 Git의 모든 이점을 누릴 수 있습니다.

Subversion을 로컬에서 사용하고 있고 아직 커밋하지 않은 파일을 실수로 삭제 한 경우 (예를 들어 비행기에 있었고 커밋 할 수없는 경우) 너의 모든 일을 잃어 버렸다. Git에서는 저장소가 로컬이므로 수행 할 수 있습니다.

git ls-files -d | xargs git checkout -- 

Sha-pow! 파일이 복원됩니다.

0

물론입니다! Git을 Subversion 클라이언트로 항상 사용하고 있습니다 (다른 이유로 마스터 저장소는 Subversion입니다). 나는 다음과 같은 이점을 얻을 :

  • 경량 지역 분기도이 방법으로 힘내을 사용하여 동료와 패치 또는 지점을 공유 할 수
  • git add -p
  • git stash
  • 기능 (서브 버전에 커밋하기 전에)
  • 전체 저장소 로컬 검색 (빨리!)
0

Subversion에 잠겨있을 때 git-svn은 그만한 가치가 있습니다. 혼자있는 숨겨진 기능만으로도 완전히 멋진 일이 될 것입니다. 또한 Git을 사용하여 직장 동료와 공유 할 수 있으며 상수가 필요하지 않으며 일반적으로 오프 사이트 인 경우 Subversion 서버에 연결하는 것이 느려집니다.

+0

git-svn이 svn에 여러 접점을 가지고있는 것과 잘 맞지 않는 것처럼주의해서 공유해야합니다. –

0

이것은 유연성과 속도가 매우 뛰어나므로 전복 작업을하는 방식입니다. 로컬 컴퓨터에서 여러 가지 기능 브랜치를 만들고 서버를 오염시키지 않고 다시 트렁크에 병합하는 기능을 좋아합니다.

나는 서브 버전 서버로 다시 보내기 전에 커밋을 함께 스쿼시하는 기능을 좋아합니다. 이것은 내가 지체 된 오타를 수정하거나 일부 의견을 추가하기 위해 가지고있는 파괴 수정의 수를 줄인다. 지형지 물을 하나의 커밋에 통합 할 때. 그래서 내가 그것을 제거하거나 롤백해야한다면, 나는 실제로 어디서 시작하고 끝내 었는지 궁금해하는 많은 커밋을 넘어 서지 않을 것입니다.

0

로컬 SVN 서버에도이 작업을 수행하는 몇 명의 직원이 있습니다. 그들은 그것이 많은 가치를 추가한다고 생각하는 것 같습니다. 이를 통해 문제 수정, 리펙토링 및 sytle 기반 변경 사항이 동시에 변경된 경우에도 다른 문제로 작업 내용을 잘라내 변경할 수 있습니다.

저는이 사이트를 구축하기 위해 git repo를 구축했습니다. 따라서 오프 사이트에서도 작업 할 수 있습니다.

플러스 방법으로 비난/검토 작업을하는 것이 좋습니다.

4

다른 사람에게 영향을 미치지 않는 자신의 사설 지부에 가서 작업의 비공개 커밋을하지 않는 경우 버전 제어 기능을 완전히 활용하지 못했습니다. 힘내라, 다른 어떤 VCS보다 편리하고 아마도 방법이보다 쉬워진다.

또한 다른 커밋과 같이 현재 수행중인 작업과 관련없는 변경 사항 (예 : 관련이없는 버그)을 쉽게 유추 할 수 있습니다. 을 수행하면 각 커밋에 관련 변경 사항 만 포함되어 있는지 확인하십시오. 아마도 다른 VCS에서는 git처럼 쉽게 만들 수 없습니다. 다른 VCSes에 대한 과거의 경험에 비추어 볼 때 개발자는 일반적으로 게으르다가 관련이없는 변경 사항을 함께 처리하는 경향이 있음을 알 수 있습니다. 변경 사항 중 하나를 되돌려 야하는 경우 고통스러워집니다. 자식으로, 게으른되는 것은 정당화하기가 더 어렵습니다. git stash --keep-index을 사용하여 커밋하기 전에 개별적으로 변경 사항을 테스트 할 수도 있습니다. SVN 등을 사용했다면 그와 같은 힘과 융통성은 거의 상상할 수 없습니다. (당신이 만드는하려합니다 커밋에 대해 신속하게 경기를 통지), git send-email (회귀 테스트/디버깅하는 동안 진정한 신의 선물 일 수있다) 리베이스, git bisect :

처럼, 다른 자식 종과 경적의 모든 것을 담기 오프라인 작업을하는 경우, 속도, git grep (버전 제어 파일 검색 용), git blame (아마도 가장 좋은 "비난"도구), 실제 분기 병합을 사용할 수 있습니다 ... 계속해서 갈 수 있습니다.

저는 제 팀의 다른 멤버들이 SVN의 프론트 엔드로 git-svn을 사용합니다. 다른 방법으로는 상상할 수 없습니다. 단지 git를 사용하는 것을 제외하고는 ... SVN이 전혀없는 경우 : P

+1

예, 분명히 사설 브랜치에서 작업하십시오. 하지만 SVN 사설 브랜치 -> 자식 (git)은 SVN을 어지럽히 지 않고 사설 브랜치의 사설 브랜치를 제공합니다. –

+1

SVN 대신 git을 사용하여 분기하는 것이 중요합니다. 사적인 git 브랜치는 오직 당신 만 볼 필요가있다. 끝내면 SVN에서/브랜치 네임 스페이스가 어지럽 힙니다. –

관련 문제