2010-02-22 3 views
14

내가 일하고있는 개발자 그룹은 약 반년 전에 VSS에서 SVN으로 전환했습니다. CheckOut-CheckIn에서 Update-Commit으로의 전환은 많은 사용자에게 어려움이있었습니다. 이제 더 이상 파일을 체크 아웃하지 않아도됩니다. (더 정확하게 말하면, 아무도 파일을 체크 아웃 한 것을 볼 수 없으며, 파일을 체크 아웃 한 후 파일), 그것은 한 번 이상 사용자가 완료 한 후에 변경 사항을 저지른 것을 잊어 버렸습니다.SVN에 더 많은 커밋을 장려하는 방법

대부분의 사용자가 변경 사항을 적용하는 것이 좋지만이 문제는 심각하므로 사용자를 get locks on all files in SVN before editing으로 설정해야 할 수 있습니다. 차라리 이런 일이 일어나는 것을 보지 않을 것이지만 상황을 다른 방법으로 개선하는 방법을 놓치고 있습니다. 그래서 사람의 작업을 수행 할 수있는 방법을 제안 할 수있는 사항은 다음과 같습니다

  1. 트랙들이
  2. 을 수행 할 때 변경 내용을 커밋과 일관성을 위해 사용자를 장려 편집하지만
  3. 에 아직 커밋 된 변경 사항이있는 어떤 파일 사용자 솔루션은 환영 아웃 - 오브 - 박스 새로운 버전 관리 패러다임

