diff --git a/README.md b/README.md
index 9f3f1f9..bacf56b 100644
--- a/README.md
+++ b/README.md
@@ -139,17 +139,18 @@ jobs:
### Inputs
-| name | value | default | description |
-|------------------| ----- | ------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| github_token | string | `${{ github.token }}` | [GITHUB_TOKEN](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#using-the-github_token-in-a-workflow)
or a repo scoped
[Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). |
-| ssh | boolean | false | Determines if ssh/ Deploy Keys is used. |
-| branch | string | (default) | Destination branch to push changes.
Can be passed in using `${{ github.ref }}`. |
-| force | boolean | false | Determines if force push is used. |
-| force_with_lease | boolean | false | Determines if force-with-lease push is used. Please specify the corresponding branch inside `ref` section of the checkout action e.g. `ref: ${{ github.head_ref }}`. |
-| atomic | boolean | true | Determines if [atomic](https://git-scm.com/docs/git-push#Documentation/git-push.txt---no-atomic) push is used. |
-| tags | boolean | false | Determines if `--tags` is used. |
-| directory | string | '.' | Directory to change to before pushing. |
-| repository | string | '' | Repository name.
Default or empty repository name represents
current github repository.
If you want to push to other repository,
you should make a [personal access token](https://github.com/settings/tokens)
and use it as the `github_token` input. |
+| name | value | default | description |
+|--------------------|---------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| github_token | string | `${{ github.token }}` | [GITHUB_TOKEN](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#using-the-github_token-in-a-workflow)
or a repo scoped
[Personal Access Token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token). |
+| ssh | boolean | false | Determines if ssh/ Deploy Keys is used. |
+| branch | string | (default) | Destination branch to push changes.
Can be passed in using `${{ github.ref }}`. |
+| force | boolean | false | Determines if force push is used. |
+| force_with_lease | boolean | false | Determines if force-with-lease push is used. Please specify the corresponding branch inside `ref` section of the checkout action e.g. `ref: ${{ github.head_ref }}`. |
+| atomic | boolean | true | Determines if [atomic](https://git-scm.com/docs/git-push#Documentation/git-push.txt---no-atomic) push is used. |
+| push_to_submodules | string | 'on-demand' | Determines if --recurse-submodules= is used. The value defines the used strategy. |
+| tags | boolean | false | Determines if `--tags` is used. |
+| directory | string | '.' | Directory to change to before pushing. |
+| repository | string | '' | Repository name.
Default or empty repository name represents
current github repository.
If you want to push to other repository,
you should make a [personal access token](https://github.com/settings/tokens)
and use it as the `github_token` input. |
## Troubleshooting
diff --git a/action.yml b/action.yml
index 1b54480..2d20c6f 100644
--- a/action.yml
+++ b/action.yml
@@ -32,6 +32,10 @@ inputs:
atomic:
description: 'Determines if atomic push is used, default true'
required: false
+ push_to_submodules:
+ description: 'Determines if --recurse-submodules= is used. The value defines the used strategy'
+ required: false
+ default: 'on-demand'
tags:
description: 'Determines if --tags is used'
required: false
diff --git a/start.sh b/start.sh
index b7fdb8a..40f89b2 100644
--- a/start.sh
+++ b/start.sh
@@ -7,6 +7,7 @@ INPUT_FORCE_WITH_LEASE=${INPUT_FORCE_WITH_LEASE:-false}
INPUT_SSH=${INPUT_SSH:-false}
INPUT_TAGS=${INPUT_TAGS:-false}
INPUT_DIRECTORY=${INPUT_DIRECTORY:-'.'}
+INPUT_PUSH_TO_SUBMODULES=${INPUT_PUSH_TO_SUBMODULES:-''}
_ATOMIC_OPTION=''
_FORCE_OPTION=''
REPOSITORY=${INPUT_REPOSITORY:-$GITHUB_REPOSITORY}
@@ -38,6 +39,10 @@ if ${INPUT_TAGS}; then
_TAGS='--tags'
fi
+if [ -n "${INPUT_PUSH_TO_SUBMODULES}" ]; then
+ _INPUT_PUSH_TO_SUBMODULES="--recurse-submodules=${INPUT_PUSH_TO_SUBMODULES}"
+fi
+
cd ${INPUT_DIRECTORY}
if ${INPUT_SSH}; then
@@ -52,4 +57,4 @@ if ! ${INPUT_FORCE_WITH_LEASE}; then
ADDITIONAL_PARAMETERS="${remote_repo} HEAD:${INPUT_BRANCH}"
fi
-git push $ADDITIONAL_PARAMETERS $_ATOMIC_OPTION --follow-tags $_FORCE_OPTION $_TAGS;
+git push $ADDITIONAL_PARAMETERS $_INPUT_PUSH_TO_SUBMODULES $_ATOMIC_OPTION --follow-tags $_FORCE_OPTION $_TAGS;