Notes on setting up this GitHub repository, including R command history.

Initial Setup

Create the GitHub repository from the RStudio console, with no project open: “Project: (none)”

create_github_repo(
  "siracon2022",
  repo_desc = 'Notebooks for my SiRAcon 2022 presentation, "Making R work for you (with automation!)"'
)

On macOS, the automation will open the repository in GitHub Desktop, RStudio, and open the repository settings on github.com in the default browser.

Package Setup

Set up the package as an R Analysis Package. First run rdev::use_rdev_package() to add the common package conventions I use.

The remaining commands are run from the RStudio console with the new project open: “siracon2022”

gert::git_branch_create("package-setup")
gert::git_add(".")
gert::git_commit("rdev::create_github_repo()")
gert::git_push()
rdev::use_rdev_package()

After rdev::use_rdev_package() is run, the R Session will automatically restart after renv::init() completes.

To complete setup, commands are run to:

  1. Change the package to the R Analysis Package format
  2. Add spell checks
  3. Delete test-package.R (which is no longer needed)
  4. Check dependencies, tests, and continuous integration
  5. Open key files for editing in RStudio
gert::git_add(".")
gert::git_commit("rdev::use_rdev_package()")
gert::git_push()
# 1
use_analysis_package()
gert::git_add(".")
gert::git_commit("rdev::use_analysis_package()")
gert::git_push()
# 2
use_spelling()
gert::git_add(".")
gert::git_commit("rdev::use_spelling()")
gert::git_push()
# 3
fs::file_delete("tests/testthat/test-package.R")
gert::git_add(".")
gert::git_commit("remove obsolete test-package.R")
gert::git_push()
# 4
check_renv()
test()
ci()
# 5
file.edit("TODO.md", "NEWS.md", "README.Rmd", "DESCRIPTION", ".gitignore")

Manual Updates

Final package setup is done manually. A summary of git commits is listed in the table below.

Commit Summary
Update .gitignore Add line breaks (not automated yet)
Fix spell_check_notebooks() test Fix a bug in tests/testthat/test-spelling.R (also fixed in rdev)
renv::update() Save updated packages after running rdev::check_renv and renv::snapshot
Update DESCRIPTION Update Title and Description. Also add fs, purrr from README.Rmd to Suggests (also fixed in rdev).
Add SiRAcon 2022 Setup Log Notebook Added SiRAcon 2022 Setup Log Notebook
renv::update() Update rdev package (with new bug fixes)
Add siracon2022 0.1.0 release notes Add release notes for initial development release
Final setup-log updates Add final updates to setup-log.Rmd before release
Switch from HEAD to default branch renv works better with the RemoteRef in renv.lock set to the default branch. To fix this, I ran renv::install(c("r-lib/lintr","jabenninghoff/rdev")).

Since stage_release() calls build_analysis_site(), which currently requires at least one notebook in the analysis directory, we add the first notebook before running the release automation scripts:

get_release()
stage_release()
# validate that all pull request checks (GitHub Actions) pass
merge_release()

The automation scripts automatically create the release and GitHub pages site, including the following commits:

  • GitHub release 0.1.0
  • build_analysis_site() for release 0.1.0

The site can now be accessed at https://jabenninghoff.github.io/siracon2022/ !

Continue Development

From here, we continue development and release as needed. The first step is to create a new branch:

new_branch("analysis-updates")

Feel free to browse the commit history to see progress towards the 1.0 release prior to SiRAcon.