에 사용되는 사람을 얻을하는 데 필요한 사용자 교육 오프

  • 도움말 마감 (예 : 그들은이 돈하지 않은 경우 사용자를 생각 나게 데스크탑 프로그램을 저지하기 일정한 간격으로 자동으로 사용자의 커밋 속도를 확인하고 빈도가 특정 임계 값 이하로 떨어지면 경고 전자 메일을 보냅니다.

  • +4

    체크인 커밋 로그는 이론적으로는 작동하지만 수동으로 수행하기는 어렵습니다. 어떤 유형의 자동화 된 방법이 선호 될 것입니다.전달 프로세스 프로세스에는 SVN에서 업데이트 한 다음 변경 사항을 업로드하는 세 번째 사용자가 참여할 수 있습니다. 불행하게도, 단위 테스팅과 함께 갈 수있는 방법이 있기 때문에, 모든 변경 사항이 포함되었는지 자동으로 확인할 방법이 없습니다 (심지어 새로운 단위 테스트를 커밋하는 것을 잊어 버리는 것과 같은 문제가 존재합니다). –

    답변

    14

    ... 사용자가 완료 한 후에 변경 사항을 커밋하는 것을 잊었습니다.

    여기가 바로 문제라고 생각합니다. 기능/버그 수정이 체크인되지 않은 경우 어떻게 "완료"할 수 있습니까? 미해결 문제를 기록하는 문제 추적 시스템이 있습니까? 체크인을 마치 자마자 단위 테스트를 실행하는 지속적인 통합 시스템이 있습니까?

    개발자가 아무런 설명없이 자신의 일을 막 방금하면 모든 사람이 협조 할 수있는 문제에 직면하고 있다는 것은 놀라운 일이 아닙니다. 개별 개발자가 나머지 개발자 팀과 협력하고 있는지 확인해야하는 일종의 감독 (프로젝트 관리자 팀 책임자)이 필요합니다.

    +0

    불행하게도 단위 테스트와 지속적인 통합은 여전히 ​​채택 초기 단계에 있습니다. 단위 테스트를하더라도 사용자가 테스트 프로젝트에 단위 테스트를 수행하는 것을 잊어 버렸다면 테스트는 커밋을 잊어 버릴 수 있습니다. –

    +0

    진지하게 이것은 개발 관리자/책임자가 해결해야 할 일입니다. –

    +1

    @ Yaakov Ellis, 같은 사람이 코드와 단위 테스트를 작성하는 것은 어떨까요? – Abizern

    0

    커밋 로그를 읽고 사람들에게 상태 및 변경 사항을 언제 체크 인 할 것인지 묻습니다. 마치 '저장'하는 것처럼 모든 부분을 커밋하는 것이 낫습니다.

    개발자는 어떻게 완료하고 체크 인을 잊을 수 있습니까? 사용자가 개발자의 시스템에서 빌드를 실행하는 것과 같은 전달 프로세스가 있습니까?

    +0

    읽기를 작동 교체 체크인 할 개발자를 찾을 수 또는 –

    6

    어떤 종류의 버그/기능 추적 소프트웨어를 사용합니까?
    완성 된 작업을 체크 할 때 수정 번호를 포함하도록 요청할 수 있습니다.

    +0

    FogBugz를 사용하여 버그 추적 및 새로운 프로젝트의 작업 추적을위한 자생 소프트웨어. –

    +0

    +1 또한 일부 품질 보증을 요구하도록 버그 추적기를 구성하십시오 (예 : 코드 리뷰 또는 테스트 리뷰. 그것은 어쨌든 좋은 생각이고 분명히 사람들이 저 지르도록 강요합니다! – MarkJ

    5

    나는 문제가 실제로 버그/기능/변경 사항 추적과 contigous 빌드 시스템 combinet 부족하다고 생각합니다. 버그 추적 시스템과 연속 빌드를 사용하면 개발자는 변경 사항을 자동화 된 빌드로 만든 후 변경 사항이 포함 된 릴리스가 빌드되고 빌드 유효성 검사 테스트를 통과 한 후 릴리스 드롭 위치에 드롭 된 후에 만 ​​'완료'라고 주장 할 수 있습니다. 'make'를 빌드로 변경하는 유일한 방법은 체크인 (기능 브랜치를 메인 브랜치/트렁크에 역으로 통합 할 수 있음)하기 때문에, 개발자는 체크인을해야합니다. 그렇지 않으면 절대 아무것도 완료하지 않습니다. .

    2

    소규모 개발 그룹에서는 그룹 메일 링리스트에 하루 이전의 체크 인 요약과 체크 인 수, 전체 회선 수 등을 보여주는 비공식 '경마'를 보여주는 이메일을 보았습니다. 지난 30 일 이내에 도움이 될 것입니다. 분명히 어떤 종류의 성능 척도로 수표를 사용할 수는 없지만 여전히 재미 있었고 모든 사람의 마음에 소스 제어를 유지했습니다. "이봐 요. 조가 이번 달에 체크인을 통과했습니다. 오, 잠깐, 어제 그 코드를 체크하지 않았습니다."

    사람들이 아침에 와서 다른 사람들이 개발자의 마음에두고있는 것을 그대로 두거나 다른 사람이 그것을 계속 읽는 것처럼 다른 장점이 있습니다. '코드 동결'에 직면하고 릴리스가 가까워지면 전자 메일을 실제로 체크 인 요약에서 변경하여 실제 'diffs'를 포함시켜 모든 코드 행이 즉시 눈을 뜰 수있게합니다.

    +0

    그런 이메일을 생성 할 수있는 자동화 된 도구에 대해 알고 있습니까? –

    +0

    미안하지만, 우리 개발자 중 한 명이 재미있는 이메일 스크립트를 작성하고 그냥 잡았을 것으로 믿습니다. – bdk

    +0

    개발자가 소스 제어를 무시하면 개발자는 매일 전자 메일 메시지도 무시하지 않을 것입니까? –

    1

    일반적으로 개발자가 자주 커밋하도록 권장하는 것은 자체 보존입니다. 병합 충돌로 인해 업데이트가 어려워지고 변경 사항을 푸시함으로써 문제가 완화되었음을 발견하면 더 자주 커밋합니다.

    근본적으로 잘못된 것이있는 것처럼 들립니다. VCS를 거치지 않고 개발자가 출시 된 제품을 어떻게 변경하고 있습니까? 뒷문을 닫아야합니다.

    +1

    "VCS를 거치지 않고 개발자가 출시 된 제품을 어떻게 변경하고 있습니까?"이것이 문제입니다. 적은 수의 경우 코드가 있어야 할 때 릴리스되지 않았습니다. 나는 그 뒷문을 닫을 방법을 찾아 내려고 시도하고있다. –

    6

    이전에 VSS를 사용했다면 Visual Studio에서 작업했을 것입니다. AnkhSVN에는 TFS 및 VSS와 같은 보류중인 변경 창이 있습니다. 이 도구 창은 솔루션에서 로컬로 수정 된 파일을 자동으로 표시합니다.

    변경 사항을 보류중인 변경 창을 사용하면 작거나 논리적 인 변경 작업을 쉽게 처리 할 수 ​​있으며 나중에 변경 사항을 일찍 처리 할 수 ​​있습니다.

    +0

    다소 비슷하게 Eclipse에서 로컬 변경 사항이있는 파일은 패키지 탐색기에서 해당 파일의 상태가 wvt svn임을 나타내는 작은 아이콘으로 표시됩니다. (금색 실린더 = 마지막 업데이트 이후 로컬 변경 없음, 갈색 별 = 수정 됨, 파란색 '+'= 추가됨 등). 언제나 그 견해가 열려 있다면, 당신은 "내가 한 모든 일이 저질렀다"는 것을 의미하는 모든 금색 실린더를 보는 데 익숙해 져 있습니다. – MatrixFrog

    4

    은 자동화 된 빌드 시스템을 가져 오기 (또는 일을 적어도 하나의 전용 사람을 빌드), 그 기계에서만 배포 [이전 AnkhSVN 버전의 스크린 샷을 참조]. 그런 다음 커밋 할 때까지 코드가 배포되지 않으며 저장소에서 아무 것도 제거되지 않도록합니다.

    또한 팀 구성원 중 최소한 몇 명은 조기에 커밋해야하며 느린 커미터는 더 많은 로컬 병합 충돌을 처리해야하기 때문에 일반적으로 다른 사람도 계속 유지하도록 권장합니다.

    0

    괜찮은 버그/기능 추적기를 사용하면 변경 사항을 커밋 할 때 버그 번호를 추가 할 수 있습니다. 예를 들어 Redmine을 실행 중이라면 Subversion 커밋 메시지의 "Fixes # 323"으로 커밋 할 수 있으며 버그/작업 323이 자동으로 닫힙니다. 설정은 매우 쉽습니다. Redmine에게 리포지토리가 어디 있는지 물어야합니다. 어쨌든 묻습니다.

    이 방법을 사용하면 각 버그에 대해 커밋 된 변경 사항을 볼 수 있으며 커밋없는 버그는 수동으로 닫히지 않는 한 열립니다. 이정표에 버그를 할당하고 이정표가 릴리스되기 전에 버그에 대한 커밋을 검토 할 수 있습니다.

    Trac도 많은 기능을 수행합니다.

    +0

    커밋과 작업을 너무 많이 연관시키는 것은 아닙니다. 사람들이 모든 것을 저지르고 있는지 확인하는 것입니다. –

    +1

    나는 그 생각이 당신이 "그 버그를 고쳤습니까?"라고 말하는 것 같아요. 개발자가 "그렇지만 아직 커밋하지 않았다"고 말하면 "아직 해결되지 않은"것으로 간주됩니다. – MatrixFrog

    +0

    이 연관성은 사람들이 모든 것을 저지르는 것을 보장하기위한 것입니다. 아이디어는 당신이 웹 사이트에서 작업을 잡으면, 그 작업이 완료되었다는 가장 쉬운 방법은 커밋 코멘트에 "Fix # 323"을 추가하는 것입니다. 어떤 종류의 커밋을 보장합니다. –

    1

    당신의 배포를 구축하고 자동화하고,이 테스트 서버에서 테스트 될 때까지 아무것도 "일 없습니다"하는 프로세스의 일부로 만들

    우리는 당신이 항상