본문으로 건너뛰기

Git

Rudel은 Pitmaster을 통해 PHP 기반 Git 작업을 수행합니다. 호스트 git 바이너리는 필요하지 않습니다. 원격 저장소에는 HTTP(S) 또는 SSH을 통해 연결합니다.

각 샌드박스에는 하나의 브랜치 이름 rudel/{sandbox-id}이 있으며, 아래의 모든 Git 워크플로우에서 사용됩니다.

원격 저장소를 새 샌드박스로 복제

셸
wp rudel create --name=feature-x --git=https://example.test/my-theme.git

Rudel은 샌드박스를 만들고, 샌드박스 디렉터리 안의 themes/my-theme로 원격 저장소를 복제합니다(디렉터리 이름은 저장소 이름입니다). 기본 브랜치에서 rudel/{id} 브랜치를 만들고 체크아웃합니다. --type=plugin을 지정하면 대신 plugins/my-theme에 체크아웃합니다. 원격 저장소, 디렉터리 및 기준 브랜치는 이후 푸시를 위해 샌드박스에 저장됩니다. 복제에 실패해도 샌드박스는 유지되며 명령이 경고를 출력합니다.

체크아웃은 wp rudel push의 작업 사본입니다. 현재 릴리스에서는 샌드박스가 이를 제공하지 않습니다(이슈 #11):

  • 샌드박스는 --theme으로 선택한 테마 또는 호스트의 활성 테마를 제공합니다. 샌드박스 생성 시 호스트에서 복사됩니다. --theme은 호스트에 설치된 테마를 지정해야 합니다. 따라서 저장소 이름이 해당 슬러그와 일치하고 복제된 내용이 복사된 테마 디렉터리에 기록되는 경우에만 체크아웃이 제공됩니다.
  • 플러그인은 항상 호스트의 플러그인 디렉터리에서 로드되므로 --type=plugin 체크아웃은 실행되지 않습니다.

연결된 작업 트리

테마 디렉터리가 Git 저장소인 샌드박스를 복제하면 Rudel은 파일을 복사하는 대신 새 샌드박스의 연결된 작업 트리를 만듭니다:

셸
wp rudel create --name=feature-y --clone-from=feature-x-3be7

작업 트리는 rudel/{new-id} 브랜치에 있습니다. Rudel은 샌드박스 ID, 콘텐츠 유형 및 테마 슬러그를 바탕으로 명시적인 작업 트리 이름을 지정해 새 샌드박스의 메타데이터에 기록합니다. 따라서 같은 테마 슬러그를 사용하는 두 샌드박스가 충돌하지 않습니다. 샌드박스를 제거하면 작업 트리와 해당 브랜치도 삭제됩니다.

wp rudel cleanup --merged은 이러한 연결된 작업 트리만 대상으로 합니다. 정리를 참고하세요.

변경 사항 푸시

셸
wp rudel push feature-x-3be7 --message="Update checkout template"

push은 체크아웃의 모든 변경 사항을 커밋하고 origin에 rudel/{id} 브랜치를 푸시합니다. 변경 사항이 없으면 No changes to push.을 반환합니다.

  • 저장된 원격 저장소가 없으면 --git=<remote>이 원격 저장소를 설정하며, 첫 푸시가 성공하면 저장됩니다.
  • --dir=<dir>은 샌드박스 디렉터리를 기준으로 한 상대 디렉터리를 지정합니다(예: themes/my-theme). 기본값은 --git에 저장된 디렉터리이며, 저장된 값이 없으면 샌드박스 디렉터리 전체입니다.
  • --message의 기본값은 Update from Rudel sandbox입니다.

PHP에서는 Rudel::push( $id, $remote_url, $message, $subdir )도 동일하게 작동하며 rudel_*_environment_push 훅을 실행합니다.

커밋 작성자 정보

체크아웃의 Git 설정에 user.name 또는 user.email이 없으면 Rudel이 Rudel 및 rudel@localhost를 기록합니다. 다른 값을 사용하려면 wp-config.php에서 RUDEL_GIT_AUTHOR_NAME 및 RUDEL_GIT_AUTHOR_EMAIL을 정의하세요.