Ответ 1
Вы можете выбрать внешний CRAN-подобный репозиторий с исходными tarballs пакетов и их версиями, которые вы хотели бы использовать для своего проекта. Однако поведение по умолчанию - это смотреть в CRAN следующим образом, как вы определили в своем вопросе. Посмотрите файл packrat.lock, вы увидите, что для каждого пакета, который вы используете в packrat, есть опция под названием source: CRAN
(если вы скачали файл из CRAN, то есть).
Когда у вас есть локально сохраненный исходный файл пакета, содержимое блокировки для указанного пакета изменяется на следующее:
Package: FooPackage
Source: source
Version: 0.4-4
Hash: 44foo4036fb68e9foo9027048d28
SourcePath: /Users/MyName/Documents/code/myrepo/RNetica
Я немного неясен в вашем последнем вопросе: What files should I include in my git repo as a minimum (e.g., packrat.lock)?
Но я собираюсь принять это как:) комбинацию того, какие файлы должны присутствовать для запуска packrat, и b) какой из этих файлов должен быть зафиксирован к git -repo. Чтобы ответить на первый вопрос, я иллюстрирую инициализацию packrat в существующем проекте R.
Когда вы запускаете packrat::init()
, происходят две важные вещи (среди прочего):
1. Все строительные леса packrat, включая исходные tarballs и т.д., Создаются под: PackageName/packrat/
.
2. packrat/lib*/
добавляется в ваш файл .gitignore.
Таким образом, мы можем видеть, что что-либо под packrat/lib*/
не нужно связывать с вашим git -repo. Это оставляет следующие 3 файла:
-
packrat/init.R
-
packrat/packrat.lock
-
packrat/packrat.opts
packrat.lock
необходим для взаимодействия с другими через систему контроля версий; это помогает синхронизировать ваши частные библиотеки. packrat.opts
позволяет указать различные параметры для конкретного пакета для пакета. Файл создается автоматически с помощью get_opts
и set_opts
. Перенос этого файла в git -repo гарантирует, что все параметры, которые вы укажете, поддерживаются для всех соавторов. Конечным файлом, который должен быть привязан к репо, является .Rprofile
. Этот файл сообщает R использовать частную библиотеку пакетов (когда R запускается из каталога проекта).
В зависимости от ваших потребностей вы можете выбрать фиксацию исходных шариков в репозитории или нет. Если вы не хотите, чтобы они были доступны в вашем git -repo, вы просто добавляете packrat/src/
в .gitignore. Но это будет означать, что любой, кто имеет доступ к git -repo, не будет иметь доступа к исходному коду пакета, и файлы будут загружаться из CRAN или из любой точки, где исходная строка диктует в файле packrat.lock
.
Из вашего вопроса, похоже, что передача содержимого папки packrat/src/
в ваше репо может быть тем, что вам нужно.