Установка непубличных пакетов из Gitlab с помощью devtools:: установить git

мое учреждение недавно установило GitLab для нас. Я выяснил, как установить пакеты R с сервера GitLab, используя devtools::install_git и он работает до тех пор, как проект общественных.

#* When modeltable project has Public status
devtools::install_git('https://mini-me2.lerner.ccf.org/nutterb/modeltable.git')

однако, если у меня есть пакет, который указан как "внутренний" или "частный", я не могу установить пакет без какой-либо формы аутентификации. До сих пор я не понял, как передать аутентификацию через URL-адрес. Кто-нибудь имеет опыт загрузки пакетов из Гитлаб?

#* After changing the 'modeltable' project to Private status
devtools::install_git('https://mini-me2.lerner.ccf.org/nutterb/modeltable.git')
Preparing installation of modeltable using the Git-URL: https://mini-me2.lerner.ccf.org/nutterb/modeltable.git
'/usr/bin/git'clone --depth 1 --no-hardlinks https://mini-me2.lerner.ccf.org/nutterb/modeltable.git /tmp/Rtmp5aj1cU/file24493dc03a32
Error: There seems to be a problem retrieving this Git-URL.

3 ответов


вы можете попробовать комбинацию devtools и getPass пакеты.

https://github.com/wrathematics/getPass

devtools::install_git(
  "https://gitlab.com/foo/bar.git", 
  credentials = git2r::cred_user_pass("uname", getPass::getPass())
)

здесь uname - это Gitlab имя пользователя.


Я бы настоятельно рекомендовал пройти маршрут SSH, и ниже работает для этого. Я обнаружил, что сделать прыжок в SSH было легко, особенно с R и RStudio. Я использую Windows в приведенном ниже примере. Изменения из кода, который я использую на практике во всех крышек.

creds = git2r::cred_ssh_key("C:\Users\MYSELF\.ssh\id_rsa.pub",
                            "C:\Users\MYSELF\.ssh\id_rsa")
devtools::install_git("git@gitlab.WORKDOMAIN.com:GITLABGROUP/PACKAGE.git",
                      credentials = creds)

два быстрых дополнительных комментария:

  • git2r импортируется с devtools, вам не нужно устанавливать его отдельно.
  • также я не думаю, что это нужно упомянуть, но пароли в открытый текст в вашем сценарии - очень плохая идея.

в комментарии Ciro, аутентификация с использованием

https://user:password@domain.com/user/repo.git

делает трюк. Таким образом, полный вызов будет

devtools::install_git('https://user:password@mini-me2.lerner.ccf.org/nutterb/modeltable.git')

обратите внимание, что могут возникнуть проблемы с безопасностью при передаче имени пользователя и пароля таким образом. Я не совсем разбираюсь в этих проблемах. Это работает достаточно хорошо для моих целей, потому что я прошел проверку подлинности сети моей компании даже видеть сервер Гитлаб.