예를 들어 게임 엔진과 같이 여러 사람이 동시에 작업하는 동안 덮어 쓰기가 어떻게 방지 될 수 있습니까?
하자 말의 개발자 하나 에 노력 Audio.cpp
하고 개발자 두 도에 작동하고 Audio.cpp
, 방법이 일반적으로 전투 덮어 쓰기에 큰 팀에서 관리한다? (즉 , 개발자 1 이 완료 될 때까지 개발자 2 가 파일을 열지 못하게 하려면 )
예를 들어 게임 엔진과 같이 여러 사람이 동시에 작업하는 동안 덮어 쓰기가 어떻게 방지 될 수 있습니까?
하자 말의 개발자 하나 에 노력 Audio.cpp
하고 개발자 두 도에 작동하고 Audio.cpp
, 방법이 일반적으로 전투 덮어 쓰기에 큰 팀에서 관리한다? (즉 , 개발자 1 이 완료 될 때까지 개발자 2 가 파일을 열지 못하게 하려면 )
답변:
게임 개발뿐만 아니라 대부분의 소프트웨어 개발 팀은 버전 관리 소프트웨어를 사용하여이 문제를 해결 합니다 . 예는
이러한 모든 도구에는 약간의 차이가 있지만 기본 워크 플로우는 일반적으로 다음과 같습니다. 전체 코드베이스가있는 프로젝트를위한 중앙 저장소가 하나 있습니다. 개발자가 프로젝트에 참여하려고 할 때 "체크 아웃"을 수행합니다. 버전 제어 소프트웨어는 코드베이스를 로컬 시스템에 복사합니다. 소프트웨어는 코드베이스의 현재 버전 ( "개정")을 기억합니다. 개발자가 변경을 수행하고이를 메인 리포지토리에 배치하려고하면 "커밋"을 수행합니다. 변경 사항이 중앙 리포지토리에 업로드되고 새 개정 번호가 생성됩니다.
다른 개발자가 변경 사항을 커밋하려고하지만 한 번 체크 아웃 한 개정판이 더 이상 최신 개정판이 아닌 경우 버전 관리 시스템에서는이를 허용하지 않습니다. 개발자는 먼저 그 동안 발생한 개정을 "풀"해야합니다. 이렇게하면 로컬 사본이 중앙 저장소의 최신 버전으로 업데이트됩니다. 충돌이있는 경우 (중간 개정도 변경 한 파일을 변경 한 경우) 소프트웨어는 자동으로 관리 할 수없는 경우 충돌하는 파일을 수동으로 편집 ( "병합")하여 충돌을 해결하도록 요청할 수 있습니다. 그런 다음 변경 사항을 새 개정으로 커밋 할 수 있습니다.
개발자는 동일한 파일을 사용하지 않습니다 .
각 개발자는 자신의 파일 버전을 가지고 있으며 작업을 관리하기 위해 특별한 종류의 소프트웨어를 사용합니다. 둘 다 변경하면 다른 개발자가 수행 한 변경 사항을 덮어 쓰려고 시도하면 해결 해야하는 충돌 이 발생 합니다. 그렇지 않으면 내가 이야기 한 소프트웨어가 불평하기 시작합니다. 즉, 충돌을 일으키는 개발자는 다른 개발자의 작업과 작업을 결합한 다음 파일을 "저장"할 수 있어야합니다.
이것은 그렇지 않은 간단한 버전 제어 개념의 일부에 대한 간단한 설명입니다 .
버전 관리 및 병합과의 충돌 처리에 대한 다른 답변에서 제기 된 사항 외에도 팀 구성원이 서로의 작업을 덮어 쓰는 것을 피할 수있는 다른 두 가지 방법이 있습니다.
일부 버전 제어 시스템 (예 : SVN)은 파일 잠금을 허용합니다. 즉, 한 팀 구성원이 일정 시간 동안 파일의 독점 소유권을 가질 수 있으므로 파일이 잠금 해제 될 때까지 다른 팀 구성원이 충돌하는 편집 (또는 실제로 모든 편집)을 수행 할 수 없습니다.
그러나 여러 가지 문제가 발생할 수 있으므로 일반적으로 자주 사용되지 않습니다. 특정 시간에 파일 작업을 수행 할 수있는 사람을 제한하여 생산성을 저하시킬 수 있으며 누군가 파일 잠금 해제를 잊어 버린 경우 문제를 일으킬 수 있습니다. 또한 적어도 SVN (다른 VCS에 대해서는 잘 모르겠습니다)의 경우 파일을 잠그면 다른 사람이 작업 사본을 변경하는 것을 막을 수 없으며 변경 사항을 커밋하는 것만 막을 수 있습니다.이 경우 개발자가 노력을 낭비 할 수 있습니다 파일이 잠겨 있기 때문에 변경 사항을 커밋 할 수 없다는 것을 발견하기 위해 파일을 수정합니다.
팀은 주어진 시간에 특정 파일을 작업하는 사람이 두 명 이상 없도록 개발자에게 작업을 할당하려고 시도 할 수 있습니다. 예를 들어 개발자는 프로젝트의 특정 부분 (예 : 3D 렌더링, 네트워크, 오디오 등)을 담당 할 수 있습니다. 코드베이스가 모듈화되어 있으면 네트워크 코드에 할당 된 개발자는 파일을 만질 필요가 거의 없습니다. 오디오 다루기.
물론 다른 방법으로 관리해야하는 중복 부분이 항상 있습니다.