LS0tCnRpdGxlOiBTaVJBY29uIDIwMjIgU2V0dXAgTG9nCmF1dGhvcjogSm9obiBCZW5uaW5naG9mZgpkYXRlOiAnMjAyMi0wNC0yNCcKZGF0ZS1tb2RpZmllZDogJzIwMjItMDQtMzAnCmNhdGVnb3JpZXM6IFtdCm9yZGVyOiB+Cm91dHB1dDoKICBodG1sX2RvY3VtZW50OgogICAgdGhlbWU6CiAgICAgIHZlcnNpb246IDUKICAgICAgcHJlc2V0OiBib290c3RyYXAKICAgIGNzczogYXNzZXRzL2V4dHJhLmNzcwogICAgcGFuZG9jX2FyZ3M6IC0tc2hpZnQtaGVhZGluZy1sZXZlbC1ieT0xCiAgICB0b2M6IHllcwogICAgdG9jX2Zsb2F0OgogICAgICBjb2xsYXBzZWQ6IG5vCiAgICAgIHNtb290aF9zY3JvbGw6IG5vCi0tLQoKTm90ZXMgb24gc2V0dGluZyB1cCB0aGlzIEdpdEh1YiByZXBvc2l0b3J5LCBpbmNsdWRpbmcgUiBjb21tYW5kIGhpc3RvcnkuCgojIEluaXRpYWwgU2V0dXAKCkNyZWF0ZSB0aGUgR2l0SHViIHJlcG9zaXRvcnkgZnJvbSB0aGUgUlN0dWRpbyBjb25zb2xlLCB3aXRoIG5vIHByb2plY3Qgb3BlbjogKiJQcm9qZWN0OiAobm9uZSkiKgoKYGBgcgpjcmVhdGVfZ2l0aHViX3JlcG8oCiAgInNpcmFjb24yMDIyIiwKICByZXBvX2Rlc2MgPSAnTm90ZWJvb2tzIGZvciBteSBTaVJBY29uIDIwMjIgcHJlc2VudGF0aW9uLCAiTWFraW5nIFIgd29yayBmb3IgeW91ICh3aXRoIGF1dG9tYXRpb24hKSInCikKYGBgCgpPbiBtYWNPUywgdGhlIGF1dG9tYXRpb24gd2lsbCBvcGVuIHRoZSByZXBvc2l0b3J5IGluIEdpdEh1YiBEZXNrdG9wLCBSU3R1ZGlvLCBhbmQgb3BlbiB0aGUKcmVwb3NpdG9yeSBzZXR0aW5ncyBvbiBnaXRodWIuY29tIGluIHRoZSBkZWZhdWx0IGJyb3dzZXIuCgojIFBhY2thZ2UgU2V0dXAKClNldCB1cCB0aGUgcGFja2FnZSBhcyBhbgpbUiBBbmFseXNpcyBQYWNrYWdlXShodHRwczovL2phYmVubmluZ2hvZmYuZ2l0aHViLmlvL3JkZXYvYXJ0aWNsZXMvYW5hbHlzaXMtcGFja2FnZS1sYXlvdXQuaHRtbCkuCkZpcnN0IHJ1biBgcmRldjo6dXNlX3JkZXZfcGFja2FnZSgpYCB0byBhZGQgdGhlIGNvbW1vbiBwYWNrYWdlIGNvbnZlbnRpb25zIEkgdXNlLgoKVGhlIHJlbWFpbmluZyBjb21tYW5kcyBhcmUgcnVuIGZyb20gdGhlIFJTdHVkaW8gY29uc29sZSB3aXRoIHRoZSBuZXcgcHJvamVjdCBvcGVuOiAqInNpcmFjb24yMDIyIioKCmBgYHIKZ2VydDo6Z2l0X2JyYW5jaF9jcmVhdGUoInBhY2thZ2Utc2V0dXAiKQpnZXJ0OjpnaXRfYWRkKCIuIikKZ2VydDo6Z2l0X2NvbW1pdCgicmRldjo6Y3JlYXRlX2dpdGh1Yl9yZXBvKCkiKQpnZXJ0OjpnaXRfcHVzaCgpCnJkZXY6OnVzZV9yZGV2X3BhY2thZ2UoKQpgYGAKCkFmdGVyIGByZGV2Ojp1c2VfcmRldl9wYWNrYWdlKClgIGlzIHJ1biwgdGhlIFIgU2Vzc2lvbiB3aWxsIGF1dG9tYXRpY2FsbHkgcmVzdGFydCBhZnRlcgpgcmVudjo6aW5pdCgpYCBjb21wbGV0ZXMuCgpUbyBjb21wbGV0ZSBzZXR1cCwgY29tbWFuZHMgYXJlIHJ1biB0bzoKCjEuIENoYW5nZSB0aGUgcGFja2FnZSB0byB0aGUgUiBBbmFseXNpcyBQYWNrYWdlIGZvcm1hdAoyLiBBZGQgc3BlbGwgY2hlY2tzCjMuIERlbGV0ZSB0ZXN0LXBhY2thZ2UuUiAod2hpY2ggaXMgbm8gbG9uZ2VyIG5lZWRlZCkKNC4gQ2hlY2sgZGVwZW5kZW5jaWVzLCB0ZXN0cywgYW5kIGNvbnRpbnVvdXMgaW50ZWdyYXRpb24KNS4gT3BlbiBrZXkgZmlsZXMgZm9yIGVkaXRpbmcgaW4gUlN0dWRpbwoKYGBgcgpnZXJ0OjpnaXRfYWRkKCIuIikKZ2VydDo6Z2l0X2NvbW1pdCgicmRldjo6dXNlX3JkZXZfcGFja2FnZSgpIikKZ2VydDo6Z2l0X3B1c2goKQojIDEKdXNlX2FuYWx5c2lzX3BhY2thZ2UoKQpnZXJ0OjpnaXRfYWRkKCIuIikKZ2VydDo6Z2l0X2NvbW1pdCgicmRldjo6dXNlX2FuYWx5c2lzX3BhY2thZ2UoKSIpCmdlcnQ6OmdpdF9wdXNoKCkKIyAyCnVzZV9zcGVsbGluZygpCmdlcnQ6OmdpdF9hZGQoIi4iKQpnZXJ0OjpnaXRfY29tbWl0KCJyZGV2Ojp1c2Vfc3BlbGxpbmcoKSIpCmdlcnQ6OmdpdF9wdXNoKCkKIyAzCmZzOjpmaWxlX2RlbGV0ZSgidGVzdHMvdGVzdHRoYXQvdGVzdC1wYWNrYWdlLlIiKQpnZXJ0OjpnaXRfYWRkKCIuIikKZ2VydDo6Z2l0X2NvbW1pdCgicmVtb3ZlIG9ic29sZXRlIHRlc3QtcGFja2FnZS5SIikKZ2VydDo6Z2l0X3B1c2goKQojIDQKY2hlY2tfcmVudigpCnRlc3QoKQpjaSgpCiMgNQpmaWxlLmVkaXQoIlRPRE8ubWQiLCAiTkVXUy5tZCIsICJSRUFETUUuUm1kIiwgIkRFU0NSSVBUSU9OIiwgIi5naXRpZ25vcmUiKQpgYGAKCiMgTWFudWFsIFVwZGF0ZXMKCkZpbmFsIHBhY2thZ2Ugc2V0dXAgaXMgZG9uZSBtYW51YWxseS4gQSBzdW1tYXJ5IG9mIGdpdCBjb21taXRzIGlzIGxpc3RlZCBpbiB0aGUgdGFibGUgYmVsb3cuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNvbW1pdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN1bW1hcnkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVcGRhdGUgLmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgICBBZGQgbGluZSBicmVha3MgKG5vdCBhdXRvbWF0ZWQgeWV0KQoKRml4IHNwZWxsX2NoZWNrX25vdGVib29rcygpIHRlc3QgICAgRml4IGEgYnVnIGluIHRlc3RzL3Rlc3R0aGF0L3Rlc3Qtc3BlbGxpbmcuUiAoYWxzbyBmaXhlZCBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmRldl0oaHR0cHM6Ly9naXRodWIuY29tL2phYmVubmluZ2hvZmYvcmRldi9jb21taXQvOWY4MTZjMzc4YzY5MmI2OTlhNGY2YWU4ZmJlOWNhMzhlMWM0YjgzOCkpCgpyZW52Ojp1cGRhdGUoKSAgICAgICAgICAgICAgICAgICAgICBTYXZlIHVwZGF0ZWQgcGFja2FnZXMgYWZ0ZXIgcnVubmluZyBgcmRldjo6Y2hlY2tfcmVudmAgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGByZW52OjpzbmFwc2hvdGAKClVwZGF0ZSBERVNDUklQVElPTiAgICAgICAgICAgICAgICAgIFVwZGF0ZSBUaXRsZSBhbmQgRGVzY3JpcHRpb24uIEFsc28gYWRkIGZzLCBwdXJyciBmcm9tIFJFQURNRS5SbWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gU3VnZ2VzdHMgKGFsc28gZml4ZWQgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JkZXZdKGh0dHBzOi8vZ2l0aHViLmNvbS9qYWJlbm5pbmdob2ZmL3JkZXYvY29tbWl0LzEwNTMyOWExZjRhMjc1MjEzMWNhZjc5NjVlNzg1N2Y0OGRlZWVmMTcpKS4KCkFkZCBTaVJBY29uIDIwMjIgU2V0dXAgTG9nIE5vdGVib29rIEFkZGVkIFNpUkFjb24gMjAyMiBTZXR1cCBMb2cgTm90ZWJvb2sKCnJlbnY6OnVwZGF0ZSgpICAgICAgICAgICAgICAgICAgICAgIFVwZGF0ZSByZGV2IHBhY2thZ2UgKHdpdGggbmV3IGJ1ZyBmaXhlcykKCkFkZCBzaXJhY29uMjAyMiAwLjEuMCByZWxlYXNlIG5vdGVzIEFkZCByZWxlYXNlIG5vdGVzIGZvciBpbml0aWFsIGRldmVsb3BtZW50IHJlbGVhc2UKCkZpbmFsIHNldHVwLWxvZyB1cGRhdGVzICAgICAgICAgICAgIEFkZCBmaW5hbCB1cGRhdGVzIHRvIHNldHVwLWxvZy5SbWQgYmVmb3JlIHJlbGVhc2UKClN3aXRjaCBmcm9tIEhFQUQgdG8gZGVmYXVsdCBicmFuY2ggIHJlbnYgd29ya3MgYmV0dGVyIHdpdGggdGhlIFJlbW90ZVJlZiBpbiByZW52LmxvY2sgc2V0IHRvIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGJyYW5jaC4gVG8gZml4IHRoaXMsIEkgcmFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGByZW52OjppbnN0YWxsKGMoInItbGliL2xpbnRyIiwiamFiZW5uaW5naG9mZi9yZGV2IikpYC4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKU2luY2UgYHN0YWdlX3JlbGVhc2UoKWAgY2FsbHMgYGJ1aWxkX2FuYWx5c2lzX3NpdGUoKWAsIHdoaWNoIGN1cnJlbnRseSByZXF1aXJlcyBhdCBsZWFzdCBvbmUKbm90ZWJvb2sgaW4gdGhlIGFuYWx5c2lzIGRpcmVjdG9yeSwgd2UgYWRkIHRoZSBmaXJzdCBub3RlYm9vayBiZWZvcmUgcnVubmluZyB0aGUgcmVsZWFzZSBhdXRvbWF0aW9uCnNjcmlwdHM6CgpgYGByCmdldF9yZWxlYXNlKCkKc3RhZ2VfcmVsZWFzZSgpCiMgdmFsaWRhdGUgdGhhdCBhbGwgcHVsbCByZXF1ZXN0IGNoZWNrcyAoR2l0SHViIEFjdGlvbnMpIHBhc3MKbWVyZ2VfcmVsZWFzZSgpCmBgYAoKVGhlIGF1dG9tYXRpb24gc2NyaXB0cyBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgcmVsZWFzZSBhbmQgR2l0SHViIHBhZ2VzIHNpdGUsIGluY2x1ZGluZyB0aGUKZm9sbG93aW5nIGNvbW1pdHM6CgotIEdpdEh1YiByZWxlYXNlIDAuMS4wCi0gYnVpbGRfYW5hbHlzaXNfc2l0ZSgpIGZvciByZWxlYXNlIDAuMS4wCgpUaGUgc2l0ZSBjYW4gbm93IGJlIGFjY2Vzc2VkIGF0IDxodHRwczovL2phYmVubmluZ2hvZmYuZ2l0aHViLmlvL3NpcmFjb24yMDIyLz4gIQoKIyBDb250aW51ZSBEZXZlbG9wbWVudAoKRnJvbSBoZXJlLCB3ZSBjb250aW51ZSBkZXZlbG9wbWVudCBhbmQgcmVsZWFzZSBhcyBuZWVkZWQuIFRoZSBmaXJzdCBzdGVwIGlzIHRvIGNyZWF0ZSBhIG5ldyBicmFuY2g6CgpgYGByCm5ld19icmFuY2goImFuYWx5c2lzLXVwZGF0ZXMiKQpgYGAKCkZlZWwgZnJlZSB0byBicm93c2UgdGhlIFtjb21taXQgaGlzdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL2phYmVubmluZ2hvZmYvc2lyYWNvbjIwMjIvY29tbWl0cy9tYWluKQp0byBzZWUgcHJvZ3Jlc3MgdG93YXJkcyB0aGUgMS4wIHJlbGVhc2UgcHJpb3IgdG8gU2lSQWNvbi4K