Функция render_site R-Markdown удаляет содержимое папки .git - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь управлять версиями сайта, созданного с помощью функции R-Markdown render_site, выталкивая его прямо из выходного каталога, папки по умолчанию _site.Проблема в том, что каждый раз, когда я вызываю функцию render_site, она очищает большую часть содержимого папки .git (за исключением папки objects внутри) и разрывает связь между локальным и удаленным каталогом.Есть ли способ остановить это?Любопытно, что функция clean_site очищает те же самые папки и файлы из папки .git, поэтому я предполагаю, что проблема связана с некоторой очисткой после сборки.

Каталог веб-страницы выглядит примерно так:

_site/
├── /.git
├── /index_files
├── /about_files
├── intex.html
├── about.html
└── styles.css

Папка .git перед рендерингом сайта выглядит так:

.git/
├── /hooks
├── /info
├── /logs
├── /objects
├── /refs
├── COMMIT_EDITMSG
├── config
├── description
├── FETCH_HEAD
├── HEAD
└── index

А после сборки остается только папка objects:

.git/
└── /objects

Я долженТакже обратите внимание, что рендеринг каждого файла .Rmd в htmls по отдельности не вызывает такой же проблемы.

1 Ответ

1 голос
/ 28 сентября 2019

Функция по умолчанию clean для генератора сайтов ничего не исключает.Вы можете довольно легко заменить его, используя следующую схему:

Выберите имя для вашего нового генератора и поместите его в YAML для файла index.Rmd, например,

site:  my_site
* 1007.* Напишите my_site, чтобы изменить генератор по умолчанию (или оригинальный пользовательский, если он у вас уже был):
my_site <- function(...) {
  site <- rmarkdown:::default_site(...) # or bookdown::bookdown_site(...), etc.
  # Modify the clean function
  oldclean <- site$clean
  site$clean <- function(...) {
    files <- oldclean(...)
    # leave out any filename containing .git
    grep("[.]git", files, value = TRUE, invert = TRUE)
  }
  site
}

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

Вы также можете предложить авторам rmarkdown (на их сайте Github), что было бы неплохо иметь способ пометить определенные файлы, чтобы исключить из очистки.

...