From ef2ec19a0369f5ee684b63e9acfce1034da3624a Mon Sep 17 00:00:00 2001 From: Eliot McIntire Date: Fri, 17 Oct 2025 16:39:37 -0700 Subject: [PATCH 1/2] git branches missing if there are LOTS of branches --- DESCRIPTION | 4 ++-- R/Require-helpers.R | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index a8dd7a3e..b8f517ab 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,8 +1,8 @@ Type: Package Package: Require Title: Installing and Loading R Packages for Reproducible Workflows -Version: 1.0.1.9020 -Date: 2025-07-16 +Version: 1.0.1.9021 +Date: 2025-10-17 Authors@R: c( person("Eliot J B", "McIntire", , "eliot.mcintire@canada.ca", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-6914-8316")), diff --git a/R/Require-helpers.R b/R/Require-helpers.R index c75ee29b..f3147301 100644 --- a/R/Require-helpers.R +++ b/R/Require-helpers.R @@ -937,7 +937,7 @@ getSHAfromGitHub <- function(acct, repo, br, verbose = getOption("Require.verbos return(br) } - gitRefsURL <- file.path(apiGithubDotCom, "repos", acct, repo, "git", "refs") + gitRefsURLOrig <- file.path(apiGithubDotCom, "repos", acct, repo, "git", "refs") if (missing(br)) { br <- "main" } @@ -951,6 +951,7 @@ getSHAfromGitHub <- function(acct, repo, br, verbose = getOption("Require.verbos } for (ii in 1:4) { + gitRefsURL <- paste0(gitRefsURLOrig, paste0("?per_page=100&page=", ii)) tf <- file.path(RequireGitHubCacheDir(), paste0("listOfRepos_", acct, "@", repo)) downloadNow <- TRUE if (file.exists(tf)) { @@ -1007,15 +1008,13 @@ getSHAfromGitHub <- function(acct, repo, br, verbose = getOption("Require.verbos if (length(br2) > 0) br <- br2 else { - gitRefsURL <- paste0(gitRefsURL, paste0("?per_page=100&page=", ii)) + gitRefsURL <- paste0(gitRefsURLOrig, paste0("?per_page=100&page=", ii)) unlink(tf) next } # br2 <- grep(unlist(gitRefsSplit2), pattern = "api.+heads/(master|main)", value = TRUE) # br <- gsub(br2, pattern = ".+api.+heads.+(master|main).+", replacement = "\\1") - } else { - } for (branch in br) { # will be length 1 in most cases except master/main From 1e08d6d244453419de83b86b52aabc0a2aa417d8 Mon Sep 17 00:00:00 2001 From: Eliot McIntire Date: Thu, 27 Nov 2025 15:23:01 -0800 Subject: [PATCH 2/2] deal with whereInStack changes --- R/helpers.R | 10 ++++++++-- R/pkgDep3.R | 12 +++++++----- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/R/helpers.R b/R/helpers.R index 3f62bd5a..13888be6 100644 --- a/R/helpers.R +++ b/R/helpers.R @@ -564,13 +564,19 @@ setdiffNamed <- function(l1, l2, missingFill) { } whereInStack <- function(obj) { - for (i in 1:sys.nframe()) { + nframes <- sys.nframe() + for (i in 1:nframes) { fn <- get0(obj, sys.frame(-i), inherits = FALSE) if (!is.null(fn)) { break } } - return(sys.frame(-i)) + if (is.null(fn)) { + ret <- NULL + } else { + ret <- sys.frame(-i) + } + return(ret) } getInStack <- function(obj) { diff --git a/R/pkgDep3.R b/R/pkgDep3.R index 09722606..2bde12e4 100644 --- a/R/pkgDep3.R +++ b/R/pkgDep3.R @@ -118,11 +118,13 @@ pkgDep <- function(packages, purge <- purgePkgDep(purge) # purge <- dealWithCache(purge) - if (is.null(get0("stRequire", whereInStack("stRequire")))) { # if this is NOT called from Require - on.exit( - checkAutomaticOfflineMode() # This will turn off offlineMode if it had been turned on automatically - ) - } + stRequireEnv <- whereInStack("stRequire") + if (!is.null(stRequireEnv)) + if (is.null(get0("stRequire", stRequireEnv))) { # if this is NOT called from Require + on.exit( + checkAutomaticOfflineMode() # This will turn off offlineMode if it had been turned on automatically + ) + } # deps <- packages if (!includeBase) {