ghactions (version 0.4.1)

auto_commit: Automatically commit changes

Description

Automatically commit any changes made be development helper packages.

Check whether some code will cause changes to git status in the working directory.

Usage

auto_commit(after_code = NULL, ...)

check_clean_tree(code = NULL, path = getwd(), before_code = NULL)

Arguments

after_code

[character(1)] Giving what happens when the working tree is unclean after code is evaluated:

  • NULL to throw an error or

  • "commit" to commit the changes. Defaults to NULL, which just thinly wraps check_clean_tree().

...

Arguments passed on to check_clean_tree

code

The code to execute. Defaults to NULL.

path

The directory in which to execute the code. Defaults to getwd().

before_code

[character(1)] Giving what happens when the working tree is already unclean before code is evaluated:

  • NULL (recommended default), in which case if is.act(), then "commit", otherwise throw an error.

  • "stash" to git stash push all changes before, and git stash pop them after code is run (not recommended).

  • "commit" to git add .; git commit -m "commit to cleanup" all changes before codeis run and git reset HEAD them after code is run (not recommended).

code

The code to execute. Defaults to NULL.

path

The directory in which to execute the code. Defaults to getwd().

before_code

[character(1)] Giving what happens when the working tree is already unclean before code is evaluated:

  • NULL (recommended default), in which case if is.act(), then "commit", otherwise throw an error.

  • "stash" to git stash push all changes before, and git stash pop them after code is run (not recommended).

  • "commit" to git add .; git commit -m "commit to cleanup" all changes before codeis run and git reset HEAD them after code is run (not recommended).

Value

[list()] of lists of git command feedback or [NULL] when there were no changes (invisible).

[character(1)] The git status results or TRUE if no diffs.

Details

This function will commit all changes caused by code to the repository. Running this in CI/CD can save some time, but can also cause unexpected behavior and pollute the commit history with derivative changes.

The contents of path will be copied to a temporary directory, where a git repository will be initiated and the code will be executed. There will never be any changes to path. If path or its subdirectories contain a .gitignore, it will be respected.

This function is modelled checkmate.