2011-08-19 4 views
2

우리 회사에서 SVN을 사용하지만 에 원활하게 넣으려고합니다. 앞으로 GIT로 전환하십시오. 그래서 svn 저장소의 프론트 엔드 역할을 할 자식 - svn을 배우기 시작했습니다. 마스터 SVN 저장소 git-svn을 올바르게 사용하는 방법, svn-ers checkout svnrepo 및 git-ers는 gitrepo를 복제하고 부주의하게 작성합니다.

  • GITREPO - - SVNREPO
  • 의 자식 - svn을 복제
  • REPO1, REPO2, ... - 자식 클론의

    • SVNREPO :

      나는 다음 설치와 함께 사용하려

        : GITREPO는 요구 사항은 자식-ERS

      를 나타내는3210

    • [ManyGitUsers] 많은 giters는
    • [ManySvnUsers] 많은 svners가 SVNREPO 커밋 푸시 /로부터 GITREPO
    • 으로 복제 할 수
    • [SyncHook] 걸쇠
    • [NoInteraction] giters 개발되기 전에 GITREPO 및 SVNREPO 사이의 동기화 관리자에 의해 수동 훅 수행하거나 할 수있다 SVNREPO에 대해 알고 싶지 않고 그 반대의 경우도 있습니다.
    • [NoProactivity] 사용자는 모든 문제 (충돌)를 해결할 수 있습니다.

      1. 이 자식이 - svn을 가진이 설정 가능 : 그들은 그들에게

    질문을 피하기 위해 다른 사람과 동기화되지 않습니다? 더 나은 것이 있다면 다른 것을 제안하십시오.

  • 어떻게 GITREPO를 구성해야합니까?
  • giters는 특별한 백엔드를 알아야합니까, 아니면 모든 것이 투명합니까?

  • 지금까지, 내 ​​실험은 더보기 간략히 작품,하지만 SVNREPO에 커밋 자식과 동기화 할 수있는 가능성을 나누기 것으로 나타났다. 나는 그 이유가 나에게 나쁜 명령을내는 것이라고 믿는다. ...

    답변

    1

    나는 이것이 장기적으로 문제가 될 것이라고 생각하지 않습니다.

    첫째 날 svn의 미러링을 수행하는 방법에 대해 이야기하자

    는 일반적으로 (일반적으로 서로 다른 위치에서, 따라서 필요) 마스터의 repo와 슬레이브의 repo있다. 마스터 위치 체크 아웃 및 마스터에서 커밋에 svners. 슬레이브 위치 체크 아웃 및 슬레이브 커밋에있는 것들. 그러나 실제 설정은 누군가가 미러에 커밋 할 때마다 슬레이브의 커밋이 먼저 마스터에게 커밋 된 다음 슬레이브 (svnsync)로 다시 미러링된다는 것입니다.최종 사용자는이를 인식하지 못합니다. 이것은 repos가 동기화되어 있는지 확인합니다. 이 설정에 대한 자세한 설명 : http://www.tty1.net/blog/2007-08-26-subversion-proxy_en.html

    이제 힘내라. 문제는 Git repo와 SVN repo를 동시에 실행할 수 있다는 것입니다. SVN에서 커밋이 적용되고 새로운 커밋이 Git (SVN에서 새로운 커밋을 보지 못함)에서 제공되면 많은 문제가 발생할 것입니다.

    사용자가 가질 수있는 설정은 모든 사용자가 git-svn을 사용하여 svn 저장소를 직접 "복제"하는 것입니다. 그런 다음 다른 svn 클라이언트와 마찬가지로 git repo를 사용할 수 있습니다.

    또는 (git-svn으로 복제) 언급 한 것처럼 중앙 git repo가 ​​있고 모든 giters가 복제하여 밀어 넣습니다. 중앙 저장소에서 git svn rebasegit svn dcommit으로 후크가 있지만 문제가 발생하면 일부는 수동으로 repo를 수정합니다.

    +0

    당신은 모든 사용자가 git-svn 복제를 직접해야한다고 말하지만 실제로 작동합니까? 나의 이해는 "git svn rebase"가 새로받은 svn 커밋의 맨 위에 모든 로컬 git 커밋을 다시 적용한다는 것입니다 - 모든 로컬 커밋의 _changing_rechanging_ 효과 - 항상 저장소를 손상시키고 더 이상 커밋이나 푸시를 수행하지 못하게합니다. . 이 올바른지 ? –

    +0

    방금이 질문을 발견했습니다 : http://stackoverflow.com/questions/570945/git-clone-of-git-svn-tree (관련 칼럼 덕분에!) 나쁜 소식을 확인하는 설명 제공 : git-svn is good 일회 마이 그 레이션을 위해, 더 이상 전환 기간 동안 계속 사용하지 않기 : –

    0

    그것은 작동한다. 문서 검색/읽기. 또한 이것을 다루는 책이 많이 있습니다.

    기본적으로 GIT 사용자는 모든 책임을지고 SVN 측면의 모든 내용이 동일하게 유지됩니다.

    모든 SVN 커밋에서 GIT 사용자는 git svn rebase을 수행해야합니다. 모든 GIT 커밋에서 GIT 사용자는 git svn dcommit을 수행해야합니다.

    +0

    물론 이것은 git 사용자가 지속적으로 svn 커밋을 확인해야한다는 의미 일 경우 해당 시스템을 사용할 수 없습니다. 내가 원한 것은 정상적인 워크 플로우입니다. 나는 신경 쓰지 않고도 저 지르다, 저 지르다, 저 지르다, 때로는 밀거나 당깁니다. 갈등 해결을 위해 조금 더 많은 일을 할 수는 있지만 사전 행동은 없습니다. 나는 여전히 이것이 가능하다고 믿는다. 그러나 나의 테스트는 내가 묘사 한 방식뿐만 아니라 그걸 보여준다. –

    +0

    그럼 원하는대로 GIT를 사용할 수 없을 것이다. 일반적으로 SVN은 "기본"repos이고 GIT 사용자는 SVN repos와의 커밋 편집을 시작합니다. GIT를 다른 SVN으로 사용할 수는 없습니다. 두 도구가 모두 존재하는 이유가 있습니다. – ayckoster

    +0

    확실하지만 GIT를 정상적으로 사용하려고합니다. 즉, 원격 커밋을 사전에 확인하지 않아도됩니다. 나에게 분산 VCS는 내가 대부분의 시간에 아무런 연결이 없다는 것을 의미하므로 어쨌든 체크 할 수 없다. –

    4

    git-svn 대신 필요에 따라 보이는 대안이 있습니다 : SubGit. SubGit 프로젝트에서 작업 중이지만이 답변이 관련되어 있고 스팸으로 간주되지 않기를 바랍니다.

    SubGit은 서버 측에서 한 번 저장소에 설치하는 도구입니다. 그런 다음 'git clone'또는 Subversion 작업 복사본으로 체크 아웃을 사용하여 해당 저장소를 복제 할 수 있습니다. 망할 놈의 사용자는 일반적인 망할 놈의 저장소와 똑같이 작동 할 것이고 특별한 명령은 필요하지 않다. Subversion 사용자에게도 똑같습니다.

    힘내 및 파괴면은 자동으로 SubGit에 의해 동기화 상태로 유지됩니다.

    관련 문제