Как добавить репозиторий git в качестве подмодуля? (Или: как сгенерировать страницы GitHub программно?)

Я хочу начать использовать GitHub Pages для веб-сайта моего проекта. Для этого просто требуется ветка (поддерево) с именем gh-pages ] в репо и обслуживает его содержимое. Проблема в том, что часть веб-сайта (руководство, журнал изменений, страница загрузки ...) автоматически создается системой сборки, поэтому я хочу найти лучший способ зафиксировать эти изменяется в ветку gh-pages , в то время как основное репо остается на master (или где-то еще).

Для фиксации в ветке gh-pages я может написать сценарий, который клонирует репо во временный каталог, вносит изменения, фиксирует их, а затем возвращает их в основное репо. Но это звучит как процесс, подверженный ошибкам, поэтому я надеюсь, что есть более простой способ.

Друг посоветовал мне добавить ветвь gh-pages в качестве подмодуля в главный репозиторий. Я провел небольшой эксперимент, но он не совсем сработал:

$ git init main
Initialized empty Git repository in /tmp/main/.git/
$ cd main
$ touch main.txt
$ git add .
$ git commit -m'Initial commit in main branch.'
[master (root-commit) 1c52a4e] Initial commit in main branch.
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 main.txt
$ git symbolic-ref HEAD refs/heads/gh-pages
$ rm .git/index
$ git clean -fdx
Removing main.txt
$ touch index.html
$ git add .
$ git commit -m'Initial commit in website branch.'
[gh-pages (root-commit) 94b10f2] Initial commit in website branch.
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 index.html
$ git checkout master
Switched to branch 'master'
$ git submodule add -b gh-pages . gh-pages
repo URL: '.' must be absolute or begin with ./|../
$ git submodule add -b gh-pages ./ gh-pages
remote (origin) does not have a url defined in .git/config

Я новичок в подмодулях; читал, конечно, но я не понимаю этого поведения. Зачем ему нужен пульт origin ? В идеале я хочу, чтобы подмодуль всегда ссылался на репо, в котором он находится, поэтому он не должен ссылаться на origin или любые другие пульты дистанционного управления. Если кто-то клонирует репо и запускает git submodule init; git submodule update , в идеале он должен извлекать из недавно клонированного репо.

Можно ли добавить репо как подмодуль? Это желательно? Есть ли какие-то подводные камни, о которых мне нужно знать? Есть ли лучший способ достичь того, что я хочу?

21
задан Thomas 14 March 2011 в 08:22
поделиться