2009-02-27 6 views
48

CVS 저장소와 인터페이스하기 위해 git을 사용하기위한 모범 사례 및 팁은 무엇입니까?CVS에서 git을 사용하는 모범 사례

+3

나는 SourceSafe에 대해 같은 질문을하고 싶지만 실제로는 (완전히 목표물에 이르기까지) 비웃음을 타고 싶지는 않습니다. –

답변

21

비슷한 질문에 대한 답변을 here에 적었습니다.

이것은 중앙 CVS 저장소에 변경 사항을 계속 밀어 넣어야 할 때 놀랍게 잘 작동합니다.

11

나는 Git-CVS 상호 작용을 통해 친구를위한 Git 데모 작업을 했었지만 매우 직설적이었다.

  • cvsps의 현재 사본을 설치해야합니다. Git cvsimport은이 기능을 사용하여 CVS 기록에 액세스합니다.

    $ rsync rsync://yourprojecthost.com/cvsroot/yourproject/* 
    $ mkdir myproject.git 
    $ cd myproject.git 
    $ git cvsimport -p -x -v -d :local:/path/to/cvsroot/yourproject 
    
:
  • 우리는 큰 프로젝트를 위해, inital 셋업이 당신의 컴퓨터에 CVS의 REPO의 전체 복사본을 복용하고, 로컬 git cvsimport을 수행하여 훨씬 더 빨랐다, 발견

    -p 이후의 -x는 매우 중요합니다. 이것은 -x를 cvsps로 전달합니다. 자세한 내용은 cvsps man page을 참조하십시오.

  • +1

    나는/3 단계에서 오류가 있다고 생각한다. –

    +2

    @PeterBurns : 저기에 ... 'git cvsimport -p -x -v -d : local :/path/to/cvsroot yourproject' – Archenoth

    1

    약간의 메타 답변. git '게릴라 스타일'을 사용하도록 강요 당하면 (예 : 회사가 버전 관리를 위해 cvs를 사용하고있어 작업을 쉽게하기 위해 git를 사용하는 경우) 이와 같은 작업을 고려할 수 있습니다.

    CVS=realCvsPath 
    # commit to the git first 
    if ($ARGV[0] && $ARGV[0] eq "commit") 
    { 
    system 'git commit -a'; 
    } 
    
    # execute the appropriate cvs program 
    # =================================== 
    exec "$CVS", @ARGV 
    

    이 파일 'CVS'를 호출하고 그것을 실제 CVS 명령 앞에 경로를 포함. 그렇지 않으면

    8

    내가 내 자신의 workflow for remote CVS, local Git

    +1

    불특정 한 이유로 't trust''cvsimport'를 수행합니다 (이것을 수행 할 수있는 다른 도구들도 있습니다). 그래서 이전의 모든 개정 정보를 버리는 것을 권장합니까? 그것은 끔찍한 해결책입니다. –

    +0

    무엇이 그렇게 끔찍한가요? 변경 사항을 다시 CVS로 푸시하는 경우 개정 내역이 "버려집니다". 그리고 개정 내역을보고 싶다면 CVS 명령을 사용하여 수정할 수 있습니다. –

    +0

    'CVS'를'.gitignore'에 추가하면 얻을 수있는 이점은 무엇입니까? git 저장소를 불완전하게 만들지 않습니까? 내 말은 http://stackoverflow.com/a/37585092/1122270 및 http://stackoverflow.com/q/37585385/1122270을 참조하십시오. – cnst

    1

    상류 인 경우 CVS에서 100 % (예를 들어, 오픈 BSD의 세부 사항을 쓴 ... 자식이 그 유용하지 않은 CVS 것들,보다 오래된 커밋 할 수 있습니다 , 또는 그 서브 프로젝트 중 많은 부분이 mdocml 또는 ports-readmes과 같은 것), 특히 OpenBSD CVS 트리만큼 녹슬어 져있는 경우 (예 : 이력을 다시 작성하는 경우조차도), 기본 CVS/{Entries,Repository,Root} 파일을 내 git에 직접 커밋하는 것이 매우 유용하다는 것을 알았습니다 저장소.

    이는 자식이없는 테이너에 메일 링에 대한 올바른 CVS 패치를 생성하기 위해, 여러 개의 독립적 인 작업 공간을 가지고있는 모든 컴퓨터에 git에 체크 아웃하는 것을 가능하게 한 다음 장소에 cvs up, 또는 cvs diff하지 않는 매우 쉽게 업스트림