From 04848ade692a3a3bb08f22fb1ec04294624c501e Mon Sep 17 00:00:00 2001 From: John Muschelli Date: Fri, 3 Dec 2021 14:08:16 +0000 Subject: [PATCH 1/5] full SHA is the default - but prints out the subset --- R/package-info.R | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/R/package-info.R b/R/package-info.R index 09487c5..6ab6851 100644 --- a/R/package-info.R +++ b/R/package-info.R @@ -114,7 +114,7 @@ pkg_source <- function(desc) { str <- paste0("Github (", desc$GithubUsername, "/", desc$GithubRepo, "@", - substr(desc$GithubSHA1, 1, 7), ")") + desc$GithubSHA1, ")") } else if (!is.null(desc$RemoteType) && desc$RemoteType == "standard") { if (!is.null(desc$Repository) && desc$Repository == "CRAN") { pkg_source_cran(desc) @@ -144,7 +144,7 @@ pkg_source <- function(desc) { } if (!is.null(desc$RemoteSha)) { - sha <- paste0("@", substr(desc$RemoteSha, 1, 7)) + sha <- paste0("@", desc$RemoteSha) } else { sha <- NULL } @@ -220,6 +220,27 @@ pkg_md5_disk <- function(pkgdir) { order_by_name(structure(unname(md5_files), names = tolower(dll_files))) } +subset_sha_source <- function(x) { + src <- x$source + sha_regex <- ".*/(.*@.*)\\)" + has_sha <- grepl(sha_regex, src) + src <- src[has_sha] + if (any(has_sha)) { + sub_src <- sub(sha_regex, "\\1", src) + sha <- sub(".*@", "", sub_src) + sha <- substr(sha, 1, 7) + sha <- mapply(function(orig, replacement) { + sub("@(.*)", paste0("@", replacement), x = orig) + }, sub_src, sha) + src <- mapply(function(orig, replacement) { + sub("(.*)/(.*@.*)\\)", paste0("\\1", "/", replacement, ")"), x = orig) + }, src, sha) + src <- unname(src) + x$source[has_sha] <- src + } + x +} + #' @export format.packages_info <- function(x, ...) { @@ -227,6 +248,8 @@ format.packages_info <- function(x, ...) { unloaded <- is.na(x$loadedversion) flib <- function(x) ifelse(is.na(x), "?", as.integer(x)) + # Fix opposed to https://github.com/r-lib/sessioninfo/pull/59 + x <- subset_sha_source(x) px <- data.frame( package = x$package, "*" = ifelse(x$attached, "*", ""), From c632e0b0ef18d59eb7939d8bc73680aade5e5b89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Cs=C3=A1rdi?= Date: Sat, 4 Dec 2021 22:51:16 +0100 Subject: [PATCH 2/5] Fix tests on Unix --- tests/testthat/fixtures/devtools-info-unix.rda | Bin 991 -> 1139 bytes tests/testthat/test-package-info.R | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/fixtures/devtools-info-unix.rda b/tests/testthat/fixtures/devtools-info-unix.rda index e9d3f37b9b8908ffaac26d689b1a7f06ba2cc6bd..eb7e871326fdcafc05ca4f7aa71a9d40532d9bb2 100644 GIT binary patch literal 1139 zcmV-(1dRJ1iwFP!000001MOH_Z{tK1&Zg-tRnbbkfV5i5MW{U3nVWA9pj0d11@@r= z#9K8tC*C-j$aY%#w!a*hY&?#~ZmbrmDesA!i-|HXf z%Y#q#-f^KCpm(azLz?F@D~c&CO5~JLK3l4+$V=deC52j=)*+{9nweWXqxWi2 zwg!BarRDXpkZd)XOLI%eoR`-pLf#fir4_$OCNekf4<|{14F6zS6z2NmU9J{sQW(nP zxtyycuRP3?%GF(Ra8{BGsR_||5dj8*S<+brf#ksBc~Fa7)4NsVpc(lCNPBdsmKN<2 zZN2zgFW5o$sQ0=3Sh@XX^t;xEd^DjuNJiO>UOf4zr5a!Fwr%RkMTco!X};KP zSJ$8pI!m2ici3%p>&x9%wxV^=)wJ%bE-Om~JBDHDV@Fo%%GnWKO;bCz3(9{ z1h#lc3&G8JP|!p`o2P|#g;7k4J$)U!_Wyfs4yu>0+XOo60w|*wlsb+pF%L7K#n}S6eP)n{h z2qPR*#0iGJ=XpE`X#hEnWE^5qMRa9Irc|WzzN#2w%3$D2KZ>}FVHm`cd6-}d8Hjik zGE6841Ph;%R@92Tbh@q<<1nUV9brfaL4*Vn$~d4%AQ3{}k9>)U=K%zt;1ECI8KG82 z%CwpiFb*kYK41VdodX0>7($6XLL|mW_&~^*dngvZAsV-d))itLfe5q6hfI%7G7*v3 zj}VA?00NGXe)O@x$j8-l{3J?Eic5zl)Y z$$#;@$Dse=T)s7@@>c47(?(GGCHnc!I#?R~F#0878O`oTKV@_-?^HI^W!#NTWAuma zo~T7W!mc;EmbqGG`ZW(&pG(paV zr)H+t!{a{9)SX)&%>Luxvwj?0C%^wsW3Hc<6DPk(7O^sv`nl50bY4%ue*x9Ki1N}E F007E-H~Rnp literal 991 zcmV<510eh#iwFP!000001MOJLkJC6D4t>m{qd`bqKtfA-9EL*@$7$2{f{Kvf0vtxL z+S|xU+&0s+u55Q^=eB=2i%aa(PN+4r(jcwWN@?RSpMS5!-_Olo9mjDRPP6^MX*9)Y z^Rf6k5yvBOJaJmivH0yE#xUi4hPXtIW0cHSgmNZ|(6<#u?VmVsPr|~+=Q*~L4bAr~A@4oJXn@R9w2Ggs9*;l<{?% z5wyybt?OCF=2!*UzRviJR%+Y^9`t}31Rn7E+Q3!bI-4uN8v&qkLl4S96M8+}2HZ{y z%xNbAfhKeSyhwoCQ7|kc5(c0!p|P8R?kXsmO)YX^-YX*q)yRK=)U$(HS%gct^%8Bp zgf29*-q-eb)%LajO=tu2rzj>gVTh)gPcOvcVSY_DUhU>q^`vW|>Pqu`H&53fi#bD` z{;=@2y7gi=%TzRrIZf+c+E|7PTGBA|(NYy%IW6I7nraEJqPCX0m^y56tSPj`oT=TG z2rH^?F=^_(&7|20p6zCqJ;L(fSG$L0J=OY(B^$HjSe}Pp^`iZn-mmHXn*RT<>CVqJ zegB`|<>!&3{U?DS7`UM427!qLZZOo4&;>&`7}RFzNaTXZg+r4g_C38C64dPUYDid( z2M($TsN1O_U|2;A?;>Uanpp(U4eOS}TOfVY4sb!gR@JChv4L6Vo>{|!11k6J;rsJ< zU%F@K-EgzDesg;iDD+uQL>uUyeMZYE`8vbz5ik0}_{%%{Oal!S`ud|-F6+2^rmrNa z`QvmlgrhzxeJd_?OT`}#;sJ<~L~*)`Gec>PZ%Vx%qc|8uIJ!g5u;y3V+(`L&I6*x$ z2<~7nyhD9pEgzY)lHc(Vp*RAu;ythPHsU)Tfl(Nb%Cuj}+oxAs%I_G&AOR`*FHzot zyAzcP_K*0w&qMsPI&})Ad~m-k}9$+f4~VE-!aeqY6X N{{i8G_iqUm0018R@?QV| diff --git a/tests/testthat/test-package-info.R b/tests/testthat/test-package-info.R index 31ee38d..b923658 100644 --- a/tests/testthat/test-package-info.R +++ b/tests/testthat/test-package-info.R @@ -51,7 +51,7 @@ test_that("pkg_source", { expect_identical( pkg_source(descs$debugme), - "Github (gaborcsardi/debugme@df8295a)" + "Github (gaborcsardi/debugme@df8295a75f8e26bec90386beb1c82b529427029f)" ) expect_identical(pkg_source(descs$curl), "CRAN (R 3.3.3)") From 59ffdf211421cffaa888964fbee52acf9b29962c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Cs=C3=A1rdi?= Date: Sat, 4 Dec 2021 23:04:39 +0100 Subject: [PATCH 3/5] Simplify sha abbreviation --- R/package-info.R | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/R/package-info.R b/R/package-info.R index 6ab6851..36b0026 100644 --- a/R/package-info.R +++ b/R/package-info.R @@ -220,25 +220,8 @@ pkg_md5_disk <- function(pkgdir) { order_by_name(structure(unname(md5_files), names = tolower(dll_files))) } -subset_sha_source <- function(x) { - src <- x$source - sha_regex <- ".*/(.*@.*)\\)" - has_sha <- grepl(sha_regex, src) - src <- src[has_sha] - if (any(has_sha)) { - sub_src <- sub(sha_regex, "\\1", src) - sha <- sub(".*@", "", sub_src) - sha <- substr(sha, 1, 7) - sha <- mapply(function(orig, replacement) { - sub("@(.*)", paste0("@", replacement), x = orig) - }, sub_src, sha) - src <- mapply(function(orig, replacement) { - sub("(.*)/(.*@.*)\\)", paste0("\\1", "/", replacement, ")"), x = orig) - }, src, sha) - src <- unname(src) - x$source[has_sha] <- src - } - x +abbrev_long_sha <- function(x) { + sub("([0-9a-f]{7})[0-9a-f]{33}", "\\1", x) } #' @export @@ -248,15 +231,13 @@ format.packages_info <- function(x, ...) { unloaded <- is.na(x$loadedversion) flib <- function(x) ifelse(is.na(x), "?", as.integer(x)) - # Fix opposed to https://github.com/r-lib/sessioninfo/pull/59 - x <- subset_sha_source(x) px <- data.frame( package = x$package, "*" = ifelse(x$attached, "*", ""), version = ifelse(unloaded, x$ondiskversion, x$loadedversion), "date (UTC)" = x$date, lib = paste0("[", flib(x$library), "]"), - source = x$source, + source = abbrev_long_sha(x$source), stringsAsFactors = FALSE, check.names = FALSE ) From 30ef8fcd4d204ff891168d753267b66f22278f22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Cs=C3=A1rdi?= Date: Sat, 4 Dec 2021 23:25:44 +0100 Subject: [PATCH 4/5] Update test fixture on Windows --- .../fixtures/devtools-info-windows.rda | Bin 983 -> 1129 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/testthat/fixtures/devtools-info-windows.rda b/tests/testthat/fixtures/devtools-info-windows.rda index 03f63c8aee59be6af32c7ee39b0c556d26de648e..3dbf2b1a84138c6a31b218e98a533af59b7100bc 100644 GIT binary patch literal 1129 zcmV-v1eW_BiwFP!000002JKi$Z{s!;_ISzSAjJT4X@NnTE-2E2WNz9HEgTHmUfMYX zZP8o6O|~YoX-IO?{Q0)@Sd>L67Lo!9P#^&miJu<7_xMPDkJg{#Ua!~h4PW(p{egZQ zywU$o^z~X_pZ12mV|^dfJeOHf%xO^~$BgppmCA~|1P)kIsFi7rI8D>cyy6+XQ_He7 z)Aq@S3>5zd_EHLrcf%a_(d|4xp6<5B?U74!+BAd=c5m~TBb>1C=VBM zp_07vut+LzhiWC4d2V7kT3yfBI!T3jt=p-hqI#VvF7y1avfaP*O)4_|>O-cK32vO_ z#abkat`fs_J5Ta!X@VTxCdE8!WCX0I1nw7nO|xa!H*7 z?Ycp`+lfYy4IKd2*Wj)N!zv<8fHXzTdI0OLU}ZU|MXu@HDss?_{2rt|I#f%Gc8PXg z{GAu`HH*e9}^lulL(F_2jI>w5~K??6<3H zPzRl*PM>$!?R4wQ{Z_W3bR_e;x5nfGGJHl(IZAV^g9qw>k zQ|JylTe~|VY^Zt%rLFf}ly)U}yWg^^5giM^Sv@-TQ>(6YjK;1w9qZw~TJ*A~U-tCN zp8o&u>G8)s{q%p&<>z&;_L~F&7&w495ZVZIU|2)2140J|tzLD+cYyDp(6-U%9@0W! zi-)uj+>8eWO$4-gS_lZ6h~-_!tU-Ge5IMNbj30n_HV<%s*UGBj%2;6Mnb4H1Oh3BA-bf0UYW(gFHmcLlHp%Kv8VSzBgomAovJ}_z`o2S{W(R zYD&N~q?Gx90nBs`5JX`JCH4rB7$e~WA!F{LSonr$+9ujmh-m~O%pxB$JvzxmL}EWe zAm#xGI6`{rV}X&6t9kymT!i&CQx=h_4u=ClDdGQRs1LB+i|(ZO)ze;s)93Ls?0>wM zznW8dBlWpyD=7UE{cLX?EDe5`{F1PYW_OdHGP;nrD!bNY+>K3R@`vu8sAWFEt~a@q zxmss>9w+IxS0jiKPxTqNjG>Awro2#_lKXele5t({^OF)hTARC z7;v*JrLe)_iWYMtv0H;0azu-Q^0}-&VI}z$qq~n^f>x)xgY6(qkPG3dYt!rgaUW;u v)~yfb<>TO!ejMB+zyD8Tt)G?)C%;OTu`-l;Ug>r@Zx-Oc8&{l((iH#z8S^kQ literal 983 zcmV;|11S6-iwFP!000002JKkOZ__XwE`99LX$Xl6NE4LDVH}b;PMfwD)M*l2fWric z+vFr}n>DQ~+uhhd54hA$?PRq!q)kHVq^|Lo&%amf@8{-6vr?&4E49X>O0^~~Yfr_$ z1MztxKF=!k%D(t+BE~S~e2ln6_9GNe=7e%4ft@JjWUfYy7-bn%w_=K}$xM#w@q%XZ zdN;w*Vl>6-R)Se9ulEvs$qC7F`$;;&Ou282QVx~<`j~Tdy?4RLEK9jExjV&ElCs>x zG|j#3k~y9+refKfPe#!q%@TE6j5C6g{5B;qX6&aNSIbpF$C^T0%$eG4iLjvR z7L%sl+f16B;Ak^5?-7=TU+f;1{Z#5JmTb(9V_6S3^`h;b-tOt`p8o&$bo1|?zW=|6 z^7Evk{U(9H?>eCE_`Zqwj^ERezyUqS@0MoiNa%pjfjyHW&OPlC;+O2SOGr?R2X>1H zDBCF^pjSi;?;>UanpybJ3Cfm(TOb|N4sbxHRMoIlv94L?wpqg!2Na&$sO6nc~q(FR(_pV4eYzK-!J;;X(e_;O;OX`q2Z-+mO^Wf8TG^_?U&e~=7& zu-`$sZ^flfuK0s))CFN2D^5#s#wf|~b*}dV6#3l{hj+*smi$VaODP}phNz9Y{vGTE zcc>36%K32-KB524S;vB_eoWJ==*?EN4?~D?ZABJ{TNva^H zNrz0-tef-Rr{v1jli9vgyVrMW%i>pm7uNcrTsZ7JoehaHDV{4@E$8I|`~$cmEkOwt F00458@+SZQ From 249d4fc1d27ee46030f869ecaa4243a8e70f132b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Cs=C3=A1rdi?= Date: Sat, 4 Dec 2021 23:32:43 +0100 Subject: [PATCH 5/5] Add NEWS for full SHA in `$source` --- NEWS.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/NEWS.md b/NEWS.md index 9279c8c..05b7fff 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,13 @@ # development version +* The `source` column of the output data frame of `package_info()` (also + part of `session_info()`), now contains the full SHA for packages installed + from GitHub, instead of only the first seven characters. This makes it + easier to use the SHA programmatically. Note that this does not affect + formatting and printing, which still use the abbreviated SHA. + (@muschellij2, #61). + * RStudio Package Manager (RSPM) and other repository sources are now shown in the `source` column, if they set the `Repository` field in `DESCRIPTION`.