#r #git #r-markdown #github-pages #bookdown
Вопрос:
Мы часто используем пакеты на основе RMarkdown для создания веб-сайтов с R ( bookdown
, blogdown
, distill
…) и используем страницы github для представления html-файлов по URL username.github.io/repo
-адресу .
При таком подходе исходящие (т. е. html / css) файлы также контролируются версиями и часто включаются в коммиты по ошибке ( git commit -a
). Это раздражает, так как эти файлы загромождают фиксацию и часто приводят к конфликтам фиктивных файлов.
В идеале выходные файлы вообще не будут контролироваться версией, так как двоичные файлы (изображения) дополнительно раздувают репозиторий. Поэтому я ищу решение, где:
- Git полностью игнорирует выходные файлы, но предоставляет альтернативный (но сопоставимый 1) метод для gh-страниц для их обслуживания
- Git временно игнорирует выходные файлы, а фиксация / отправка их на gh-страницы выполняется отдельной явной командой
1: Метод должен быть основан на командной строке и содержать удобный URL-адрес для доступа к веб-сайту
Ответ №1:
Вы могли бы .html
.css
проигнорировать и т. Д. main
Во всех других ветвях , кроме ветви, например, gh-page
ветви, из которой построена ваша страница github.
Git не поддерживает разные .ignore
файлы в разных ветвях, поэтому вам придется настроить скрипт bash, который заменяет файл игнорирования каждый раз, когда вы проверяете новую ветвь. Смотрите здесь, как это сделать: https://gist.github.com/wizioo/c89847c7894ede628071
Возможно, это не то элегантное решение, на которое вы надеялись, но оно должно сработать.
Комментарии:
1. Спасибо вам за ваш ответ! Это казалось правдоподобным способом, но, если разобраться в сути, это казалось очень банальным решением с большими накладными расходами, которое я искал. В итоге я принял свой собственный ответ, решение, о котором я узнал случайно!
2. Ваше решение действительно выглядит аккуратно. Я мог бы попробовать это для своих собственных проектов!
Ответ №2:
Если у вас на компьютере установлена программа python, вы можете использовать импорт страниц GitHub, инструмент, разработанный специально для этой цели.
Вам нужна установка python, так как она должна быть установлена с помощью pip, но как только она установлена, она прекрасно интегрируется в рабочий процесс R / RMarkdown.
Как только он установлен ( pip install ghp-import
), вы можете запустить ghp-import docs
его (при docs
условии, что там хранятся ваши выходные данные RMarkdown).
Существует множество практических опций, которые вы можете использовать, в том числе -p
для дополнительного переноса изменений на пульт дистанционного управления после фиксации.
Ответ №3:
Вам нужно сказать Git, чтобы он игнорировал папку, в которую встроена книга.
Так, например, по умолчанию bookdown помещает все встроенные файлы в папку под названием «_book».
Просто добавьте следующую строку в файл .gitignore в вашем проекте.
_book
Затем вы можете работать над своей книгой, создавать ее и вносить изменения, не беспокоясь об обновлении сайта.
Чтобы обновить сайт, вы хотите создать ветвь gh-страниц, которая используется только для размещенного контента. Сделайте это с помощью следующих команд из папки вашей книги:
git checkout --orphan gh-pages
git rm -rf .
# create a hidden file .nojekyll
touch .nojekyll
git add .nojekyll
git commit -m"Initial commit"
git push origin gh-pages
Убедитесь (как только вы разместите содержимое своей книги в этой ветке), что GitHub настроен на использование этой ветки для размещения, а не папки, которую вы использовали раньше.
Затем вы можете переключиться обратно в свою основную ветвь с помощью следующей команды:
git checkout master
Затем вы клонируете свою ветвь gh-страниц в свой основной проект:
git clone -b gh-pages https://github.com/yourprojecturl.git book-output
Затем, когда у вас будет версия встроенной книги (в папке _book), готовая для использования в качестве живого сайта, используйте следующие команды, чтобы скопировать содержимое в папку вывода книги и отправить его в ветвь gh-страниц, где находится живой сайт:
cd book-output
git rm -rf *
cp -r ../_book/* ./
git add --all *
git commit -m"Update the book"
git push -q origin gh-pages
Вы можете продолжать использовать этот последний набор команд всякий раз, когда в _book появится версия, которую вы готовы запустить вживую.
Комментарии:
1. Но как я буду использовать файлы в качестве веб-сайта?
2. Существует два способа использования страниц GitHub для размещения контента. Один из них-указать папку в вашей основной ветви, которая будет размещена. Другой вариант-использовать отдельную ветвь в качестве размещенного сайта. Это тот метод, который я рекомендую. Таким образом, вы игнорируете папку сборки, а затем, когда захотите, помещаете содержимое папки _book в ветвь gh-страниц. Инструкции можно найти здесь: bookdown.org/yihui/bookdown/github.html
3. Я также должен добавить, что технически невозможно использовать страницы GitHub для размещения вашего контента без какого-либо контроля версий. Но мой метод отделяет ваш основной код филиала от кода вашего веб-сайта, что вам нужно, чтобы он не мешал, не конфликтовал и т. Д.
4. > > Таким образом, вы игнорируете папку сборки, а затем, когда захотите, помещаете содержимое папки _book в ветку gh-pages .Я нахожу это очень интересным подходом, в котором я никогда не был уверен, что это возможно. Итак, как я могу зафиксировать / переместить игнорируемую папку в отдельный раздел? Ссылка, которую вы упомянули, не входит в это
5. Это происходит немного ниже. Я редактирую свой ответ, чтобы предоставить полную информацию.