r-lib / gert

Simple git client for R
https://docs.ropensci.org/gert/
Other
148 stars 32 forks source link

"SecureTransport error" in pr_push() #142

Open dwachsmuth opened 3 years ago

dwachsmuth commented 3 years ago

Using the standard usethis PR workflow, I have a PR I am trying to wrap up with pr_push, and am encountering an error I have never seen before, and can't figure out how to get around.

> pr_push()
✓ Pushing local 'dw_fast' branch to 'origin' remote
Error in libgit2::git_remote_push : SecureTransport error: I/O error.

The git_sitrep is as follows:

> git_sitrep()
Git config (global)
● Name: 'David Wachsmuth'
● Email: 'david.wachsmuth@mcgill.ca'
● Vaccinated: TRUE
● Default Git protocol: 'https'
GitHub
● Default GitHub host: 'https://github.com'
● Personal access token for 'https://github.com': '<discovered>'
● GitHub user: 'dwachsmuth'
● Token scopes: 'admin:org, admin:org_hook, admin:public_key, admin:repo_hook, notifications, repo, user, workflow, write:discussion'
● Email(s): 'david.wachsmuth@mcgill.ca (primary)', '41338507+dwachsmuth@users.noreply.github.com'
Git repo for current project
● Active usethis project: '/Users/dwachsmuth/Documents/Academic/Code/Sus-MSSI'
● Default branch: 'main'
● Current local branch -> remote tracking branch:
  'dw_fast' -> '<unset>'
GitHub remote configuration
● Type = 'ours'
● Host = 'https://github.com'
● Config supports a pull request = TRUE
● origin = 'ttuff/SUS2020' (can push)
● upstream = <not configured>
● Desc = 'origin' is both the source and primary repo.

  Read more about the GitHub remote configurations that usethis supports at:
  'https://happygitwithr.com/common-remote-setups.html'

I'm not sure whose error this actually is (I don't have a libgit2 R library, although maybe the libgit2::git_remote_push somehow lives in git2r?), but any guidance would be appreciated.

jennybc commented 3 years ago

This is coming from the gert package, which wraps the libgit2 library.

Maybe @jeroen recognizes it? But I suspect this doesn't have anything to do with usethis.

jeroen commented 3 years ago

Are you able to clone other repos from github? E.g.

gert::git_clone("https://github.com/r-lib/gert")

If not, are you using a very old version of MacOS perhaps? Or are you on a network that requires proxy servers? Please include your sessionInfo().

dwachsmuth commented 3 years ago

git_clone works just fine, and, to be clear, pr_push has always worked fine for me in the past. I'm on a more-or-less up-to-date version of Big Sur.

> sessionInfo()
R version 4.0.3 (2020-10-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 10.16

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib

locale:
[1] en_CA.UTF-8/en_CA.UTF-8/en_CA.UTF-8/C/en_CA.UTF-8/en_CA.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] devtools_2.3.2 usethis_2.0.1 

loaded via a namespace (and not attached):
 [1] tidyselect_1.1.0   remotes_2.2.0      purrr_0.3.4        waiter_0.2.0       vctrs_0.3.6        generics_0.1.0    
 [7] testthat_3.0.2     htmltools_0.5.1.1  yaml_2.2.1         utf8_1.1.4         blob_1.2.1         rlang_0.4.10      
[13] pkgbuild_1.2.0     gert_1.2.0         later_1.1.0.1      pillar_1.5.0       glue_1.4.2         withr_2.4.1       
[19] DBI_1.1.1          bit64_4.0.5        sessioninfo_1.1.1  lifecycle_1.0.0    stringr_1.4.0      memoise_2.0.0     
[25] callr_3.5.1        fastmap_1.1.0      httpuv_1.5.5       ps_1.5.0           sys_3.4            shinyWidgets_0.5.7
[31] fansi_0.4.2        Rcpp_1.0.6         xtable_1.8-4       openssl_1.4.3      promises_1.2.0.1   cachem_1.0.4      
[37] shiny.i18n_0.2.0   desc_1.2.0         pkgload_1.2.0      jsonlite_1.7.2     mime_0.10          fs_1.5.0          
[43] bit_4.0.4          credentials_1.3.0  askpass_1.1        png_0.1-7          hms_1.0.0          digest_0.6.27     
[49] stringi_1.5.3      processx_3.4.5     dplyr_1.0.4        shiny_1.6.0        rprojroot_2.0.2    cli_2.3.1         
[55] tools_4.0.3        magrittr_2.0.1     tibble_3.1.0       crayon_1.4.1       tidyr_1.1.2        pkgconfig_2.0.3   
[61] ellipsis_0.3.1     prettyunits_1.1.1  lubridate_1.7.9.2  assertthat_0.2.1   RPostgres_1.3.1    R6_2.5.0          
[67] units_0.6-7        compiler_4.0.3    
hadley commented 3 years ago

@dwachsmuth are you still seeing the failure?

jennybc commented 3 years ago

I'm transferring this to gert.

dwachsmuth commented 3 years ago

Sorry for the radio silence. I have encountered this same error on another project. One potential common context is that in both cases the PR that is causing the error has a lot of files, some of which are large-ish binaries.

Aariq commented 2 years ago

Just encountered this problem as well. gert::git_clone() works fine and usethis::pr_push() has worked in the past. Here's my sessionInfo

> sessionInfo()
R version 4.2.0 (2022-04-22)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Monterey 12.4

Matrix products: default
LAPACK: /Library/Frameworks/R.framework/Versions/4.2/Resources/lib/libRlapack.dylib

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods  
[7] base     

loaded via a namespace (and not attached):
 [1] digest_0.6.29    R6_2.5.1         lifecycle_1.0.1 
 [4] evaluate_0.14    scales_1.2.0     rlang_1.0.2     
 [7] cli_3.3.0        renv_0.15.4      rmarkdown_2.11  
[10] tools_4.2.0      munsell_0.5.0    xfun_0.29       
[13] yaml_2.2.1       fastmap_1.1.0    compiler_4.2.0  
[16] colorspace_2.0-3 htmltools_0.5.2  knitr_1.36      
jeroen commented 2 years ago

This is probably a side effect of something being rejected by the server. Are you seeing any helpful output messages? Does it errpr immediately or after some transferring?

Aariq commented 2 years ago

It takes some time for the error to display. So, yeah, I imagine it is trying to send something and having it get rejected, but I'm not getting any helpful error message, just the Error in libgit2::git_remote_push : SecureTransport error: I/O error.

jeroen commented 2 years ago

Does your commit contain new files over 100mb? So if you use command line git push the error does not appear?

Aariq commented 2 years ago

It doesn't have any new files or big diffs. git push worked fine.

jeroen commented 2 years ago

Do you have a public git repo that I can use to reproduce this problem? Or does it happen for any git repo?