Опубликуйте сайт Jekyll в репозитории Git - PullRequest
5 голосов
/ 17 мая 2011

Каждый раз, когда я запускаю Jekyll, он уничтожает все содержимое папки назначения.Проблема с этим в том, что мой каталог назначения - это маленькое git-репо, из которого я использую его для отправки на свой настоящий сервер.Есть ли способ остановить Jekyll, удалив файлы Git, чтобы мне не нужно было генерировать содержимое, а затем копировать его?

Ответы [ 5 ]

5 голосов
/ 17 мая 2011

Вы можете иметь:

  • ваше git-репо в другом месте (то есть не в каталоге, на который влияет развертывание Jekyll)
  • ваш скрипт отправляет git repo на ваш сервер, указав GIT_WORK_TREE переменную с папкой назначения в качестве значения

Другими словами, .git необязательно быть необходимым в самом каталоге рабочего дерева.
Это может быть где-то еще, и ваш скрипт может ссылаться на фактическое рабочее дерево через GIT_WORK_TREE или через опцию --work-tree=<path>.

Если ваш сценарий является частью каталога назначения, куда Jenkyll копирует / стирает файлы, вы можете сделать обратное и указать, где на самом деле .git находится с переменной GIT_DIR или с параметром --git-dir=<path>.

Чтобы иметь новые --work-dir в качестве параметров по умолчанию для вашего репо, вы можете использовать git-config --add core.worktree ../PATH/, где PATH - путь к фактическому рабочему каталогу относительно .git.

2 голосов
/ 17 мая 2011

Вы смотрели раздел «Развертывание» вики Jekyll? - https://github.com/mojombo/jekyll/wiki/Deployment. Он четко объясняет шаги развертывания Jekyll.

А почему вы продвигаетесь от пункта назначения? Это плохо! Оттолкни его от какого-нибудь другого клона.

1 голос
/ 15 ноября 2011

Я тоже хочу эту настройку.Нашел этот запрос на исправление, чтобы исправить Джекилла, чтобы он не удалял .git dir: https://github.com/mojombo/jekyll/pull/337

Прочитайте мой комментарий там, как:

  1. исправление на самом деле немного сломано (сделатьэто .git не .git $)
  2. Я считаю, что лучшим решением было бы иметь это в качестве переменной конфигурации, чтобы обрабатывать другие файлы, такие как .svn.

В любом случае, мой Джекиллстрока теперь гласит: dest_files << file unless file =~ /\/\.{1,2}$/ || file =~/\/\.git/

Отлично работает!Я даже использую octopress (просто измените ваш deploy_dir на общедоступный) и закомментируйте следующие строки в Rakefile:

    #  (Dir["#{deploy_dir}/*"]).each { |f| rm_rf(f) }
    #  Rake::Task[:copydot].invoke(public_dir, deploy_dir)
    #  puts "\n## copying #{public_dir} to #{deploy_dir}"
    #  cp_r "#{public_dir}/.", deploy_dir

Теперь ваш публичный каталог (вместо _deploy dir) может быть вашим репозиторием github для публикацииВаш сайт (подмодуль ветки или моего родительского репо в моем случае)

Кажется бессмысленным иметь публичные и _развертывать с octopress, но я рад услышать другие причины, почему разделять публичные и _deploy dirs - кроме Джекиллаудаляя .git dir.(Я прочитал полную историю коммитов осьминога, но не смог найти объяснения, почему он так сделал)

0 голосов
/ 06 марта 2013

@ manojlds, я не уверен, что понимаю, по умолчанию _config.yml (который я настроил) в TPW показывает местоположение каталога _site как "." Внутри каталога блога, который также содержит репозиторий Git. Есть ли способ переместить этот каталог, чтобы он не извергал файлы повсюду? Я думаю, что здесь что-то упущено, потому что либо Джекилл отказывается что-либо генерировать, либо происходит описанный выше сценарий, и мне приходится убирать оставшийся беспорядок.

Есть ли у нас лучшая практика для того, где _сайт может (или должен) быть расположен?

Редактировать: Глядя на это, я на самом деле вижу следующее:

источник:. пункт назначения: ./_site

Тот факт, что Терминал не может найти драгоценный камень jekyll (установленный через RVM), вероятно, является причиной моей проблемы, а не местоположением _site.

0 голосов
/ 17 марта 2012

Я на самом деле использовал

git clone --separate-git-dir repo git@github....

и решил эту проблему.

...