Compare commits

...

9 Commits

Author SHA1 Message Date
Stefan Zweifel
be7095c202 Release v4.9.2 2021-03-04 17:53:06 +01:00
Stefan Zweifel
ae9ae1b5b8 Update Changelog 2021-03-02 20:21:56 +01:00
Stefan Zweifel
e944668910 Merge pull request #146 from stefanzweifel/fixes/145
Push Tags along with Commits
2021-03-02 20:20:29 +01:00
Stefan Zweifel
9bb0fd2324 Push tags by using —follow-tags and —atomic
By using —follow-tags we push all annotated tags alongside the commit to the remote repository.
In addition, we’re using —atomic. This ensures that all refs are updated.

- https://github.blog/2015-04-30-git-2-4-atomic-pushes-push-to-deploy-and-more/#atomic-pushes
- https://stackoverflow.com/a/3745250
- https://therightstuff.medium.com/the-rights-and-wrongs-of-git-push-with-tags-998667eaed8f
2021-02-26 20:17:32 +01:00
Stefan Zweifel
175c2cd836 Add failing tests 2021-02-26 19:44:37 +01:00
Stefan Zweifel
296e083b4c Tag v4.9.1 2021-02-23 21:18:33 +01:00
Stefan Zweifel
871ade1c45 Merge pull request #144 from stefanzweifel/revert-140-feature/create-new-branch-during-checkout
Revert "Feature: Create a new branch, if the given branch name doesn't exist yet"
2021-02-23 21:16:57 +01:00
Stefan Zweifel
75625df4f3 Revert "Feature: Create a new branch, if the given branch name doesn't exist yet" 2021-02-23 21:14:19 +01:00
Stefan Zweifel
3870982ac5 Improve Names of test repo folders 2021-02-23 20:08:01 +01:00
3 changed files with 78 additions and 39 deletions

View File

@@ -4,15 +4,26 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
## [Unreleased](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.9.0...HEAD)
## [Unreleased](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.9.2...HEAD)
> TBD
## [v4.9.2](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.9.1...v4.9.2) - 2021-03-04
### Fixes
- Push created annotated tags to remote by using `--follow-tags` and `--atomic` instead of just `--tags` [#146](https://github.com/stefanzweifel/git-auto-commit-action/pull/146)
## [v4.9.1](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.9.0...v4.9.1) - 2021-02-23
### Changed
- Revert changes made in v4.9.0. A branch will no longer be automatically generated. [#144](https://github.com/stefanzweifel/git-auto-commit-action/pull/144)
## [v4.9.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.8.0...v4.9.0) - 2021-02-20
### Changed
- Automatically create btanch if a branch with the given name does not exist [#140](https://github.com/stefanzweifel/git-auto-commit-action/pull/140)
- Automatically create branch if a branch with the given name does not exist [#140](https://github.com/stefanzweifel/git-auto-commit-action/pull/140)
## [v4.8.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.7.2...v4.8.0) - 2020-12-15

View File

@@ -48,28 +48,9 @@ _switch_to_branch() {
git fetch --depth=1;
fi
# If INPUT_BRANCH is empty, just run `git checkout`
if [ -z "$INPUT_BRANCH" ]
then
# shellcheck disable=SC2086
git checkout $INPUT_BRANCH;
else
# If the branch which we should checkout already exists, just
# run `git checkout $INPUT_BRANCH`
# Otherwhise create a new branch by adding the `-b` option to
# `git-checkout`
# shellcheck disable=SC2086
if [ -n "$(git branch --list $INPUT_BRANCH)" ]
then
# shellcheck disable=SC2086
git checkout $INPUT_BRANCH;
else
# shellcheck disable=SC2086
git checkout -b $INPUT_BRANCH;
fi
fi
# Switch to branch from current Workflow run
# shellcheck disable=SC2086
git checkout $INPUT_BRANCH;
}
_add_files() {
@@ -123,7 +104,7 @@ _push_to_github() {
if [ -n "$INPUT_TAGGING_MESSAGE" ]
then
echo "::debug::git push origin --tags";
git push origin --tags ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"};
git push origin --follow-tags --atomic ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"};
else
echo "::debug::git push origin";
git push origin ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"};
@@ -131,7 +112,7 @@ _push_to_github() {
else
echo "::debug::Push commit to remote branch $INPUT_BRANCH";
git push --set-upstream origin "HEAD:$INPUT_BRANCH" --tags ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"};
git push --set-upstream origin "HEAD:$INPUT_BRANCH" --follow-tags --atomic ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"};
fi
}

View File

@@ -5,9 +5,9 @@ load '../node_modules/bats-assert/load'
setup() {
# Define Paths for local repository used during tests
export FAKE_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/test_fake_local_repository"
export FAKE_REMOTE="${BATS_TEST_DIRNAME}/test_fake_remote_repository"
export FAKE_TEMP_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/test_fake_temp_local_repository"
export FAKE_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/tests_local_repository"
export FAKE_REMOTE="${BATS_TEST_DIRNAME}/tests_remote_repository"
export FAKE_TEMP_LOCAL_REPOSITORY="${BATS_TEST_DIRNAME}/tests_clone_of_remote_repository"
# Set default INPUT variables used by the GitHub Action
export INPUT_REPOSITORY="${FAKE_LOCAL_REPOSITORY}"
@@ -225,6 +225,13 @@ git_auto_commit() {
run git ls-remote --tags --refs
assert_output --partial refs/tags/v1.0.0
# Assert that the commit has been pushed with --force and
# sha values are equal on local and remote
current_sha="$(git rev-parse --verify --short master)"
remote_sha="$(git rev-parse --verify --short origin/master)"
assert_equal $current_sha $remote_sha
}
@test "It applies INPUT_PUSH_OPTIONS when pushing commit to remote" {
@@ -332,11 +339,9 @@ git_auto_commit() {
assert_line "::debug::git-fetch has not been executed"
}
@test "If INPUT_BRANCH is set and the branch does not exist it creates one" {
INPUT_BRANCH="new-branch"
run git branch
refute_line "new-branch"
@test "It pushes generated commit and tag to remote and actually updates the commit shas" {
INPUT_BRANCH=""
INPUT_TAGGING_MESSAGE="v2.0.0"
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt
@@ -344,12 +349,54 @@ git_auto_commit() {
assert_success
assert_line "INPUT_BRANCH value: new-branch"
assert_line --partial "::debug::Push commit to remote branch new-branch"
assert_line "INPUT_TAGGING_MESSAGE: v2.0.0"
assert_line "::debug::Create tag v2.0.0"
assert_line "::debug::git push origin --tags"
# Assert that branch "new-branch" was updated on remote
current_sha="$(git rev-parse --verify --short new-branch)"
remote_sha="$(git rev-parse --verify --short origin/new-branch)"
# Assert a tag v2.0.0 has been created
run git tag
assert_output v2.0.0
# Assert tag v2.0.0 has been pushed to remote
run git ls-remote --tags --refs
assert_output --partial refs/tags/v2.0.0
# Assert that branch "master" was updated on remote
current_sha="$(git rev-parse --verify --short master)"
remote_sha="$(git rev-parse --verify --short origin/master)"
assert_equal $current_sha $remote_sha
}
@test "It pushes generated commit and tag to remote branch and updates commit sha" {
# Create "a-new-branch"-branch and then immediately switch back to master
git checkout -b a-new-branch
git checkout master
INPUT_BRANCH="a-new-branch"
INPUT_TAGGING_MESSAGE="v2.0.0"
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt
run git_auto_commit
assert_success
assert_line "INPUT_TAGGING_MESSAGE: v2.0.0"
assert_line "::debug::Create tag v2.0.0"
assert_line "::debug::Push commit to remote branch a-new-branch"
# Assert a tag v2.0.0 has been created
run git tag
assert_output v2.0.0
# Assert tag v2.0.0 has been pushed to remote
run git ls-remote --tags --refs
assert_output --partial refs/tags/v2.0.0
# Assert that branch "a-new-branch" was updated on remote
current_sha="$(git rev-parse --verify --short a-new-branch)"
remote_sha="$(git rev-parse --verify --short origin/a-new-branch)"
assert_equal $current_sha $remote_sha
}