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을 정의하세요.