git과 같은 분산 버전 제어 시스템을 사용하고 공유 폴더 시스템을 사용하여 참조 저장소를 저장하십시오. 이유는 다음과 같습니다.
각 클론은 백업입니다
서버 하드 드라이브가 충돌하면 모든 사람이 새 드라이브 나 서버에 배포 할 수있는 사본을 갖게됩니다. 회사가 버전 관리에 대해 진지하지 않기 때문에 백업과 거의 동일하다고 생각합니다.
공통 참조
마스터 브랜치가있는 기본 리포지토리를 사용하면 마지막 단어가있는 버전을 알 수 있습니다. "프랑크 버전에 대해 변경 사항을 테스트했지만 존 버전도 있었습니까? 어떻게 병합 했습니까?"
보다 편안하게 전달
고객이 오늘 알파 버전을 원하십니까? 마스터가 충분히 안정적인지 테스트하고 배송 할 수 있습니다. 그렇지 않은 경우 고칠 시간이 없다면 시간을 거슬러 올라가고 더 오래되었지만 더 안정적인 버전을 얻으십시오. 최신 버전 만있는 경우에는 그렇게 할 수 없습니다.
시간을 거슬러 올라가 실수를 고치세요
수동 병합에 며칠 후에 만 문제가 발생했지만 이미 공유 폴더의 내용을 덮어 쓰셨습니까? VSC가 없으면 기록이 없으므로 실수를 확인하고 수정할 수있는 지점으로 쉽게 돌아갈 수 없습니다. 코드는 그림이 아니라 영화와 같습니다. 시간이 지남에 따라 진화합니다. 영화에서 사진을 추출 할 수 있습니다. 사진에서 동영상을 추출 할 수 없습니다.
더 쉽게 버그 찾기
버그가 나타 났지만 도입 당시에는 실제로 눈치 채지 못했기 때문에 코드가 "핫"한 동안에는 수정할 수 없었습니다. 이제 어떤 변경이 도입되었는지 알지 못하므로 코드의 여러 위치에서 발생할 수 있습니다. 어디를 볼지 찾기까지 몇 시간이 걸립니다. git을 사용하면 버그가 특정 버전에서 발생하는지 테스트하고 버그 git bissect를 도입 한 정확한 커밋을 찾기 위해 테스트를 개발했을 수 있습니다 . 수천 줄의 코드를 찾는 대신 이제 10 줄이 바뀌는 것을 알았으며 테스트 스위트에서 테스트를 유지하여 버그가 다시 발생하지 않도록 할 수 있습니다.
각 개발자는 자신의 작업에 책임이 있습니다.
당신이 팀 리더이고 VCS가 없다면, 아마도 더러운 일을해야 할 것입니다. 직접 수행하면 모든 변경 사항에 대해 모든 것을 알지 못하고 오류가 발생할 수 있습니다. 반대로, 코드를 작성하는 사람들에게 항상 코드를 병합 할 때마다 수집하도록 요청하면 새 코드를 생성하는 데 사용하지 않는 시간입니다.
VCS를 사용하면 간단한 워크 플로우에서 개발자는 자신의 작업과 외부 변경 소스 인 마스터 브랜치 만 처리하면됩니다. 마스터 브랜치에는 1 명 또는 100 명이 참여할 수 있습니다. 변경 사항을 적용하려면 다른 사람이 수행 한 최신 변경 사항에 맞게 변경해야합니다. 코드를 푸는 데 시간이 더 걸리는 것처럼 보이지만 어쨌든 시간이 걸리는 병합을 수행하기 때문입니다.
차이점은 변경을 수행 한 사람이 코드를 작성했기 때문에 해당 코드를 가장 잘 아는 사람이 병합을 수행한다는 것입니다.
누가 그 코드를 작성 했습니까?
여기에 그 버그가 있지만 누가 특정 코드 줄을 작성 했습니까? 특히 프로젝트가 sevral 개월 지속되는 경우 기억하기 어렵습니다. git blame그 줄이 누구와 언제 쓰여 졌는지 알려 주었으므로 올바른 사람에게 물어볼 수 있으며 "그것을 기억하는 것은 기억 나지 않습니다".
프로젝트가 커지고있다
고객이 더 많은 기능을 원하고 너무 작은 팀이므로 다른 개발자가 필요합니다. VSC없이 증가 된 병합 복잡성을 어떻게 관리합니까?
긴급한 변화
고객이 프로덕션에 대한 중요한 버그 수정을 요청하고 요청했지만 현재 새 기능을 개발 중입니다. 그냥 git stash옆으로 변경 사항을 넣어, 또는 새로운 지점에 커밋하고 변경 사항을 밀어 당신은 당신의 보류중인 작업을 잃을 두려움없이, 긴급 수정 작업을 시작할 준비가 된 것입니다.
10 분 전에 일했습니다
로컬에서 일부 변경을 수행 중이며 10 분 전에 작동 한 작업이 중지되었습니다. VCS가 없으면 코드를 쳐다 보거나 참조 버전을 복사 한 후 변경 내용을 확인하십시오. 잠깐, 일을 시작한 이후에 참조가 바뀌 었으므로 더 이상 벗어날 수 없습니다. 그리고 변경 사항을 기반으로 한 코드의 깨끗한 사본을 유지하려고 생각하지 않았습니다.
VCS를 사용하면 바로 같은 작업을 수행 git diff하고 기반 코드의 올바른 버전과 비교하여 변경 사항을 적용 할 수 있습니다.
디버그 로그를 유지해야합니다
그래서 당신은 나쁜 사람이고 로깅을 사용하지 않습니까? printf그 불쾌한 버그를 모두 찾을 때까지 모든 코드베이스에 s 를 뿌려야 했습니까? 이제 하나를 찾아서 고쳤지만 나머지 문제를 해결하기 위해 신중하게 제작 된 디버깅 코드를 유지하려고합니다.
VCS가 없으면 파일을 복사하고 디버깅 코드를 삭제하여 (편집 오류가 발생할 수 있음)이를 푸시 한 다음 백업 된 파일을 다시 넣어야합니다. 어쨌든 디버깅 코드가 들어간 것 같습니다.
자식과 함께, 당신은 git add --patch당신이 당신의 커밋에 넣어 원하는 코드 몇 줄을 선택하고 커밋 할 수 있습니다 만 그. 그런 다음 작업을 재개하고 여전히 디버깅 코드가 있습니다. 코드를 건드릴 필요가 없으므로 복사 / 붙여 넣기 오류가 없습니다.
진흙의 큰 공
VCS가 없으면 사람들은 자신의 편에서 일하며 때로는 관련이없는 여러 가지 변경 사항을 제공합니다. 확인할 코드가 너무 많으면 버그를 찾기가 어렵습니다.
VCS를 사용하면 작은 증분 변경을 수행하고 변경 로그를 제공 할 수 있습니다. 변경 로그가 필수적이다 : 사람들이 말할합니다 왜 그들이 변화를하고있는, 아니 어떤 변화가합니다 ( 어떤 질문 alredy 코드 변화 그 자체로 대답한다). 이는 예를 들어 새로운 기능의 일부 코드를 검사 할 때 관련이없는 버그 수정과 같이 관련이없는 여러 가지 변경 사항을 읽을 필요가 없음을 의미합니다. 이를 통해 관심있는 코드에 집중할 수 있습니다.
내가 당신에게 100 개 감자를 1 개씩주고 하나가 썩 으면, 당신은 즉시 그것을 찾을 것입니다. 이제 당신 앞에 100 개의 감자를 버리고 썩은 것을 찾아달라고 요청한다면 그것은 같은 일이 아닙니다.
들여 쓰기
코딩 스타일 정책이 좋기를 바랍니다. 그렇지 않으면 들여 쓰기를 변경하면 손으로 병합하면 미치게됩니다. 물론 변경 사항에서 공백을 무시할 수 있습니다 (그러나 파이썬과 같이 들여 쓰기가 중요한 언어는 아닙니다). 그러나 읽기 어려운 코드가 생길 것입니다.
당신은 프로젝트 리더입니다
당신이 지도자라면, 일이 잘되지 않으면 책임을지게 될 것입니다. 상사가 올바른 작업에 적합한 도구를 사용하는 것이 그만한 가치가 있음을 이해하지 못해 상황에 익숙해지지 않으면 최소한 예측 가능한 실패의 리더가되는 것을 거부합니다.