리비전 컨트롤 상충은 특정 사용자가 프로젝트의 로컬 버전에서 적용한 변경사항을 제출했지만 이 변경사항이 리비전 컨트롤의 최신 소스와 일치하지 않을 때 발생합니다.
이 같은 상충이 발생하는 이유는 몇 가지가 있지만, 가장 일반적인 것은 팀 멤버가 변경사항을 적용한 프로젝트 부분에 특정 사용자가 변경사항을 적용하기 때문입니다. 동료의 변경사항을 먼저 동기화하지 않고 자신의 변경사항을 제출하면 상충이 발생하게 됩니다.
팀 멤버 간에 상충을 방지할 수 있는 최선의 방법은 자동 체크아웃(auto checkout) 및 자동 실행 취소(auto undo)가 활성화된 상태를 유지하는 것입니다. 리비전 컨트롤 모범 사례를 통해 프로젝트 상충을 줄이고 리비전 컨트롤의 작동 방식에 대해 자세히 알아보세요.
자동 체크아웃 및 자동 실행 취소를 통한 상충 방지 경고
언리얼 리비전 컨트롤은 프로젝트가 리비전 컨트롤을 사용하여 생성된 경우 자동 체크아웃과 자동 실행 취소를 자동으로 활성화하여 대부분의 상충을 방지할 수 있도록 도와줍니다.
이러한 기능은 함께 작동하면서 에셋이 변경된 경우 자동으로 체크아웃을 시도하고, 체크아웃에 실패하면 자동으로 변경사항을 실행 취소합니다. 이 시스템은 상충이 발생했다는 경고를 트리거하여 실제로 상충이 발생하는 것을 미연에 방지합니다.
이 경고는 주로 다음 두 가지 시나리오에서 트리거됩니다.
팀 멤버가 체크아웃한 에셋을 변경하려고 시도하는 경우
다른 팀 멤버가 현재 체크아웃하고 있는 에셋을 변경하려고 시도하면 해당 팀 멤버가 독점적으로 체크아웃한 에셋을 변경할 수 없도록 변경사항이 자동으로 실행 취소됩니다.
이 경우에는 이미 상충을 방지했기 때문에 별도의 조치를 취할 필요는 없지만, 굳이 해당 에셋을 변경해야 하는 경우라면 해당 팀 멤버와 조율하여 직접 다시 체크인하고 최신 변경사항을 동기화하는 것이 가장 좋습니다.
이 문제가 처음 발생하면 다음과 같은 경고 모달이 표시되며 어떤 변경사항이 실행 취소되었는지, 또 누구에게 체크아웃되었는지 알려줍니다. 매번 이 경고를 확인하려면 '다시 표시 안 함(Don’t show me this again)'의 체크를 해제하세요.
이후에는 이러한 상황이 발생할 때마다 팝업 알림을 통해 알려줍니다.
최신 버전으로 동기화되지 않은 에셋을 변경하려고 시도하는 경우
아직 최신 버전으로 동기화되지 않은 에셋을 변경하려고 시도하면 나중에 해당 변경사항에 체크인할 수 없는 상황을 방지하기 위해 변경사항이 자동으로 실행 취소됩니다.
이 경우, 최신 버전으로 동기화하고 변경을 계속 진행하세요.
이 문제가 처음 발생하면 다음과 같은 경고 모달이 표시되며 어떤 변경사항이 실행 취소되었는지 알려줍니다. 매번 이 경고를 확인하려면 '다시 표시 안 함(Don’t show me this again)'의 체크를 해제하세요.
이후에는 이러한 상황이 발생할 때마다 팝업 알림을 통해 알려줍니다.
상충 오류 메시지
상충은 자동 체크아웃 및 자동 실행 취소가 꺼져 있을 때 가장 흔하게 발생합니다. 언리얼 리비전 컨트롤에서 상충이 발생하는 상황은 다음과 같습니다.
최신 버전으로 자주 동기화되지 않는 경우
에셋을 체크아웃하지 않은 상태에서 변경한 경우
오프라인으로 작업하는 경우
다음 섹션에서는 발생할 수 있는 상충 오류와 일반적인 원인에 대해 설명합니다.
최신 상태가 아닌 경우의 상충
사용자가 가장 최근에 동기화한 스냅샷보다 최신 버전인 스냅샷에서 다른 사용자가 변경 및 체크인한 에셋에 자신의 변경사항을 체크인하거나 최신 버전으로 동기화하려고 시도하는 경우 상충이 발생할 수 있습니다.
이때 상충이 발생하는 이유는 이전 버전의 에셋을 변경했기 때문입니다.
이 경우 오류 메시지에서는 어떤 에셋에서 상충이 발생했는지, 동기화가 필요한 에셋을 가장 최근에 변경한 사용자는 누구인지 알려줍니다. 이 상충을 해결할 수 있는 유일한 방법은 최신 변경사항을 동기화하여 기존 변경사항을 덮어쓰는 것입니다.
최신 버전으로 동기화한 후 덮어쓴 다음에는 변경하려는 에셋을 확인하고 변경사항을 체크인할 수 있습니다.
체크아웃된 에셋의 상충
또 다른 상충은 현재 다른 사용자가 체크아웃한 에셋을 변경한 후 최신 버전으로 동기화하거나 변경사항을 체크인하려고 시도하는 경우 발생합니다.
이 상충이 발생하는 이유는 현재 팀 멤버가 독점적으로 체크아웃하고 있어서 사용자에게 편집 권한이 없는 항목을 변경했기 때문입니다.
이 경우 오류 메시지에서는 사용자가 어떤 에셋을 체크아웃하지 않고 변경했는지, 팀 멤버와 어떻게 조율할 수 있을지 알려줍니다.
변경사항을 무시하려면 리비전 컨트롤 컨텍스트 메뉴를 통해 상충이 발생한 개별 에셋의 변경사항을 되돌린 후 동기화 또는 체크인을 다시 시도할 수 있습니다.
복제 에셋의 상충
세 번째이자 드물게 발생하는 유형의 상충은 팀 멤버 두 명이 실수로 동일한 이름의 에셋 및 파일 경로를 생성하고 각각 저장 및 체크인하려고 할 때 발생합니다. 이 경우, 먼저 체크인한 쪽은 성공하지만 나중에 체크인한 쪽은 오류 메시지를 받게 됩니다.
따라서 두 번째 오브젝트의 이름을 변경하는 것이 오브젝트가 삭제되지 않도록 방지할 수 있는 최선의 방법입니다. 또한 파일 경로만 다르면 상충이 발생하지 않으므로 프로젝트 계층구조에서 에셋의 위치를 변경하는 것도 방법이 될 수 있습니다.
오프라인으로 작업하는 경우
UEFN 프로젝트의 일부 작업은 오프라인에서도 수행할 수 있기는 하지만 권장되지는 않습니다. 오프라인 작업 시 인터넷 연결 없이는 에셋을 체크아웃할 수도 없고 두 사용자가 동시에 같은 작업을 하게 될 수도 있기 때문에 동료와 상충이 발생할 위험이 있습니다.
오프라인으로 작업할 때는 다음을 권장합니다.
자신이 작업할 내용을 팀 멤버에게 미리 공유하고, 가능하다면 연결이 끊기기 전에 에셋을 체크아웃합니다.
최대한 빨리 인터넷 연결을 재설정하고 최신 버전으로 동기화한 후 자신이 변경한 사항을 체크인합니다.