퍼포스 자동 병합 툴

퍼포스를 사용한 통합 프로세스를 자동화시켜 주는 스크립트입니다.

Windows
MacOS
Linux

Perforce의 AutoMerge 스크립트는 Perforce의 통합 (일명 병합)과 관련된 지루한 그리고/또는 오류가 발생하기 쉬운 단계들을 자동화하기 위해 존재합니다. 이것은 Perforce 통합 페이지에서 설명한 것처럼 병합을 위한 여러 최상의 처리방법들을 합병하므로, Unreal Engine Perforce 데이터베이스에서의 병합에 권장되는 수단입니다.

자동 병합 툴 사용하기

이 스크립트는 두 브랜치 사이에서 하나의 변경목록(changelist)을 병합할 수 있도록 해주는 P4V 또는 P4Win에서 "커스텀 도구" 로서 작용합니다.

아래의 스크린샷은 P4V에서 이 도구가 사용되는 모습입니다:

P4AutoMergeCustomToolMenu.jpg

  • 어떤 브랜치에서든 Safe Merge 또는 NULL Merge 를 선택할 수 있습니다(아래에서 설명).

  • 임의의 브랜치 선택을 허용하는 General 메뉴가 있습니다 (팝업 대화상자와 함께).

  • P4V 또는 P4Win의 커스텀 도구 에디터에서 포맷을 일치시킴으로써 자신의 커스텀 브랜치를 추가할 수 있습니다 .

스크립트가 실행되면, 이는 아래 그림같은 진단 메시지를 별도의 Windows에 내보내게 됩니다(P4V에서.P4Win은 이를 상태 창에 표시합니다):

P4AutoMergeOutput.jpg

이 Windows는 어떤 일이 발생하고 있는지에 대한 요약을 나타내며, 문제점 해결에 사용될 수 있습니다.

마침내 체크인 할 준비가 갖춰지면, 설명 필드가 이미 저희의 병합 방침이 요구하는 정보로 채워져 있을 것입니다:

P4AutoMergeChangeDescription.jpg

설명에는 다음 것들이 포함되어 있습니다:

  • 병합 발생 방법을 나타내는 [AUTOMERGE] 또는 [SAFEMERGE]

  • 원래의 변경목록 설명의 복사본

  • 시작되는 브랜치, 변경 번호, 제출하는 사용자, 그리고 날짜를 나타내는 바닥글.

Safe Merge (안전 병합)

Safe Merge 도구는 변경목록을 병합하고, 두 브랜치 중의 한 브랜치에서 변경된 파일들만을 분석하는 자동-안전 분석을 수행합니다. 이 타입의 분석은 성공이 보장됩니다. 이 과정이 끝나면, 이미 필요한 체크인 설명이 들어 있는 새 변경목록을 가지게 됩니다. 분석할 파일(병합이 수행될 필요가 있는 파일들)이 남아있는 경우에는, 체크인 하기 전에 수동으로 처리해야 합니다.

수동 분석에 대한 도움이 필요하시면 Perforce 통합 페이지를 참고하십시오.

NULL Merge (NULL 병합)

NULL Merge 도구는 변경목록을 병합하고, 파일들이 통합되기는 하지만 변경되지는 않는다는 것을 뜻하는 상대를 수용하는 분석을 수행합니다. 이는 변경목록이 통합을 위해 고려되었지만 변경들을 합병하지 않기로 결정되었다는 것을 분명하게 나타냅니다.

NULL 병합에 대한 자세한 정보는 Perforce 통합 페이지를 확인하십시오.

사용법

  • 안전 병합(단지 예로서 UT3가 사용됩니다): UT3-PC에서 제출된 변경목록을 오른 클릭합니다 . AutoMerge | UT3 PC -> PS3: SAFE Merge 위의 단계가 끝나면, 파일들과 함께 새 변경목록이 만들어집니다. 안전하게 분석될 수 있는 파일들은 분석되고, 나머지 파일들이 출력 Windows에 표시됩니다. * 안전하게 분석될 수 없던 파일들을 분석하고 체크인 합니다.

  • NULL 병합 (단지 예로서 UT3가 사용됩니다): UT3-PC에서 제출된 변경목록을 오른 클릭합니다. MergeTo | UT3 PC -> PS3: NULL Merge 위의 단계가 끝나면, 파일들과 함께 새 변경목록이 만들어집니다. 모든 파일들이 NULL 병합됩니다. * NULL 병합을 체크인 합니다.

