Compare commits

...

252 Commits
v3 ... v4.9.1

Author SHA1 Message Date
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
Stefan Zweifel
268ec0c240 Release v4.9.0 2021-02-20 20:34:30 +01:00
Stefan Zweifel
9abc4c41e5 Merge pull request #140 from stefanzweifel/feature/create-new-branch-during-checkout
Feature: Create a new branch, if the given branch name doesn't exist yet
2021-02-20 20:29:23 +01:00
Stefan Zweifel
1aee6e6b46 Make Linter Happy 2021-02-07 16:14:11 +01:00
Stefan Zweifel
94941cff88 Cleanup Code 2021-02-07 16:09:59 +01:00
Stefan Zweifel
7507738fca Use git branch --list 2021-02-07 16:07:43 +01:00
Stefan Zweifel
53438d58ce Create new branch if NAME is given 2021-02-07 15:44:48 +01:00
Stefan Zweifel
8056699617 Add Testcase 2021-02-07 15:44:12 +01:00
Stefan Zweifel
520c63c171 Add Link to Article 2021-02-06 19:11:12 +01:00
Stefan Zweifel
a6006229e0 Merge pull request #138 from stefanzweifel/test-rm-is-tracked
Add Test to verify that removed files are picked up by the Action
2021-01-18 20:34:44 +01:00
Stefan Zweifel
40b55695d1 Add Test 2021-01-18 20:31:50 +01:00
Stefan Zweifel
8f33b6cc31 Merge pull request #136 from palmerabollo/patch-1
docs: minor typo
2021-01-15 15:21:34 +01:00
Guido García
c4ab3ecb7e docs: minor typo 2021-01-15 15:19:06 +01:00
Stefan Zweifel
350754fe3a Update LICENSE 2021-01-08 17:31:07 +01:00
Stefan Zweifel
75802d269e Release v4.8.0 2020-12-15 20:53:30 +01:00
Stefan Zweifel
5b85132a3c Merge pull request #131 from stefanzweifel/git-fetch-depth
Set --depth on git-fetch and make call to git-fetch optional
2020-12-15 20:48:50 +01:00
Stefan Zweifel
292ae30da6 Add skip_fetch to README 2020-12-15 20:45:42 +01:00
Stefan Zweifel
b53a2f8baf Set --depth to 1 2020-12-15 20:30:42 +01:00
Stefan Zweifel
a9021d5359 Add skip_fetch input option
This new option will allow users to skip the execution of `git fetch` if it has a negative impact in their workflows.

In a future PR I will probably remove the call to git-fetch interely. It was added in #108 in relation to a problem with slashes in branch names. That problem wasn't properly fixed though.
2020-12-13 09:31:16 +01:00
Stefan Zweifel
fafea853e8 Set depth on git-fetch 2020-12-13 09:22:38 +01:00
Stefan Zweifel
6576a06e26 Merge pull request #128 from stefanzweifel/refactor/better-integration-tests
Rewrite Test Suite to no longer mock git
2020-11-25 21:11:30 +01:00
--global
b104287145 Update README 2020-11-25 21:06:22 +01:00
--global
b8b8026fe4 Improve Assertions 2020-11-25 21:04:32 +01:00
--global
fae0e424e9 Remove old Integration Tests Workflow 2020-11-25 20:47:28 +01:00
--global
a1604ef1d5 Update .gitignore 2020-11-25 20:31:12 +01:00
--global
152b8c00c6 Move git user config 2020-11-25 20:28:15 +01:00
--global
8edcd8b718 Debug failed Workflow run 2020-11-25 20:26:43 +01:00
Stefan Zweifel
8f9132651a Update Order how git user is configured 2020-11-25 20:23:17 +01:00
Stefan Zweifel
6c72ab7799 Use git config --global to setup repo 2020-11-25 20:21:26 +01:00
Stefan Zweifel
983b799941 Output Commit User, Author and Message variables 2020-11-25 20:19:39 +01:00
Stefan Zweifel
bee2ad60b0 Rewrite Tests 2020-11-25 20:18:56 +01:00
Stefan Zweifel
ac4585b8d5 Update Tests Workflow 2020-11-25 20:18:52 +01:00
Stefan Zweifel
4e7742676e Install bats-assert and bats-support dependencies 2020-11-25 20:18:43 +01:00
Stefan Zweifel
2e61cc5f41 Add "Used By" Badge 2020-11-02 20:14:07 +01:00
Stefan Zweifel
021e855056 Improve Wording in the Intro of the README 2020-10-28 20:27:07 +01:00
Stefan Zweifel
7cec9acee6 Improve Example 2020-10-28 20:26:58 +01:00
Stefan Zweifel
bbd291750d Release v4.7.2 2020-10-24 11:41:07 +02:00
Stefan Zweifel
114a5e6044 Merge pull request #122 from stefanzweifel/revert-113-pr/complex-branches-2
Revert "Fix checking out branch names with / chars"
2020-10-24 11:36:23 +02:00
Stefan Zweifel
4a75a2e723 Disable shellsheck for git-checkout 2020-10-24 11:33:52 +02:00
Stefan Zweifel
1e826be61c Revert "Fix checking out branch names with / chars" 2020-10-24 11:28:52 +02:00
Stefan Zweifel
4bab898d25 Create Remote Branch before running Action 2020-10-22 19:52:43 +02:00
Stefan Zweifel
45872c3c23 Fix Typo in CHANGELOG 2020-10-22 07:38:33 +02:00
Stefan Zweifel
9b7c21583c Release v4.7.1 2020-10-22 07:37:21 +02:00
Stefan Zweifel
4cc90c7784 Fix Linter Errors 2020-10-22 07:37:16 +02:00
Stefan Zweifel
367938329d Merge pull request #120 from stefanzweifel/revert-115-feature/checkout-options
Revert "Feature: Checkout Options"
2020-10-22 07:35:11 +02:00
Stefan Zweifel
25cac34d8d Revert "Feature: Checkout Options" 2020-10-22 07:33:38 +02:00
Stefan Zweifel
30cd17bff0 Merge branch 'master' of github.com:stefanzweifel/git-auto-commit-action 2020-10-21 20:45:48 +02:00
Stefan Zweifel
8f5b58c89c Tag v4.7.0 2020-10-21 20:45:37 +02:00
Stefan Zweifel
65928d2898 Merge pull request #118 from stefanzweifel/tests-on-github-actions
Test Action through GitHub Actions ♾️
2020-10-17 14:59:06 +02:00
Stefan Zweifel
6b4ef1444c Add Badge 2020-10-17 14:52:58 +02:00
Stefan Zweifel
55291ea168 Rename Step 2020-10-17 14:51:58 +02:00
Stefan Zweifel
2b5c86365b Delete Remote Branch 2020-10-17 14:46:50 +02:00
Stefan Zweifel
ff28943460 Add Integration Tests 2020-10-17 14:29:42 +02:00
Stefan Zweifel
e3610414be Update README 2020-10-17 14:15:18 +02:00
Stefan Zweifel
042c3265d5 Update README 2020-10-17 14:14:28 +02:00
Stefan Zweifel
90cedba8bc Upgrade bats to v1.2.1 2020-10-16 19:26:44 +02:00
Stefan Zweifel
b833fe0e9d Update Code Example for pull_request_target trigger 2020-10-16 09:18:41 +02:00
Stefan Zweifel
653ea719ea Update Changelog 2020-10-15 21:15:41 +02:00
Stefan Zweifel
47c724214a Merge pull request #115 from stefanzweifel/feature/checkout-options
Feature: Checkout Options
2020-10-15 20:36:06 +02:00
Stefan Zweifel
1ba48c6d7f Fix Linter Errors in entrypoint.sh 2020-10-15 20:30:26 +02:00
Stefan Zweifel
b9e4cea0ef Disable Markdown Linter 2020-10-15 20:30:19 +02:00
Stefan Zweifel
cfdb7e609e Add checkout_options to README 2020-10-15 20:26:03 +02:00
Stefan Zweifel
849613a3ad Add test to cover checkout-options 2020-10-15 20:23:04 +02:00
Stefan Zweifel
0ee9fb7263 Add checkout_options 2020-10-15 20:21:08 +02:00
Stefan Zweifel
6456430b6b Ignore shellchecks 2020-10-15 20:15:31 +02:00
Stefan Zweifel
7f67b0b49b Rename Test 2020-10-14 20:28:01 +02:00
Stefan Zweifel
8700c3bc1c Merge pull request #113 from docwhat/pr/complex-branches-2
Fix checking out branch names with / chars
2020-10-12 16:34:53 +02:00
Stefan Zweifel
872d72f1ae Update Tests 2020-10-12 16:33:12 +02:00
Christian Höltje
f905f00706 Fix checking out branch names with / chars
If git can't automatically figure out if the argument is a branch or
a path, it will need to be told explicitly by using `--`:

    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'

Fixes: #106
2020-10-12 10:17:25 -04:00
Stefan Zweifel
9c1e5d1c6a Merge pull request #111 from francescobianco/patch-1
Update README.md
2020-10-12 08:18:24 +02:00
Francesco Bianco
18a94e4f78 Update README.md 2020-10-11 22:35:28 +02:00
Stefan Zweifel
44aeb24da7 Fix Typo in Changelog 2020-10-11 20:36:41 +02:00
Stefan Zweifel
5c9bfe7477 Tag v4.6.0 2020-10-11 20:34:17 +02:00
Stefan Zweifel
814219db13 Merge pull request #110 from Aebrathia/patch-1
Make commit_message optional #103
2020-10-11 20:16:25 +02:00
Stefan Zweifel
a204abce16 Update action.yml 2020-10-11 20:14:15 +02:00
Andréa Maugars
fc18df1417 Make commit_message optional 2020-10-11 15:32:07 +02:00
Stefan Zweifel
8f243393e7 Link Tests Badge 2020-10-11 11:47:09 +02:00
Stefan Zweifel
fc5b9bf8cf Merge pull request #109 from stefanzweifel/improve-testsuite
Expand existing BATS Test Suite to cover every feature
2020-10-11 11:44:48 +02:00
Stefan Zweifel
a818c89e49 Add can-work-with-empty-branch-name-and-tags test 2020-10-11 11:24:53 +02:00
Stefan Zweifel
8bf1b5695a Add can-work-with-empty-branch-name test 2020-10-11 11:21:16 +02:00
Stefan Zweifel
ea30556d53 Add can-checkout-different-branch test 2020-10-11 11:21:06 +02:00
Stefan Zweifel
cd7c7f1a8a Add git-push-options-are-applied test 2020-10-11 11:20:51 +02:00
Stefan Zweifel
4e16840be4 Add can-create-tag test 2020-10-11 11:20:12 +02:00
Stefan Zweifel
b0295737db Add commit-user-and-author-settings-are-applied test 2020-10-11 11:20:01 +02:00
Stefan Zweifel
0d6d4a4b22 Add git-commit-options-are-applied 2020-10-11 11:19:49 +02:00
Stefan Zweifel
091b400419 Add git-add-file-pattern-is-applied test 2020-10-11 11:19:38 +02:00
Stefan Zweifel
f7e362220d WIP 2020-10-11 11:19:22 +02:00
Stefan Zweifel
df97d6fbd8 Make testing a single test easier 2020-10-11 10:40:59 +02:00
Stefan Zweifel
4f0fc14d0c Add shellmock_clean to setup method 2020-10-11 10:40:48 +02:00
Stefan Zweifel
cdf7b74cbf Fix remaining TODO test 2020-10-11 10:40:40 +02:00
Stefan Zweifel
862aa0e1e1 Update Changelog 2020-10-10 19:22:22 +02:00
Stefan Zweifel
a9d1ac4f06 Merge pull request #108 from stefanzweifel/fetch-repo-before-checkout
Better support branches with special characters in them
2020-10-10 19:19:48 +02:00
Stefan Zweifel
ebf8a401ee Fix Tests 2020-10-10 18:06:55 +02:00
Stefan Zweifel
4b8393320b Fetch Repo before git checkout 2020-10-10 17:54:11 +02:00
Stefan Zweifel
60c96d8c0d Merge pull request #107 from docwhat/pr/superlinter
Use SuperLinter instead of only shellcheck
2020-10-10 16:18:15 +02:00
Stefan Zweifel
16d2bf88fd Remove Comments from Workflow 2020-10-10 16:17:58 +02:00
Christian Holtje
54d78531cc Use SuperLinter instead of only shellcheck 2020-10-10 01:12:48 -04:00
Stefan Zweifel
f922a52bf1 Use "main" as branch name in example 2020-10-06 09:13:19 +02:00
Stefan Zweifel
0bf17c328a Fix Example using changes_detected output 2020-10-06 09:11:36 +02:00
Stefan Zweifel
240b9ad1fd Add Example on how to use Outputs 2020-10-05 19:47:23 +02:00
Stefan Zweifel
57054d8e7e Merge pull request #101 from OskarStark/patch-1
Typo
2020-09-23 15:59:12 +02:00
Oskar Stark
613ea337db Revert 2020-09-23 12:43:44 +02:00
Oskar Stark
686020fb2a Typo 2020-09-23 12:43:18 +02:00
Stefan Zweifel
90b474f549 Remove unused Steps in GitHub Workflow 2020-09-13 14:21:10 +02:00
Stefan Zweifel
8c26230a11 Update git config if not set yet 2020-09-13 14:18:41 +02:00
Stefan Zweifel
961d68003e Add yarn.lock to .gitignore 2020-09-13 14:15:28 +02:00
Stefan Zweifel
cbc3d50cea Add Badge 2020-09-13 14:11:23 +02:00
Stefan Zweifel
9e4e2e76fa Add very basic test suite with bats and shellmock (#100)
* Add bats
* Write commits tests
* Add Workflow
* Add .gitignore
* Update Test Suite
* Disable test
* Disable failing test for now
2020-09-13 14:07:14 +02:00
Stefan Zweifel
09aaf2d8fa Update Changelog 2020-09-11 11:22:22 +02:00
Stefan Zweifel
c7ad0bdb15 Release v4.5.1 2020-09-11 11:20:33 +02:00
Stefan Zweifel
9cb711878d Merge pull request #98 from stefanzweifel/revert-95-master
Revert "Creating orphan branch"
2020-09-11 11:19:07 +02:00
Stefan Zweifel
b3fc6f8a17 Revert "Creating orphan branch" 2020-09-11 11:18:24 +02:00
Stefan Zweifel
d51384f592 Revert "Update Workflow"
This reverts commit 4e7ddef1e0.
2020-09-10 19:54:30 +02:00
Stefan Zweifel
4e7ddef1e0 Update Workflow 2020-09-10 19:51:32 +02:00
Stefan Zweifel
cc7755497c Release v4.5.0 2020-09-10 19:48:26 +02:00
Stefan Zweifel
5c3c72f20e Merge pull request #95 from StrongMonkey/master
Creating orphan branch
2020-09-10 19:44:31 +02:00
Daishan
505389d146 Creating orphan branch 2020-09-01 18:12:58 -07:00
Stefan Zweifel
303ce37181 Merge pull request #93 from stefanzweifel/add-note-about-forks
Update README with instructions for forks
2020-08-22 14:45:20 +02:00
Stefan Zweifel
13efc066dd Small little improvements 2020-08-22 14:42:29 +02:00
Stefan Zweifel
3c204cdee3 Update README.md 2020-08-22 14:21:01 +02:00
Stefan Zweifel
0429047166 Update README with instructions for forks
GitHub recently introduced ways for Actions to run on forks.

This update now finally allows repository maintainers to write Workflows to run code linters and fixers which can also work on the forks.
2020-08-22 14:13:11 +02:00
Stefan Zweifel
09d3315401 Update Versioning Workflow 2020-08-16 20:05:44 +02:00
Stefan Zweifel
1f4914882d Release v4.4.1 2020-08-16 20:03:54 +02:00
Stefan Zweifel
b5320678c1 Merge pull request #91 from HarrisonGrodin/patch-1
Only check status of files matching file_pattern
2020-08-16 19:31:45 +02:00
Harrison Grodin
01ffd8c6f6 Only check status of files matching file_pattern 2020-08-15 22:11:45 -04:00
Stefan Zweifel
5222c758dd Add FUNDING.yml 2020-07-29 13:22:07 +02:00
Stefan Zweifel
bbcb72b1e9 Update README 2020-07-26 12:53:22 +02:00
Stefan Zweifel
142eb9509a Update README 2020-07-24 21:11:32 +02:00
Stefan Zweifel
0233fee872 Update Protected Branch Section in README 2020-07-24 20:59:16 +02:00
Stefan Zweifel
808edcd96b Add links to pathspec documentation 2020-07-24 20:44:56 +02:00
Stefan Zweifel
1b1d53f462 Move Inputs and Outputs 2020-07-24 20:24:23 +02:00
Stefan Zweifel
ee93725e66 Merge pull request #86 from TGTGamer/master
Docs: #85 Add small information about command line options
2020-07-18 13:50:16 +02:00
Jonathan S
36304edfd2 Update README.md 2020-07-18 12:42:58 +01:00
Stefan Zweifel
ff97e958aa Update README.md 2020-07-16 11:03:50 +02:00
Stefan Zweifel
90282bf5e2 Release v4.4.0 2020-06-26 21:07:28 +02:00
Stefan Zweifel
c9eb2132b2 Merge pull request #84 from stefanzweifel/feature/skip-dirty-check
Add a "Skip Dirty Check" Option
2020-06-26 21:02:58 +02:00
Stefan Zweifel
c8ded2885e Simplify IF Condition 2020-06-26 21:00:48 +02:00
Stefan Zweifel
f120678ed1 WIP 2020-06-25 20:40:31 +02:00
Stefan Zweifel
4183594932 WIP 2020-06-25 20:38:28 +02:00
Stefan Zweifel
49e28abb3f WIP 2020-06-25 20:31:48 +02:00
Stefan Zweifel
4ebfe28af0 Add skip_dirty_check option 2020-06-25 20:18:20 +02:00
Stefan Zweifel
984a26d893 Update link to versioning info in README 2020-05-17 10:20:34 +02:00
Stefan Zweifel
3804c79d2e Add Versioning GitHub Actions 2020-05-17 10:08:37 +02:00
Stefan Zweifel
69a12041a1 Release v4.3.0 2020-05-16 13:47:17 +02:00
Stefan Zweifel
91b7d20ead Merge pull request #78 from stefanzweifel/feature/push-options
Feature: Push Options
2020-05-16 13:30:24 +02:00
Stefan Zweifel
044b6b777c Fix Typo 2020-05-16 13:26:59 +02:00
Stefan Zweifel
9aab2f8a5c Add example for protected branches 2020-05-16 13:22:34 +02:00
Stefan Zweifel
0280d2ccee Add push_options to README 2020-05-16 13:17:00 +02:00
Stefan Zweifel
b0b5ed34dd Update entrypoint to handle push_options 2020-05-16 11:42:40 +02:00
Stefan Zweifel
ae38c94802 Add push_options to action.yml 2020-05-16 11:42:24 +02:00
Stefan Zweifel
3aae7bb63f Remove continous-deployment.yml 2020-05-16 11:24:57 +02:00
Stefan Zweifel
c180c695f2 Release v4.2.0 2020-05-10 13:16:25 +02:00
Stefan Zweifel
c1a70c9013 Update Changelog 2020-05-10 13:12:24 +02:00
Stefan Zweifel
02c4f2cf78 Merge pull request #73 from spawnia/restructure-readme
Bundle limitations and gotchas together in the README.md
2020-05-10 13:11:32 +02:00
Stefan Zweifel
3c687aa8ba Replace head_ref with branch name example 2020-05-10 13:09:18 +02:00
spawnia
a69eabaead clarify branch option 2020-05-10 12:55:07 +02:00
spawnia
9f2c45c9eb Remove unneeded hints to re-specify the default branch 2020-05-10 12:51:21 +02:00
spawnia
5bf88dc2fd Merge branch 'master' into restructure-readme 2020-05-10 12:48:11 +02:00
Stefan Zweifel
fd2aab7c5b Merge pull request #75 from stefanzweifel/use-head-ref-as-default-value
Use github.head_ref as branch default value
2020-05-10 12:31:26 +02:00
Stefan Zweifel
f342c95aa2 Use github.head_ref as branch default value 2020-05-09 12:44:07 +02:00
Benedikt Franke
1157d7bbe9 Shorten 2020-05-06 00:22:05 +02:00
Benedikt Franke
58b79711d8 Add example 2020-05-06 00:21:35 +02:00
Benedikt Franke
f5f76eb1f4 Consolidate more 2020-05-06 00:00:33 +02:00
Benedikt Franke
5513d18f64 Bundle limitations and gotchas together in the README.md 2020-05-05 23:54:32 +02:00
Stefan Zweifel
6ef5688e81 Update bug_report.md 2020-05-01 12:56:39 +02:00
Stefan Zweifel
e02ededdeb Update README with instructions and limitations
Closes #69
2020-05-01 12:56:23 +02:00
Stefan Zweifel
2f5e73df85 Release v4.1.6 2020-04-28 13:28:19 +02:00
Stefan Zweifel
cc16347545 Merge pull request #68 from stefanzweifel/fix-67
Inline User Configuration when creating a Tag
2020-04-28 13:27:03 +02:00
Stefan Zweifel
1ee136f439 Inline user config with tag command 2020-04-28 13:12:43 +02:00
Stefan Zweifel
7fdc480651 Update README.md 2020-04-24 10:14:37 +02:00
Stefan Zweifel
394681d465 Release v4.1.5 2020-04-23 20:46:50 +02:00
Stefan Zweifel
a261484cc8 Update file_pattern Example in README 2020-04-23 20:46:41 +02:00
Stefan Zweifel
43ed630979 Merge pull request #64 from stefanzweifel/fix-61
Fix Issue with Commit Options
2020-04-23 20:35:56 +02:00
Stefan Zweifel
ee9d717e46 Merge branch 'master' into fix-61
# Conflicts:
#	entrypoint.sh
2020-04-23 20:20:10 +02:00
Stefan Zweifel
68b94ecdf3 Merge pull request #65 from cristianpb/master
 Allow to add multiple files
2020-04-23 16:20:11 +02:00
cristianpb
2b0a9bca02 Allow to add multiple files 2020-04-23 15:55:10 +02:00
Stefan Zweifel
13c9c82cae Merge pull request #63 from stefanzweifel/revert-62-revert-59-no-override-global-git
Revert "Revert "Place git user configuration inline before commit""
2020-04-22 21:20:00 +02:00
Stefan Zweifel
6e0a745133 Use Array 2020-04-22 21:17:10 +02:00
Stefan Zweifel
88ddd5fba5 WIP 2020-04-22 21:04:17 +02:00
Stefan Zweifel
2dec151b5c WIP 2020-04-22 20:49:36 +02:00
Stefan Zweifel
1ba0b8765f WIP 2020-04-22 20:43:52 +02:00
Stefan Zweifel
f278d451d8 Revert hard coded options 2020-04-22 20:39:17 +02:00
Stefan Zweifel
1f6bf5e4c0 Set default value for commit_options 2020-04-22 20:39:08 +02:00
Stefan Zweifel
5dae7dbdb7 Hard Code Options 2020-04-22 20:36:26 +02:00
Stefan Zweifel
fbbf9665a8 Output git version and debugging message 2020-04-22 20:21:08 +02:00
Stefan Zweifel
e8ab63a01b Add ; in more places 2020-04-22 20:17:05 +02:00
Stefan Zweifel
fdbf836519 Split git-commit command 2020-04-22 20:07:31 +02:00
Stefan Zweifel
8f94f9b7ec Revert "Revert "Place git user configuration inline before commit"" 2020-04-22 20:04:52 +02:00
Stefan Zweifel
e6db1ef8bd Release v4.1.4 2020-04-22 12:58:51 +02:00
Stefan Zweifel
d09082150e Merge pull request #62 from stefanzweifel/revert-59-no-override-global-git
Revert "Place git user configuration inline before commit"
2020-04-22 12:56:36 +02:00
Stefan Zweifel
3e578b5696 Revert "Place git user configuration inline before commit" 2020-04-22 12:55:25 +02:00
Stefan Zweifel
c586963a3d Update README 2020-04-18 10:55:30 +02:00
Stefan Zweifel
a7342eab13 Release v4.1.3 2020-04-18 10:55:26 +02:00
Stefan Zweifel
256f31683d Add some Debug Logs 2020-04-18 10:53:20 +02:00
Stefan Zweifel
8040ba33d6 Merge pull request #59 from parndt/no-override-global-git
Place git user configuration inline before commit
2020-04-10 14:50:57 +02:00
Philip Arndt
80c7ed953f Place git user configuration inline 2020-04-10 11:38:03 +12:00
Stefan Zweifel
dd055f6225 Release v4.1.2 2020-04-03 09:19:39 +02:00
Stefan Zweifel
55734408b7 Merge pull request #57 from wxt2005/master
Remove unnecessary escape
2020-04-03 09:10:34 +02:00
Botao
d317154f77 Remove unnecessary escape 2020-04-03 13:21:53 +08:00
Stefan Zweifel
36489f4cb5 Merge pull request #56 from localheinz/patch-1
Fix: Typo
2020-03-17 15:44:10 +01:00
Andreas Möller
2530046e72 Fix: Typo 2020-03-17 13:44:47 +01:00
Stefan Zweifel
172c2a2fc3 Update CD Workflow 2020-03-14 13:39:33 +01:00
Stefan Zweifel
480e111bf8 Release v4.1.1 2020-03-14 13:37:49 +01:00
Stefan Zweifel
7659782c71 Merge pull request #54 from stefanzweifel/hotfix/optional-branch-push
Fix: Push branch to repository if no branch name is given and no tagging message is set
2020-03-14 13:34:39 +01:00
Stefan Zweifel
026f88c27c Fix typo in message 2020-03-14 13:32:10 +01:00
Stefan Zweifel
f73d11d461 Revert changes 2020-03-14 13:21:42 +01:00
Stefan Zweifel
2b6b90e8f1 Test shorthand 2020-03-14 13:20:32 +01:00
Stefan Zweifel
e1770ec52b Only add --tags option if tagging message is set 2020-03-14 13:13:34 +01:00
Stefan Zweifel
0453bb1c25 Temp disable push of tags 2020-03-14 13:11:13 +01:00
Stefan Zweifel
da55e4a0cf Add echo statements for easier debugging 2020-03-14 13:09:53 +01:00
Stefan Zweifel
b1833bd054 Merge pull request #52 from localheinz/fix/typo
Fix: Typo
2020-03-13 17:02:58 +01:00
Andreas Möller
6dfda22dd6 Fix: Typo 2020-03-13 12:35:11 +01:00
Stefan Zweifel
94c72aa7c5 Update Changelog and Readme for v4.1.0 2020-03-05 20:55:10 +01:00
Stefan Zweifel
87526a8aa1 Merge pull request #50 from stefanzweifel/feature/tag-commit
Feature: Tag commit created by the Action
2020-03-05 20:52:29 +01:00
Stefan Zweifel
844c808726 Echo out the tagging message 2020-03-05 20:48:15 +01:00
Stefan Zweifel
ce08dda6b3 Update Wording 2020-03-05 20:48:00 +01:00
Stefan Zweifel
0ad4c8ce73 Fix _tag_commit 2020-03-05 20:35:32 +01:00
Stefan Zweifel
3387b2f267 Add tagging_message input option 2020-03-05 20:31:06 +01:00
Stefan Zweifel
d4a53f1779 Push Tags to Remote Repository 2020-03-05 20:28:38 +01:00
Stefan Zweifel
956a47433b Merge pull request #49 from stefanzweifel/feature/outputs
Feature: Add "changes_detected" output
2020-03-04 20:44:32 +01:00
Stefan Zweifel
f866b2a854 Update Changelog 2020-03-04 20:33:53 +01:00
Stefan Zweifel
8744cc88ef Update README 2020-03-04 20:33:10 +01:00
Stefan Zweifel
57bbd38e56 Add outputs to action.yml 2020-03-04 19:56:33 +01:00
Stefan Zweifel
eef5f33ea3 WIP 2020-03-03 21:04:57 +01:00
Stefan Zweifel
25e6f0b17d Echo changes_detected in workflow 2020-03-03 21:00:40 +01:00
Stefan Zweifel
ae885f5d8c WIP 2020-03-03 20:54:12 +01:00
Stefan Zweifel
33e8fd937f Add changes_detected output 2020-03-03 20:51:12 +01:00
Stefan Zweifel
404d2015f4 Add Workflow to run git-auto-commit 2020-03-03 20:51:02 +01:00
Stefan Zweifel
cd0530ad7a Merge pull request #48 from clxmstaab/patch-1
example: fix typo
2020-03-03 12:12:50 +01:00
Markus Staab
2a957f5c41 example: fix typo 2020-03-03 12:08:03 +01:00
Stefan Zweifel
7e64e614a1 Fix Typo in README 2020-02-29 09:52:12 +01:00
Stefan Zweifel
c887fa4a07 Update Changelog 2020-02-24 20:09:19 +01:00
Stefan Zweifel
09d175379e Release v4.0.0 2020-02-24 20:03:49 +01:00
Stefan Zweifel
cdb861eda0 Merge pull request #45 from stefanzweifel/refactor/switch-to-js
[4.0] Switch to NodeJS Environment (BC)
2020-02-24 19:49:08 +01:00
Stefan Zweifel
6a853b60cc Add Continuous Deployment Workflow 2020-02-24 19:39:11 +01:00
Stefan Zweifel
76f50fc3ad Add PAT Example 2020-02-23 11:42:57 +01:00
Stefan Zweifel
9b4acb8f10 Update README 2020-02-23 11:29:03 +01:00
Stefan Zweifel
d11ccd183d Add commetn to index.js
I don't have so much experience in writing node-js scripts. It makes sense, to point out where most of the code in index.js is coming from.
2020-02-23 10:45:28 +01:00
Stefan Zweifel
a156a1072e Remove not required code 2020-02-23 10:44:44 +01:00
Stefan Zweifel
d69e5f0850 WIP 2020-02-23 10:16:26 +01:00
Stefan Zweifel
86f0c11c06 Remove dist/index.js 2020-02-11 21:08:14 +01:00
Stefan Zweifel
eda98fb9e5 Simplify index.js 2020-02-11 21:04:18 +01:00
Stefan Zweifel
844e852dde Add @actions/exec 2020-02-11 21:00:40 +01:00
Stefan Zweifel
cca75e0840 Add compiled index.js file 2020-02-11 20:54:10 +01:00
Stefan Zweifel
ef107e1d4b Switch Action to use node12 2020-02-11 20:50:33 +01:00
Stefan Zweifel
e97d20ce65 Add package.json and other JavaScript related files 2020-02-11 20:50:22 +01:00
Stefan Zweifel
3c9d7dd29d Remove Dockerfile 2020-02-11 20:47:37 +01:00
Stefan Zweifel
4ff392a586 Merge pull request #42 from zhangyoufu/patch-1
fix typo in README.md
2020-02-08 07:50:13 +01:00
Youfu Zhang
69c53bd75e fix typo in README.md 2020-02-08 12:28:25 +08:00
18 changed files with 938 additions and 92 deletions

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
github: stefanzweifel
custom: ["https://buymeacoff.ee/3oQ64YW"]

View File

@@ -7,8 +7,10 @@ assignees: ''
---
<!-- Before opening an issue, have you tried solving your problem by explicitly setting the `branch`-value in your workflow? -->
**Version of the Action**
`v2.x.x`
`v4.x.x`
**Describe the bug**
A clear and concise description of what the bug is.
@@ -26,5 +28,11 @@ A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Used Workflow**
```yaml
# Paste the Workflow you've used here
```
**Additional context**
Add any other context about the problem here.

22
.github/workflows/git-auto-commit.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: git-auto-commit
on: push
jobs:
git-auto-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use git-auto-commit-action
id: "auto-commit-action"
uses: ./
- name: "no changes detected"
if: steps.auto-commit-action.outputs.changes_detected == false
run: "echo \"No changes detected\""
- name: "changes detected"
if: steps.auto-commit-action.outputs.changes_detected == true
run: "echo \"Changes detected\""

19
.github/workflows/linter.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Lint Code Base
on: push
jobs:
build:
name: Lint Code Base
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v2
- name: Lint Code Base
uses: github/super-linter@v3
env:
VALIDATE_ALL_CODEBASE: false
VALIDATE_MARKDOWN: false
DEFAULT_BRANCH: master
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,12 +0,0 @@
name: Shellcheck
on: push
jobs:
shellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: shellcheck
uses: ludeeus/action-shellcheck@0.1.0

17
.github/workflows/tests.yml vendored Normal file
View File

@@ -0,0 +1,17 @@
name: tests
on: push
jobs:
tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install testing dependencies
run: yarn install
- name: Run Tests
run: yarn test

15
.github/workflows/versioning.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
name: Keep the versions up-to-date
on:
release:
types: [published, edited]
jobs:
actions-tagger:
runs-on: windows-latest
steps:
- uses: Actions-R-Us/actions-tagger@latest
env:
GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"
with:
publish_latest_tag: true

4
.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
tests/test_fake_local_repository
tests/test_fake_remote_repository
tests/test_fake_temp_local_repository
yarn.lock

View File

@@ -4,16 +4,153 @@ 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/v3.0.0...HEAD)
## [Unreleased](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.9.1...HEAD)
> TBD
## [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 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
### Added
- Add `skip_fetch` option to skip the execution of `git-fetch` [#131](https://github.com/stefanzweifel/git-auto-commit-action/pull/131)
### Changed
- Update `git fetch` to only fetch the latest commit from remote [#131](https://github.com/stefanzweifel/git-auto-commit-action/pull/131)
## [v4.7.2](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.7.1...v4.7.2) - 2020-10-24
This release basically reverts the Action to the state of `v4.6.0`.
### Changed
- Revert change to fix git-checkout with special characters in branch names [#122](https://github.com/stefanzweifel/git-auto-commit-action/pull/122)
## [v4.7.1](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.7.0...v4.7.1) - 2020-10-22
### Removed
- Remove `checkout_options` as it broke everything [#120](https://github.com/stefanzweifel/git-auto-commit-action/pull/120/)
## [v4.7.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.6.0...v4.7.0) - 2020-10-21
### Added
- Add `checkout_options` [#115](https://github.com/stefanzweifel/git-auto-commit-action/pull/115)
## [v4.6.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.5.1...v4.6.0) - 2020-10-11
### Changed
- Make "commit_message" optional and set default commit message to "Apply automatic changes" [#103](https://github.com/stefanzweifel/git-auto-commit-action/issues/103), [#110](https://github.com/stefanzweifel/git-auto-commit-action/pull/110)
### Fixes
- Better support for branch names with special characters in them [#108](https://github.com/stefanzweifel/git-auto-commit-action/pull/108)
## [v4.5.1](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.5.0...v4.5.1) - 2020-09-11
### Removed
- Remove orphan branch feature added in #95 which broke stuff [#98](https://github.com/stefanzweifel/git-auto-commit-action/pull/98)
## [v4.5.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.4.1...v4.5.0) - 2020-09-10
### Added
- Create orphan branch if branch name does not exist [#95](https://github.com/stefanzweifel/git-auto-commit-action/pull/95)
## [v4.4.1](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.4.0...v4.4.1) - 2020-08-16
### Changed
- Include given `file_pattern` in git dirty check [#91](https://github.com/stefanzweifel/git-auto-commit-action/pull/91)
## [v4.4.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.3.0...v4.4.0) - 2020-06-26
### Added
- Add option to skipt the dirty check and always try to create and push a commit [#82](https://github.com/stefanzweifel/git-auto-commit-action/issues/82), [#84](https://github.com/stefanzweifel/git-auto-commit-action/pull/84)
## [v4.3.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.2.0...v4.3.0) - 2020-05-16
Note: Since v4.3.0 we provide major version tags. You can now use `stefanzweifel/git-auto-commit-action@v4` to always use the latest release of a major version. See [#77](https://github.com/stefanzweifel/git-auto-commit-action/issues/77) for details.
### Added
- Add new `push_options`-input. This feature makes it easier for you to force-push commits to a repository. [#78](https://github.com/stefanzweifel/git-auto-commit-action/pull/78), [#72](https://github.com/stefanzweifel/git-auto-commit-action/issues/72)
## [v4.2.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.6...v4.2.0) - 2020-05-10
### Changed
- Use `${{ github.head_ref }}` as default branch value. Therefore, the branch name when listening for `pull_request`-events is optional. [#75](https://github.com/stefanzweifel/git-auto-commit-action/pull/75), [#73](https://github.com/stefanzweifel/git-auto-commit-action/pull/73)
## [v4.1.6](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.5...v4.1.6) - 2020-04-28
### Fixes
- Fix issue where tags could not be created correctly [#68](https://github.com/stefanzweifel/git-auto-commit-action/pull/68)
## [v4.1.5](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.4...v4.1.5) - 2020-04-23
### Added
- Update `file_pattern` to support multiple file paths [#65](https://github.com/stefanzweifel/git-auto-commit-action/pull/65)
### Changes
- Revert changes made in v4.1.4 [#63](https://github.com/stefanzweifel/git-auto-commit-action/pull/63)
### Fixes
- Fix issue with `commit_options` [#64](https://github.com/stefanzweifel/git-auto-commit-action/pull/64)
## [v4.1.4](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.3...v4.1.4) - 2020-04-22
### Fixed
- Fix bug introduced in previous version, where git user configuration has been placed inline [#62](https://github.com/stefanzweifel/git-auto-commit-action/pull/62)
## [v4.1.3](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.2...v4.1.3) - 2020-04-18
### Changed
- Place Git user configuration inline [#59](https://github.com/stefanzweifel/git-auto-commit-action/pull/59)
## [v4.1.2](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.1...v4.1.2) - 2020-04-03
### Fixes
- Fix Issue with `changes_detected`-output [#57](https://github.com/stefanzweifel/git-auto-commit-action/pull/57)
## [v4.1.1](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.1.0...v4.1.1) - 2020-03-14
### Fixes
- Fix issue where commit has not been pushed to remote repository, when no `branch`-option has been given [#54](https://github.com/stefanzweifel/git-auto-commit-action/pull/54)
## [v4.1.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4.0.0...v4.1.0) - 2020-03-05
### Added
- Add `changes_detected` output [#49](https://github.com/stefanzweifel/git-auto-commit-action/pull/49), [#46](https://github.com/stefanzweifel/git-auto-commit-action/issues/46)
- Add `tagging_message` input option to create and push tags [#50](https://github.com/stefanzweifel/git-auto-commit-action/pull/50), [#47](https://github.com/stefanzweifel/git-auto-commit-action/issues/47)
## [v4.0.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v3.0.0...v4.0.0) - 2020-02-24
### Changed
- Switch Action to use `node12`-environment instead of `docker`. [#45](https://github.com/stefanzweifel/git-auto-commit-action/pull/45)
## [v3.0.0](https://github.com/stefanzweifel/git-auto-commit-action/compare/v2.5.0...v3.0.0) - 2020-02-06
### Added
- Add `commit_user_name`, `commit_user_email` and `commit_author` input options for full customzation on how the commit is being created [#39](https://github.com/stefanzweifel/git-auto-commit-action/pull/39)
### Changed
### Changed
- Make the `branch` input option optional [#41](https://github.com/stefanzweifel/git-auto-commit-action/pull/41)
### Removed

View File

@@ -1,16 +0,0 @@
FROM alpine/git:1.0.7
LABEL "com.github.actions.name"="Auto Commit changed files"
LABEL "com.github.actions.description"="Automatically commits files which have been changed during the workflow run and push changes back to remote repository."
LABEL "com.github.actions.icon"="git-commit"
LABEL "com.github.actions.color"="orange"
LABEL "repository"="http://github.com/stefanzweifel/git-auto-commit-action"
LABEL "homepage"="http://github.com/stefanzweifel/git-auto-commit-action"
LABEL "maintainer"="Stefan Zweifel <hello@stefanzweifel.io>"
RUN apk add git-lfs
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["sh", "/entrypoint.sh"]

View File

@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2019 Stefan Zweifel
Copyright (c) 2021 Stefan Zweifel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

258
README.md
View File

@@ -1,60 +1,92 @@
# git-auto-commit-action
# git-auto-commit Action
This GitHub Action automatically commits files which have been changed during a Workflow run and pushes the commit back to GitHub.
The default committer is "GitHub Actions <actions@github.com>" and the default author of the commit is "Your GitHub Username <github_username@users.noreply.github.com>".
> The GitHub Action for committing files for the 80% use case.
If no changes are detected, the Action does nothing.
<a href="https://github.com/search?o=desc&q=stefanzweifel%2Fgit-auto-commit-action+path%3A.github%2Fworkflows+language%3AYAML&s=&type=Code" target="_blank" title="Public workflows that use this action."><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fapi-git-master.endbug.vercel.app%2Fapi%2Fgithub-actions%2Fused-by%3Faction%3Dstefanzweifel%2Fgit-auto-commit-action%26badge%3Dtrue" alt="Public workflows that use this action."></a>
<a href="https://github.com/stefanzweifel/git-auto-commit-action/actions?query=workflow%3Atests">
<img src="https://github.com/stefanzweifel/git-auto-commit-action/workflows/tests/badge.svg" alt="">
</a>
This GitHub Action automatically commits files which have been changed during a Workflow run and pushes the commit back to GitHub.
By default, the commit is made in the name of "GitHub Actions" and co-authored by the user that made the last commit.
This Action has been inspired and adapted from the [auto-commit](https://github.com/cds-snc/github-actions/tree/master/auto-commit
)-Action of the Canadian Digital Service and this [commit](https://github.com/elstudio/actions-js-build/blob/41d604d6e73d632e22eac40df8cc69b5added04b/commit/entrypoint.sh)-Action by Eric Johnson.
*This Action currently can't be used in conjunction with pull requests of forks. See [issue #25](https://github.com/stefanzweifel/git-auto-commit-action/issues/25) for more information.*
If you want to learn more how this Action works under the hood, check out [this article](https://michaelheap.com/git-auto-commit/) by Michael Heap.
## Usage
**Note:** This Action requires that you use `action/checkout@v2` or above to checkout your repository.
Add the following step at the end of your job.
Add the following step at the end of your job, after other steps that might add or change files.
```yaml
- uses: stefanzweifel/git-auto-commit-action@v3.0.0
- uses: stefanzweifel/git-auto-commit-action@v4
```
This is a more extended example with all possible options.
```yaml
- uses: stefanzweifel/git-auto-commit-action@v4
with:
# Optional but recommended
# Defaults to "Apply automatic changes"
commit_message: Apply automatic changes
# Optional name of the branch the commit should be pushed to
# Required if Action is used in Workflow listening to the `pull_request` event
branch: ${{ github.head_ref }}
# Optional branch name where commit should be pushed to
# Defaults to the current branch
branch: feature-123
# Optional git params
# Optional options appended to `git-commit`
# See https://git-scm.com/docs/git-commit for a list of available options
commit_options: '--no-verify --signoff'
# Optional glob pattern of files which should be added to the commit
file_pattern: src/\*.js
# Defaults to all (.)
# See the `pathspec`-documentation for git
# - https://git-scm.com/docs/git-add#Documentation/git-add.txt-ltpathspecgt82308203
# - https://git-scm.com/docs/gitglossary#Documentation/gitglossary.txt-aiddefpathspecapathspec
file_pattern: src/*.js tests/*.js *.php
# Optional local file path to the repository
# Defaults to the root of the repository
repository: .
# Optional commit user and author settings
commit_user_name: My GitHub Actions Bot
commit_user_email: my-github-actions-bot@example.org
commit_author: Author <actions@gitub.com>
commit_user_name: My GitHub Actions Bot # defaults to "GitHub Actions"
commit_user_email: my-github-actions-bot@example.org # defaults to "actions@github.com"
commit_author: Author <actions@github.com> # defaults to author of the commit that triggered the run
# Optional tag message
# Action will create and push a new tag to the remote repository and the defined branch
tagging_message: 'v1.0.0'
# Optional options appended to `git-push`
# See git-push documentation for details: https://git-scm.com/docs/git-push#_options
push_options: '--force'
# Optional: Disable dirty check and always try to create a commit and push
skip_dirty_check: true
# Optional: Skip internal call to `git fetch`
skip_fetch: true
```
The Action will only commit files back, if changes are available. The resulting commit **will not trigger** another GitHub Actions Workflow run!
## Example
It is recommended to use this Action in Workflows which listen to the `pull_request` event. If you want to use the Action on other events, you have to hardcode the value for `branch` as `github.head_ref` is only available in Pull Requests.
In this example, we're running `php-cs-fixer` in a PHP project to fix the codestyle automatically, then commit possible changed files back to the repository.
## Example Usage
This Action will only work, if the job in your Workflow changes project files.
The most common use case for this, is when you're running a Linter or Code-Style fixer on GitHub Actions.
In this example I'm running `php-cs-fixer` in a PHP project.
Note that we explicitly specify `${{ github.head_ref }}` in the checkout Action.
This is required in order to work with the `pull_request` event (or any other non-`push` event).
```yaml
name: php-cs-fixer
on: pull_request
on:
pull_request:
push:
branches:
- "main"
jobs:
php-cs-fixer:
@@ -68,48 +100,198 @@ jobs:
- name: Run php-cs-fixer
uses: docker://oskarstark/php-cs-fixer-ga
- uses: stefanzweifel/git-auto-commit-action@v3.0.0
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply php-cs-fixer changes
branch: ${{ github.head_ref }}
```
```yaml
name: php-cs-fixer
## Inputs
on: push
Checkout [`action.yml`](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/action.yml) for a full list of supported inputs.
## Outputs
You can use these outputs to trigger other Actions in your Workflow run based on the result of `git-auto-commit-action`.
- `changes_detected`: Returns either "true" or "false" if the repository was dirty and files have changed.
### Example
```yaml
- name: "Run if changes have been detected"
if: steps.auto-commit-action.outputs.changes_detected == 'true'
run: echo "Changes!"
- name: "Run if no changes have been detected"
if: steps.auto-commit-action.outputs.changes_detected == 'false'
run: echo "No Changes!"
```
## Limitations & Gotchas
### Checkout the correct branch
You must use `action/checkout@v2` or later versions to checkout the repository.
In non-`push` events, such as `pull_request`, make sure to specify the `ref` to checkout:
```yaml
- uses: actions/checkout@v2
with:
ref: ${{ github.head_ref }}
```
You have to do this to avoid that the `checkout`-Action clones your repository in a detached state.
### Commits of this Action do not trigger new Workflow runs
The resulting commit **will not trigger** another GitHub Actions Workflow run.
This is due to [limitations set by GitHub](https://help.github.com/en/actions/reference/events-that-trigger-workflows#triggering-new-workflows-using-a-personal-access-token).
> When you use the repository's GITHUB_TOKEN to perform tasks on behalf of the GitHub Actions app, events triggered by the GITHUB_TOKEN will not create a new workflow run. This prevents you from accidentally creating recursive workflow runs.
You can change this by creating a new [Personal Access Token (PAT)](https://github.com/settings/tokens/new),
storing the token as a secret in your repository and then passing the new token to the [`actions/checkout`](https://github.com/actions/checkout#usage) Action step.
```yaml
- uses: actions/checkout@v2
with:
token: ${{ secrets.PAT }}
```
If you work in an organization and don't want to create a PAT from your personal account, we recommend using a [robot account](https://docs.github.com/en/github/getting-started-with-github/types-of-github-accounts) for the token.
### Using the Action in forks from public repositories
**☝️ Important Notice**: This Action technically works with forks. However, please note that the combination of triggers and their options can cause issues. Please read [the documentation](https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows) on which triggers GitHub Actions support.\
If you use this Action in combination with a linter/fixer, it's easier if you run the Action on `push` on your `main`-branch.
---
By default, this Action will not run on Pull Requests which have been opened by forks. (This is a limitation by GitHub, not by us.)
If you want that a Workflow using this Action runs on Pull Requests opened by forks, 2 things have to be changed:
1. In addition to listening to the `pull_request` event in your Workflow triggers, you have to add an additional event: `pull_request_target`. You can learn more about this event in [the GitHub docs](https://docs.github.com/en/actions/reference/events-that-trigger-workflows#pull_request_target).
2. GitHub Action has to be enabled on the forked repository. \
For security reasons, GitHub does not automatically enable GitHub Actions on forks. The user has to explicitly enable GitHub Actions in the "Actions"-tab of the forked repository. (Mention this in your projects README or CONTRIBUTING.md!)
After you have added the `pull_request_target` to your desired Workflow and the forked repository has enabled Actions and a new Pull Request is opened, the Workflow will run **on the forked repository**.
Due to the fact that the Workflow is not run on the repository the Pull Request is opened in, you won't see any status indicators inside the Pull Request.
#### Example
The following workflow runs `php-cs-fixer` (a code linter and fixer for PHP) when a `pull_request` is opened. We've added the `pull_request_target`-trigger too, to make it work for forks.
```yaml
name: Format PHP
on: [push, pull_request, pull_request_target]
jobs:
php-cs-fixer:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run php-cs-fixer
uses: docker://oskarstark/php-cs-fixer-ga
- uses: stefanzweifel/git-auto-commit-action@v3.0.0
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply php-cs-fixer changes
```
### Inputs
Next time a user forks your project **and** enabled GitHub Actions **and** opened a Pull Request, the Workflow will run on the the forked repository and will push commits to the same branch.
Here's how the Pull Request will look like:
![Screenshot of a Pull Request from a Fork](https://user-images.githubusercontent.com/1080923/90955964-9c74c080-e482-11ea-8097-aa7f5161f50e.png)
As you can see, your contributors have to go through hoops to make this work. **For Workflows which runter linters and fixers (like the example above) we recommend running them when a push happens on the `master`-branch.**
For more information about running Actions on forks, see [this announcement from GitHub](https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/).
### Push to forks from private repositories
By default, GitHub Actions doesn't run Workflows on forks from private repositories. To enable Actions for **private** repositories enable "Run workflows from pull requests" in your repository settings.
See [this announcement from GitHub](https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/) or the [GitHub docs](https://docs.github.com/en/github/administering-a-repository/disabling-or-limiting-github-actions-for-a-repository#enabling-workflows-for-private-repository-forks) for details.
### Signing Commits & Other Git Command Line Options
Using command lines options needs to be done manually for each workflow which you require the option enabled. So for example signing commits requires you to import the gpg signature each and every time. The following list of actions are worth checking out if you need to automate these tasks regulary
- [Import GPG Signature](https://github.com/crazy-max/ghaction-import-gpg) (Suggested by [TGTGamer](https://github.com/tgtgamer))
Checkout [`action.yml`](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/action.yml) for a full list of supported inputs.
## Troubleshooting
### Action does not push commit to repository
- If your Workflow can't push the commit to the repository because of authentication issues, please update your Workflow configuration and usage of [`ations/checkout`](https://github.com/actions/checkout#usage). (Updating the `token` value with a Personal Access Token should fix your issues)
Make sure to [checkout the correct branch](#checkout-the-correct-branch).
## Known Issues
### Action does not push commit to repository: Authentication Issue
- GitHub currently prohibits Actions like this to push changes from a fork to the upstream repository. See [issue #25](https://github.com/stefanzweifel/git-auto-commit-action/issues/25) for more information.
If your Workflow can't push the commit to the repository because of authentication issues,
please update your Workflow configuration and usage of [`actions/checkout`](https://github.com/actions/checkout#usage).
Updating the `token` value with a Personal Access Token should fix your issues.
### Push to protected branches
If your repository uses [protected branches](https://help.github.com/en/github/administering-a-repository/configuring-protected-branches) you have to do the following changes to your Workflow for the Action to work properly.
You have to enable force pushes to a protected branch (See [documentation](https://help.github.com/en/github/administering-a-repository/enabling-force-pushes-to-a-protected-branch)) and update your Workflow to use force push like this.
```yaml
- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: Apply php-cs-fixer changes
push_options: --force
```
In addition, you have to create a new [Personal Access Token (PAT)](https://github.com/settings/tokens/new),
store the token as a secret in your repository and pass the new token to the [`actions/checkout`](https://github.com/actions/checkout#usage) Action step.
```yaml
- uses: actions/checkout@v2
with:
token: ${{ secrets.PAT }}
```
You can learn more about Personal Access Token in the [GitHub documentation](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token).
Note: If you're working in an organisation and you don't want to create the PAT from your personal account, we recommend using a bot-account for such tokens.
### No new workflows are triggered by the commit of this action
This is due to limitations set up by GitHub, [commits of this Action do not trigger new Workflow runs](#commits-of-this-action-do-not-trigger-new-workflow-runs).
## Running the tests
The package has tests written in [bats](https://github.com/bats-core/bats-core). Before you can run the test suite locally, you have to install the dependencies with `npm` or `yarn`.
```shell
npm install
yarn
```
You can run the test suite with `npm` or `yarn`.
```shell
npm run test
yarn test
```
## Versioning
We use [SemVer](http://semver.org/) for versioning. For the versions available, see the [tags on this repository](https://github.com/stefanzweifel/git-auto-commit-action/tags).
We also provide major version tags to make it easier to always use the latest release of a major version. For example you can use `stefanzweifel/git-auto-commit-action@v4` to always use the latest release of the current major version.
(More information about this [here](https://help.github.com/en/actions/building-actions/about-actions#versioning-your-action).)
## License
This project is licensed under the MIT License - see the [LICENSE](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/LICENSE) file for details.

View File

@@ -6,14 +6,16 @@ author: Stefan Zweifel <hello@stefanzweifel.io>
inputs:
commit_message:
description: Commit message
required: true
required: false
default: Apply automatic changes
branch:
description: Git branch name, where changes should be pushed too. Required if Action is used on the `pull_request` event
required: false
default: ''
default: ${{ github.head_ref }}
commit_options:
description: Commit options (eg. --no-verify)
required: false
default: ''
file_pattern:
description: File pattern used for `git add`. For example `src/\*.js`
required: false
@@ -34,10 +36,30 @@ inputs:
description: Value used for the commit author. Defaults to the username of whoever triggered this workflow run.
required: false
default: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
tagging_message:
description: Message used to create a new git tag with the commit. Keep this empty, if no tag should be created.
required: false
default: ''
push_options:
description: Push options (eg. --force)
required: false
default: ''
skip_dirty_check:
description: Skip the check if the git repository is dirty and always try to create a commit.
required: false
default: false
skip_fetch:
description: Skip the call to git-fetch.
required: false
default: false
outputs:
changes_detected:
description: Value is "true", if the repository was dirty and file changes have been detected. Value is "false", if no changes have been detected.
runs:
using: 'docker'
image: 'Dockerfile'
using: 'node12'
main: 'index.js'
branding:
icon: 'git-commit'

View File

@@ -5,9 +5,9 @@ set -eu
_main() {
_switch_to_repository
if _git_is_dirty; then
if _git_is_dirty || "$INPUT_SKIP_DIRTY_CHECK"; then
_setup_git
echo "::set-output name=changes_detected::true";
_switch_to_branch
@@ -15,51 +15,104 @@ _main() {
_local_commit
_tag_commit
_push_to_github
else
echo "Working tree clean. Nothing to commit."
echo "::set-output name=changes_detected::false";
echo "Working tree clean. Nothing to commit.";
fi
}
_switch_to_repository() {
echo "INPUT_REPOSITORY value: $INPUT_REPOSITORY";
cd $INPUT_REPOSITORY
cd "$INPUT_REPOSITORY";
}
_git_is_dirty() {
[[ -n "$(git status -s)" ]]
}
# Set up git user configuration
_setup_git ( ) {
git config --global user.name "$INPUT_COMMIT_USER_NAME"
git config --global user.email "$INPUT_COMMIT_USER_EMAIL"
# shellcheck disable=SC2086
[ -n "$(git status -s -- $INPUT_FILE_PATTERN)" ]
}
_switch_to_branch() {
echo "INPUT_BRANCH value: $INPUT_BRANCH";
# Fetch remote to make sure that repo can be switched to the right branch.
if "$INPUT_SKIP_FETCH"; then
echo "::debug::git-fetch has not been executed";
else
git fetch --depth=1;
fi
# Switch to branch from current Workflow run
git checkout $INPUT_BRANCH
# shellcheck disable=SC2086
git checkout $INPUT_BRANCH;
}
_add_files() {
echo "INPUT_FILE_PATTERN: ${INPUT_FILE_PATTERN}"
git add "${INPUT_FILE_PATTERN}"
echo "INPUT_FILE_PATTERN: ${INPUT_FILE_PATTERN}";
# shellcheck disable=SC2086
git add ${INPUT_FILE_PATTERN};
}
_local_commit() {
echo "INPUT_COMMIT_OPTIONS: ${INPUT_COMMIT_OPTIONS}"
git commit -m "$INPUT_COMMIT_MESSAGE" --author="$INPUT_COMMIT_AUTHOR" ${INPUT_COMMIT_OPTIONS:+"$INPUT_COMMIT_OPTIONS"}
echo "INPUT_COMMIT_OPTIONS: ${INPUT_COMMIT_OPTIONS}";
echo "::debug::Apply commit options ${INPUT_COMMIT_OPTIONS}";
# shellcheck disable=SC2206
INPUT_COMMIT_OPTIONS_ARRAY=( $INPUT_COMMIT_OPTIONS );
echo "INPUT_COMMIT_USER_NAME: ${INPUT_COMMIT_USER_NAME}";
echo "INPUT_COMMIT_USER_EMAIL: ${INPUT_COMMIT_USER_EMAIL}";
echo "INPUT_COMMIT_MESSAGE: ${INPUT_COMMIT_MESSAGE}";
echo "INPUT_COMMIT_AUTHOR: ${INPUT_COMMIT_AUTHOR}";
git -c user.name="$INPUT_COMMIT_USER_NAME" -c user.email="$INPUT_COMMIT_USER_EMAIL" \
commit -m "$INPUT_COMMIT_MESSAGE" \
--author="$INPUT_COMMIT_AUTHOR" \
${INPUT_COMMIT_OPTIONS:+"${INPUT_COMMIT_OPTIONS_ARRAY[@]}"};
}
_tag_commit() {
echo "INPUT_TAGGING_MESSAGE: ${INPUT_TAGGING_MESSAGE}"
if [ -n "$INPUT_TAGGING_MESSAGE" ]
then
echo "::debug::Create tag $INPUT_TAGGING_MESSAGE";
git -c user.name="$INPUT_COMMIT_USER_NAME" -c user.email="$INPUT_COMMIT_USER_EMAIL" tag -a "$INPUT_TAGGING_MESSAGE" -m "$INPUT_TAGGING_MESSAGE";
else
echo "No tagging message supplied. No tag will be added.";
fi
}
_push_to_github() {
echo "INPUT_PUSH_OPTIONS: ${INPUT_PUSH_OPTIONS}";
echo "::debug::Apply push options ${INPUT_PUSH_OPTIONS}";
# shellcheck disable=SC2206
INPUT_PUSH_OPTIONS_ARRAY=( $INPUT_PUSH_OPTIONS );
if [ -z "$INPUT_BRANCH" ]
then
git push origin
# Only add `--tags` option, if `$INPUT_TAGGING_MESSAGE` is set
if [ -n "$INPUT_TAGGING_MESSAGE" ]
then
echo "::debug::git push origin --tags";
git push origin --tags ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"};
else
echo "::debug::git push origin";
git push origin ${INPUT_PUSH_OPTIONS:+"${INPUT_PUSH_OPTIONS_ARRAY[@]}"};
fi
else
git push --set-upstream origin "HEAD:$INPUT_BRANCH"
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[@]}"};
fi
}

34
index.js Normal file
View File

@@ -0,0 +1,34 @@
/**
* Most of this code has been copied from the following GitHub Action
* to make it simpler or not necessary to install a lot of
* JavaScript packages to execute a shell script.
*
* https://github.com/ad-m/github-push-action/blob/fe38f0a751bf9149f0270cc1fe20bf9156854365/start.js
*/
const spawn = require('child_process').spawn;
const path = require("path");
const exec = (cmd, args=[]) => new Promise((resolve, reject) => {
console.log(`Started: ${cmd} ${args.join(" ")}`)
const app = spawn(cmd, args, { stdio: 'inherit' });
app.on('close', code => {
if(code !== 0){
err = new Error(`Invalid status code: ${code}`);
err.code = code;
return reject(err);
};
return resolve(code);
});
app.on('error', reject);
});
const main = async () => {
await exec('bash', [path.join(__dirname, './entrypoint.sh')]);
};
main().catch(err => {
console.error(err);
console.error(err.stack);
process.exit(err.code || -1);
})

10
package.json Normal file
View File

@@ -0,0 +1,10 @@
{
"devDependencies": {
"bats": "^1.1.0",
"bats-assert": "ztombol/bats-assert",
"bats-support": "ztombol/bats-support"
},
"scripts": {
"test": "bats tests"
}
}

333
tests/git-auto-commit.bats Normal file
View File

@@ -0,0 +1,333 @@
#!/usr/bin/env bats
load '../node_modules/bats-support/load'
load '../node_modules/bats-assert/load'
setup() {
# Define Paths for local repository used during tests
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}"
export INPUT_COMMIT_MESSAGE="Commit Message"
export INPUT_BRANCH="master"
export INPUT_COMMIT_OPTIONS=""
export INPUT_FILE_PATTERN="."
export INPUT_COMMIT_USER_NAME="Test Suite"
export INPUT_COMMIT_USER_EMAIL="test@github.com"
export INPUT_COMMIT_AUTHOR="Test Suite <test@users.noreply.github.com>"
export INPUT_TAGGING_MESSAGE=""
export INPUT_PUSH_OPTIONS=""
export INPUT_SKIP_DIRTY_CHECK=false
export INPUT_SKIP_FETCH=false
# Configure Git
if [[ -z $(git config user.name) ]]; then
git config --global user.name "Test Suite"
git config --global user.email "test@github.com"
fi
# Create and setup some fake repositories for testing
_setup_fake_remote_repository
_setup_local_repository
}
teardown() {
rm -rf "${FAKE_LOCAL_REPOSITORY}"
rm -rf "${FAKE_REMOTE}"
rm -rf "${FAKE_TEMP_LOCAL_REPOSITORY}"
}
# Create a fake remote repository which tests can push against
_setup_fake_remote_repository() {
# Create the bare repository, which will act as our remote/origin
rm -rf "${FAKE_REMOTE}";
mkdir "${FAKE_REMOTE}";
cd "${FAKE_REMOTE}";
git init --bare;
# Clone the remote repository to a temporary location.
rm -rf "${FAKE_TEMP_LOCAL_REPOSITORY}"
git clone "${FAKE_REMOTE}" "${FAKE_TEMP_LOCAL_REPOSITORY}"
# Create some files, commit them and push them to the remote repository
touch "${FAKE_TEMP_LOCAL_REPOSITORY}"/remote-files{1,2,3}.txt
cd "${FAKE_TEMP_LOCAL_REPOSITORY}";
git add .;
git commit --quiet -m "Init Remote Repository";
git push origin master;
}
# Clone our fake remote repository and set it up for testing
_setup_local_repository() {
# Clone remote repository. In this repository we will do our testing
rm -rf "${FAKE_LOCAL_REPOSITORY}"
git clone "${FAKE_REMOTE}" "${FAKE_LOCAL_REPOSITORY}"
cd "${FAKE_LOCAL_REPOSITORY}";
}
# Run the main code related to this GitHub Action
git_auto_commit() {
bash "${BATS_TEST_DIRNAME}"/../entrypoint.sh
}
@test "It detects changes, commits them and pushes them to the remote repository" {
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt
run git_auto_commit
assert_success
assert_line "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}"
assert_line "::set-output name=changes_detected::true"
assert_line "INPUT_BRANCH value: master"
assert_line "INPUT_FILE_PATTERN: ."
assert_line "INPUT_COMMIT_OPTIONS: "
assert_line "::debug::Apply commit options "
assert_line "INPUT_TAGGING_MESSAGE: "
assert_line "No tagging message supplied. No tag will be added."
assert_line "INPUT_PUSH_OPTIONS: "
assert_line "::debug::Apply push options "
assert_line "::debug::Push commit to remote branch master"
}
@test "It detects when files have been deleted, commits changes and pushes them to the remote repository" {
rm -rf "${FAKE_LOCAL_REPOSITORY}"/remote-files1.txt
run git_auto_commit
assert_success
assert_line "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}"
assert_line "::set-output name=changes_detected::true"
assert_line "INPUT_BRANCH value: master"
assert_line "INPUT_FILE_PATTERN: ."
assert_line "INPUT_COMMIT_OPTIONS: "
assert_line "::debug::Apply commit options "
assert_line "INPUT_TAGGING_MESSAGE: "
assert_line "No tagging message supplied. No tag will be added."
assert_line "INPUT_PUSH_OPTIONS: "
assert_line "::debug::Apply push options "
assert_line "::debug::Push commit to remote branch master"
}
@test "It prints a 'Nothing to commit' message in a clean repository" {
run git_auto_commit
assert_success
assert_line "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}"
assert_line "::set-output name=changes_detected::false"
assert_line "Working tree clean. Nothing to commit."
}
@test "If SKIP_DIRTY_CHECK is set to true on a clean repo it fails to push" {
INPUT_SKIP_DIRTY_CHECK=true
run git_auto_commit
assert_failure
assert_line "INPUT_REPOSITORY value: ${INPUT_REPOSITORY}"
assert_line "::set-output name=changes_detected::true"
assert_line "::set-output name=changes_detected::true"
assert_line "INPUT_BRANCH value: master"
assert_line "INPUT_FILE_PATTERN: ."
assert_line "INPUT_COMMIT_OPTIONS: "
assert_line "::debug::Apply commit options "
}
@test "It applies INPUT_FILE_PATTERN when creating commit" {
INPUT_FILE_PATTERN="*.txt *.html"
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2}.php
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2}.html
run git_auto_commit
assert_success
assert_line "INPUT_FILE_PATTERN: *.txt *.html"
assert_line "::debug::Push commit to remote branch master"
# Assert that PHP files have not been added.
run git status
assert_output --partial 'new-file-1.php'
}
@test "It applies INPUT_COMMIT_OPTIONS when creating commit" {
INPUT_COMMIT_OPTIONS="--no-verify --signoff"
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2}.txt
run git_auto_commit
assert_success
assert_line "INPUT_COMMIT_OPTIONS: --no-verify --signoff"
assert_line "::debug::Push commit to remote branch master"
# Assert last commit was signed off
run git log -n 1
assert_output --partial "Signed-off-by:"
}
@test "It applies commit user and author settings" {
INPUT_COMMIT_USER_NAME="A Single Test"
INPUT_COMMIT_USER_EMAIL="single-test@github.com"
INPUT_COMMIT_AUTHOR="A Single Test <single@users.noreply.github.com>"
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2}.txt
run git_auto_commit
assert_success
assert_line "INPUT_COMMIT_USER_NAME: A Single Test";
assert_line "INPUT_COMMIT_USER_EMAIL: single-test@github.com";
assert_line "INPUT_COMMIT_AUTHOR: A Single Test <single@users.noreply.github.com>";
assert_line "::debug::Push commit to remote branch master"
# Asser last commit was made by the defined user/author
run git log -1 --pretty=format:'%ae'
assert_output --partial "single@users.noreply.github.com"
run git log -1 --pretty=format:'%an'
assert_output --partial "A Single Test"
run git log -1 --pretty=format:'%cn'
assert_output --partial "A Single Test"
run git log -1 --pretty=format:'%ce'
assert_output --partial "single-test@github.com"
}
@test "It creates a tag with the commit" {
INPUT_TAGGING_MESSAGE="v1.0.0"
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt
run git_auto_commit
assert_success
assert_line "INPUT_TAGGING_MESSAGE: v1.0.0"
assert_line "::debug::Create tag v1.0.0"
assert_line "::debug::Push commit to remote branch master"
# Assert a tag v1.0.0 has been created
run git tag
assert_output v1.0.0
run git ls-remote --tags --refs
assert_output --partial refs/tags/v1.0.0
}
@test "It applies INPUT_PUSH_OPTIONS when pushing commit to remote" {
touch "${FAKE_TEMP_LOCAL_REPOSITORY}"/newer-remote-files{1,2,3}.txt
cd "${FAKE_TEMP_LOCAL_REPOSITORY}";
git add .;
git commit --quiet -m "Add more remote files";
git push origin master;
INPUT_PUSH_OPTIONS="--force"
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt
run git_auto_commit
assert_success
assert_line "INPUT_PUSH_OPTIONS: --force"
assert_line "::debug::Apply push options --force"
assert_line "::debug::Push commit to remote branch master"
# 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 can checkout a different branch" {
# Create foo-branch and then immediately switch back to master
git checkout -b foo
git checkout master
INPUT_BRANCH="foo"
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt
run git_auto_commit
assert_success
assert_line "INPUT_BRANCH value: foo"
assert_line "::debug::Push commit to remote branch foo"
# Assert a new branch "foo" exists on remote
run git ls-remote --heads
assert_output --partial refs/heads/foo
}
@test "It uses existing branch name when pushing when INPUT_BRANCH is empty" {
INPUT_BRANCH=""
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt
run git_auto_commit
assert_success
assert_line "INPUT_BRANCH value: "
assert_line --partial "::debug::git push origin"
# 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 uses existing branch when INPUT_BRANCH is empty and INPUT_TAGGING_MESSAGE is set" {
INPUT_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::git push origin --tags"
# 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
}
@test "If SKIP_FETCH is true git-fetch will not be called" {
touch "${FAKE_LOCAL_REPOSITORY}"/new-file-{1,2,3}.txt
INPUT_SKIP_FETCH=true
run git_auto_commit
assert_success
assert_line "::debug::git-fetch has not been executed"
}

16
yarn.lock Normal file
View File

@@ -0,0 +1,16 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
bats-assert@ztombol/bats-assert:
version "0.3.0"
resolved "https://codeload.github.com/ztombol/bats-assert/tar.gz/9f88b4207da750093baabc4e3f41bf68f0dd3630"
bats-support@ztombol/bats-support:
version "0.3.0"
resolved "https://codeload.github.com/ztombol/bats-support/tar.gz/004e707638eedd62e0481e8cdc9223ad471f12ee"
bats@^1.1.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/bats/-/bats-1.2.1.tgz#c15aecc3eb331aedf28678880fab2be0b73eba43"
integrity sha512-2fcPDRQa/Kvh6j1IcCqsHpT5b9ObMzRzw6abC7Bg298PX8Qdh9VRkvO2WJUEhdyfjq2rLBCOAWdcv0tS4+xTUA==