diff --git a/README.md b/README.md index 9453a67..87c6601 100644 --- a/README.md +++ b/README.md @@ -294,6 +294,22 @@ When you use `ACTIONS_DEPLOY_KEY`, set your private key to the repository which Be careful, `GITHUB_TOKEN` has no permission to access to external repositories. +### ⭐️ Force orphan + +From `v2.6.0`, we can set the `forceOrphan: true` option. +This allows you to make your publish branch with only the latest commit. + +```yaml +- name: Deploy + uses: peaceiris/actions-gh-pages@v2.6.0 + env: + ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }} + PUBLISH_BRANCH: gh-pages + PUBLISH_DIR: ./public + with: + forceOrphan: true +``` + ### ⭐️ Script mode From `v2.5.0`, we can run this action as a shell script. diff --git a/action.yml b/action.yml index 23be40f..9a64dd6 100644 --- a/action.yml +++ b/action.yml @@ -16,3 +16,7 @@ inputs: description: 'If existing files in the publish branch should be not removed before deploying' required: false default: 'false' + forceOrphan: + description: 'Keep only the latest commit on a GitHub Pages branch' + required: false + default: 'false' diff --git a/entrypoint.sh b/entrypoint.sh index d72e63d..9608097 100755 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -77,7 +77,13 @@ fi remote_branch="${PUBLISH_BRANCH}" local_dir="${HOME}/ghpages_${RANDOM}" -if git clone --depth=1 --single-branch --branch "${remote_branch}" "${remote_repo}" "${local_dir}"; then + +if [[ "${INPUT_FORCEORPHAN}" == "true" ]]; then + print_info "force ophan: ${INPUT_FORCEORPHAN}" + cd "${PUBLISH_DIR}" + git init + git checkout --orphan "${remote_branch}" +elif git clone --depth=1 --single-branch --branch "${remote_branch}" "${remote_repo}" "${local_dir}"; then cd "${local_dir}" if [[ ${INPUT_KEEPFILES} == "true" ]]; then @@ -110,5 +116,10 @@ else git commit --allow-empty -m "${COMMIT_MESSAGE}" fi -git push origin "${remote_branch}" +if [[ ${INPUT_FORCEORPHAN} == "true" ]]; then + git push origin --force "${remote_branch}" +else + git push origin "${remote_branch}" +fi + print_info "${GITHUB_SHA} was successfully deployed"