feat: always initialize git repository

This fixes issues where alternative tools that don't trigger the init via sshcommand - such as git-http-backend - are not able to setup applications correctly.

Note that those apps could always manually trigger git:initialize if desired, but if the app already exists, then this should already _just work_ without that extra initialization.
This commit is contained in:
Jose Diaz-Gonzalez
2020-09-23 19:20:26 -04:00
parent 01bd69100c
commit 36215828f1
3 changed files with 22 additions and 3 deletions

View File

@@ -172,9 +172,14 @@ git_build() {
local REF="$REV"
else
DOKKU_DEPLOY_BRANCH="$(fn-git-deploy-branch "$APP")"
REF=$(<"$DOKKU_ROOT/$APP/refs/heads/$DOKKU_DEPLOY_BRANCH")
if [[ -f "$DOKKU_ROOT/$APP/refs/heads/$DOKKU_DEPLOY_BRANCH" ]]; then
REF=$(<"$DOKKU_ROOT/$APP/refs/heads/$DOKKU_DEPLOY_BRANCH")
fi
fi
if [[ -z "$REF" ]]; then
return
fi
# shellcheck disable=SC2086
git_build_app_repo $APP $REF
}

14
plugins/git/post-create Executable file
View File

@@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_AVAILABLE_PATH/git/functions"
trigger-git-post-create() {
declare desc="initializes an app with the correct git repository structure"
declare trigger="post-create"
declare APP="$1"
fn-git-create-hook "$APP"
}
trigger-git-post-create "$@"

View File

@@ -52,7 +52,7 @@ teardown() {
run /bin/bash -c "test -d $DOKKU_ROOT/$TEST_APP/refs"
echo "output: $output"
echo "status: $status"
assert_failure
assert_success
run /bin/bash -c "dokku git:initialize $TEST_APP"
echo "output: $output"
@@ -69,7 +69,7 @@ teardown() {
run /bin/bash -c "test -d $DOKKU_ROOT/$TEST_APP/refs"
echo "output: $output"
echo "status: $status"
assert_failure
assert_success
deploy_app