[已解决]如何修改人家贡献的PR,不想先合并再修改
- 已编辑
其实我觉得现在的审稿制度可能应该双向进行,现在的PR模式可能把很多编辑的责任转嫁到了作者身上,导致要给主页投稿,还得安装一堆blogdown的依赖,还要在本地编译历史所有的历史投稿,感觉不合理
我提议作者自己搞个Repo装单一一篇文章Rmd和所需的内容,而编辑再负责将内容整合进主站。这样作者可以把更多精力专注于内容而不是诸如这篇帖子讨论的git怎么用的细节上…
tctcab 现有投稿指南其实没考虑过 Rmd 文档的投稿的,如果是md文档投稿的话,那么其实可以在线编辑PR都不用把仓库拖到本地。只不过我们目前并不运行 blogdown 去编译 Rmd 文档,所以还是需要投稿时先生成 html 或 md 才能看到预览来方便审稿。因此其实不装blogdown都可以投稿的,只是需要一个编译好的文件。
不过加个 GitHub Action 来编译应该也不困难,这样 Rmd 投稿就可以自动生成预览了,审稿也会方便些。只不过这样我们就得要求作者用 renv 包来锁定调用的包了,否侧 Rmd 文档用GHA也会因为缺少必要的包而编译失败,这样还不如本地编译成 html 或 md 推送过来方便。只不过这篇文章本身的零部件就不少,所以看起来麻烦了点。
作者当然可以搞一个只有一篇Rmd的repo交给编辑来处理,编辑这边转给审稿人,但这样就不如在线审稿方便透明了。当然,具体到 git,确实是有点门槛的,特别是涉及要改别人的 PR 这种。
- 已编辑
伙伴们,我还在坑底……
我今天把 git 卸载重新安装,在安装 git 那个文件夹以外新建了一个目录存放克隆下来的库。
然后重新生成了 id_rsa 和 id_rsa.pub 这两个文件,并且把 id_rsa.pub 中的内容复制粘贴放到了 github 账户中,检查了一下我在 github 网页上设置的钥匙,内容和 rstudio 上的 public key 内容确实是一样的。
奇怪的是,怎么之前设置的钥匙是绿色的(源于id_ed25519.pub文件),今天这个钥匙是灰色的?而且 rstudio 的 Tools -> global options -->Git/SVN 选项下自动填入了SSH RSA keys,都没给我机会填那个绿色的钥匙。
所以当我再一次把cosname/cosx.org克隆下来,进入我本地的cosx.org文件夹下,打开cosx.Rproj,在rstudio中输入usethis::pr_fetch(1019)
还是报错了:
√ Setting active project to 'D:/R/myGit/cosx.org'
√ Checking out PR 'cosname/cosx.org/#1019' (@XiangyunHuang): '投稿:探索定西市的 Sci-Hub 流量之谜 袁凡'.
Error in libgit2::git_remote_fetch : Authentication failure
湘云给的常识书也看了,但还是没明白咋回事。网上搜到一个答案:https://stackoverflow.com/questions/26953071/github-authentication-failed-github-does-not-provide-shell-access照着在cosx.org目录下执行git remote set-url origin git@github.com:cosname/cosx.org.git
然后再去rstudio中抓1019也还是报一样的错。
伙伴们,虽然不知道为什么在rstudio中执行代码会报错,但是我在rstudio右上角的窗口手动切换到远程scihub那个分支,并且手动点击了pull按钮,终于把我想要拉过来的文件弄到本地了。
不过看那个文件的时间点,还不一定是我手动操作以后拉到本地的,说不定前面在 rstudio 中虽然执行代码报错,但是还是把文件拉过来了。
- 已编辑
yuanfan 因为我本地已经有 1019 号 PR 对应的分支了,所以我尝试了 1018 号 PR,过程很顺畅。
usethis::pr_fetch(1018)
✓ Setting active project to '/Users/xiangyun/Documents/Github/cosx.org'
✓ Checking out PR 'cosname/cosx.org/#1018' (@plumberDong): '投稿:核酸检测准确率是多少?Plumber'.
✓ Adding remote 'plumberDong' as 'https://github.com/plumberDong/cosx.org.git'.
✓ Creating and switching to local branch 'plumberDong-patch-3'.
✓ Setting 'plumberDong/patch-3' as remote tracking branch.
你那是网不好还是 Git 环境没有配置好呢?
P.S. 环境信息如下
xfun::session_info(c('blogdown','rmarkdown','usethis'),dependencies = F)
R version 4.1.3 (2022-03-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Monterey 12.3, RStudio 2022.2.1.461
Locale: en_US.UTF-8 / en_US.UTF-8 / en_US.UTF-8 / C / en_US.UTF-8 / en_US.UTF-8
Package version:
blogdown_1.9 rmarkdown_2.13 usethis_2.1.5
Pandoc version: 2.17.1.1
yuanfan 前两天有点忙没顾上此事,昨天仔细研究了一下,我觉得这个密钥验证问题应该也有望解决了,而且也不难。首先,点此链接创建一个个人令牌(Personal Access Token),其中 Expiration 可以选择 No expiration,这样这个令牌以后可以一直用(默认是 30 天过期,这是为了避免令牌不慎泄露)。然后,在 R 里运行:gitcreds::gitcreds_set()
,复制刚才创建的令牌,粘贴进来。最后,把你的 Git 库的远端地址改为 https 版本的:git remote set-url origin https://github.com/cosname/cosx.org.git
我估计这样三步操作之后应该就好了。
一丁点背景知识(其实我上一条回复已经提到过了):Git 库有两种克隆方式,一种是用 git 协议,一种是 https 协议。前者地址形如 git@github.com:cosname/cosx.org.git
,后者形如 https://github.com/cosname/cosx.org.git
。前者的验证要通过 SSH 钥匙,就是你折腾的那些东西,也是我个人一直用的方式;后者的验证是通过令牌,相当于密码。配置令牌比配置密钥要稍微简单一点,唯一的问题是安全性可能略差一些。
yihui
你的办法好使。我试了试:
> usethis::pr_fetch(1018)
√ Setting active project to 'D:/R/myGit/cosx.org'
√ Checking out PR 'cosname/cosx.org/#1018' (@plumberDong): '投稿:核酸检测准确率是多少?Plumber'.
√ Adding remote 'plumberDong' as 'https://github.com/plumberDong/cosx.org.git'.
Error in libgit2::git_remote_fetch :
failed to send request: The operation timed out
报的这个 time out 错是我的网不给力。
你的解题思路我看明白了,因为之前看到湘云的执行结果中这段Adding remote 'plumberDong' as 'https://github.com/plumberDong/cosx.org.git'.
就往这个方向猜。但是我当时只配置了 ssh 协议,而usethis::pr_fetch()
这个函数看上去似乎默认添加远程分支时使用的 https 协议,可是我又想这个函数的开发者应该知道存在好多种协议,不可能只默认其中一种吧。
这里https://github.com/r-lib/usethis/blob/main/R/pr.R第94-101行是这个函数的注释,其中提到:
The transport protocol (HTTPS vs SSH) for any new remote is inherited from the remote representing the source repo.
不过这内容太长,我也懒得深究怎么只配置了ssh协议的情况下用好这个函数了。反正手动切换分支再拉取也可以。