외부 병합/차이 도구
병합 도구
프로젝트를 다른 사람과 함께 작업할 때, 여러 사람이 동일한 파일을 수정하면서 충돌이 발생할 가능성이 항상 존재합니다. 대부분의 소스 제어 시스템은 충돌이 발생한 파일을 병합하는 데 좋은 시도를 하지만, 동일한 위치에서 변경 사항이 있을 경우, 어떻게 해야 할지 아는 데 약간의 도움이 필요합니다. 이때 병합 도구가 변경 사항을 보여주고 결정을 내릴 수 있도록 도와줍니다.
각 병합 도구는 다르기 때문에, 충돌 창에서 "병합 도구 선택" 버튼을 클릭하여 설정할 수 있는 네 가지 매크로가 있습니다:
${scm_mine}
: 내 버전의 경로${scm_theirs}
: 상대방 버전의 경로${scm_base}
: 충돌이 발생하기 전의 버전 경로${scm_merged}
: 병합 도구가 저장할 경로
특정 병합 도구에 경로를 제공하면, GameMaker가 선택한 도구에 따라 기본값을 자동으로 채워줍니다.
병합 도구 | 기본 설정 예시 |
---|---|
KDiff3 | "${scm_theirs}" "${scm_mine}" -o "${scm_merged}" |
Meld | "${scm_mine}" "${scm_merged}" "${scm_theirs}" |
Notepad++ | ${scm_merged} |
TortoiseMerge | /base:"${scm_base}" /theirs:"${scm_theirs}" /mine:"${scm_mine}" /merged:"${scm_merged}" |
DiffMerge | "${scm_mine}" "${scm_merged}" "${scm_theirs}" |
병합 도구를 사용하고 싶지 않거나 없는 경우, IDE에서 충돌 스크립트를 열고 직접 수정할 수 있습니다.
예를 들어, 마스터에서 풀을 수행한 후 파일이 충돌한 경우, 소스 제어 충돌 창이 열립니다. 충돌한 스크립트를 클릭하고 병합을 클릭하면 설정한 병합 도구가 열립니다. 충돌을 처리한 후 매크로를 사용하여 필요한 변경을 수행합니다. 병합 도구를 닫으면 GameMaker IDE에서 확인 창이 나타납니다. "예"를 클릭하여 병합 도구를 사용하여 작업을 완료했음을 확인하고, 변경 사항을 커밋하여 병합 작업을 종료합니다 (소스 제어 > 변경 사항 커밋).
커밋 창에서는 병합이 진행 중이며, 스테이지되지 않은 파일이 표시됩니다. 이 파일들은 .base
, .ours
, .theirs
가 추가된 스크립트 파일입니다. 이 파일들은 안전하게 삭제할 수 있으며, 선택 후 오른쪽 클릭하여 삭제 경로를 선택합니다. 커밋 메시지는 병합과 충돌이 있었음을 나타내며, 필요에 따라 수정할 수 있습니다.
원격 또는 공유 리포지토리를 사용할 때의 작업 흐름은 다음과 같습니다:
단계 | 설명 |
---|---|
변경 사항 만들기 | 파일 수정 후 저장 |
커밋 | 변경 사항을 커밋 |
풀 | 최신 변경 사항을 가져오기 |
병합 | 충돌 해결 |
푸시 | 변경 사항을 원격 리포지토리에 푸시 |
차이 도구
커밋을 수행할 때 사용할 차이 도구도 설정해야 합니다. 이는 병합 도구와 마찬가지로 환경 설정에서 설정할 수 있습니다. 차이 도구는 병합 도구와 유사하게 구성되지만, ${scm_base}
와 ${scm_theirs}
옵션만 사용합니다. 이 경우 ${scm_base}
는 수정되지 않은 파일을 나타내고, ${scm_theirs}
는 파일의 현재 상태를 나타냅니다.
차이 도구 | 기본 설정 예시 |
---|---|
Meld | 기본 옵션으로 자동 채워짐 |
KDiff3 | 기본 옵션으로 자동 채워짐 |
TortoiseMerge | 기본 옵션으로 자동 채워짐 |
Notepad++ | 지원되지 않음 (단일 파일 차이 패치 출력 불가) |
현재와 이전 수정 사항 간의 변경 사항을 보려면 커밋 창을 열고 파일을 더블 클릭하면 됩니다. 도구가 올바르게 설정되었다면, 변경 사항을 확인할 수 있습니다.