Как интегрировать вики GitHub в основной проект

Я хочу сохранить весь исходный код и документацию в одном репозитории git. У меня уже есть github-страницы, интегрированные в мой основной проект, и теперь я хочу сделать то же самое с викторией github.

Я знаю, что github wiki - это обычные хранилища git. Мой план состоит в том, чтобы добавить wiki в качестве удаленного к моему основному репо и сохранить все в одном месте. Однако в wiki-репо все находится в корневом каталоге и, таким образом, загромождает мой основной проект.

Кто-нибудь пробовал это раньше? Каков наилучший способ справиться с этим?

Ответ 1

Вы хотите добавить wiki в качестве подмодуль. То же Wiki git repo подключается как удаленный, но внутри подкаталога со своим собственным .git dir.

git submodule add git://github.com/you/proj.wiki

В корне вашего основного репо добавить wiki-репо в качестве подмодуля в wiki/dir.

Ответ 2

Я нахожу это все довольно утомительным - на мой взгляд, github wikis должен быть ветвями главного репозитория, или, по крайней мере, должно быть возможно сделать этот вариант.

Тем не менее, я считаю, что лучшим решением является просто переместить wiki в основной репозиторий, скажем, в docs/ или wiki, используя поддерево слияния. Например, если ваш репозиторий you/proj, ваша вики будет выглядеть следующим образом: git://github.com/you/proj.wiki. Затем, чтобы слить его в основное репо, вы должны:

git clone git://github.com/you/proj
cd proj
git remote add -f wiki git://github.com/you/proj.wiki
git merge -s ours --no-commit --allow-unrelated wiki/master
git read-tree --prefix=wiki/ -u wiki/master
git commit -m "Github wiki subtree merged in wiki/"

Вы даже можете заставить вики работать в стороне, чтобы приветствовать публичные вклады там, но затем проверите их в свою основную документацию по своему усмотрению. Чтобы объединить новые изменения после проверки, вы должны:

git pull -s subtree wiki master

К сожалению, слияние изменений другим способом несколько сложнее, и в любом случае вы должны, вероятно, сделать это как одно время, затем закрыть вики или перенаправить на источник репо...

Кроме того, основным предостережением этого подхода является то, что git log wiki/Home.md (например) фактически не показывает историю со страницы wiki. История существует, но почему-то git-log не удается ее отслеживать. Это известное ограничение, связанное с git поддеревьями. Другим решением для этого было бы сделать filter-branch и регулярное слияние, один раз, чтобы сохранить историю.

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

Ответ 3

Вы можете создать submodule с репликой wiki в нем или выполнить регулярную выборку и переключать ветки взад и вперед.