설치

Python 설치하기

스크립트는 P4Python API를 사용하는 Python 스크립트입니다. 그러므로 이것을 먼저 설치해야 합니다.

  • Python: ActiveState ActivePython 배포본이 권장됩니다. 스크립트는 현재 Python 버전 *2.5.2*로 테스트 됩니다.

  • P4Python: 최신의 P4Python을 Perforce 사이트의 Related Software 페이지에서 다운로드할 수 있습니다. Perforce 사이트에서 API documentation 를 구할 수 있습니다. 스크립트는 현재 P4Python 버전 2008.2*로 테스트 됩니다.

커스텀 도구 설치하기

일단 Python과 P4Python이 설치되면:

  • python 스크립트 P4AutoMerge.py.txt 를 다운로드하여 Python 경로에 넣습니다.

  • P4V의 Tools 메뉴에서 Manage custom tools... 를 선택합니다.

  • New > Tool... 을 선택합니다 (선택적으로 도구들을 그룹짓기 위한 폴더를 만듭니다)

  • 아래 그림에서와 같이 옵션들을 설정합니다. 지적된 문자열을 여러분의 브랜치 이름으로 대체합니다. P4V의 커스텀 도구에 대해 이용할 수 있는 옵션에 대한 자세한 정보를 보려면 select... 버튼을 클릭합니다.

P4AutoMergeSetup_KR.jpg

  • 이제 제출된 변경목록을 오른 클릭하여 도구를 선택할 수 있어야 합니다.

General 브랜치 도구 설치하기

브랜치 이름의 입력을 요구하는 프롬프트를 표시하도록 P4V를 설정할 수 있습니다. 다음은 거의 똑같은 방법으로 설정하지만 브랜치 이름 대신 특별 옵션을 지정합니다:

  • P4AutoMerge.py -p $p -u $u -c $c -b $D -m SAFE %C

  • 설명에 다음과 같은 텍스트를 입력하십시오: "Enter the branchspec you want to merge from (append -r to reverse it)" ("병합하고자하는 branchspec을 입력하십시오 (거꾸로 하려면 뒤에 -r을 붙이십시오)")

P4AutoMergeSetupGeneral.jpg

하나 이상의 변경목록을 한 번에 병합하기

기술적으로, 스크립트는 다수의 변경목록들을 한 번에 병합하는 것을 지원합니다. 그러나 이것은 권장되지 않으며 커스텀 도구의 GUI에 표시하기가 어렵습니다. 하지만 명령줄 옵션을 사용해서 이것을 컨트롤할 수는 있습니다:

Usage: P4AutoMerge.py [options]

        Desc: 브랜치로부터의 변경목록 자동 병합 지원을 위한 스크립트.

Options:
  --version             프로그램의 버전 번호를 보여주고 종료
  -h, --help            도움말 메시지를 보여주고 종료
  -p PORT, --port=PORT  사용할 P4 포트.예: p4-server:1666. 
                        기본으로 P4PORT  검색에p4 환경 사용.
  -u USER, --user=USER  사용할 P4 사용자. 
                        기본으로 P4USER 검색에p4 환경 사용.
  -c CLIENT, --client=CLIENT
                        사용할 P4 클라이언트. 
                        기본으로 P4CLIENT검색에p4 환경 사용.
  -r, --reverse         지정된 경우 branchspec을 거꾸로 함. Default = False
  -b BRANCHSPEC, --branchspec=BRANCHSPEC
                        <필수> 사용할 Branchspec.
  -m MERGETYPE, --mergetype=MERGETYPE
                        수행할 병합 타입. 유효한 옵션은 SAFE와 NULL.
                        Default = SAFE

로그인 관련 구성은 없습니다. 따라서 스크립트의 정상 작동을 위해서는, 이미 그 클라이언트에서 사용자 인증이 된 상태여야 합니다.

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback