如何将GitHub wiki集成到主项目中

我想保留我所有的源代码和文档在一个单一的git仓库。 我已经把github页面集成到了我的主项目中,现在我想要和github wiki一样。

我知道github wiki是纯粹的git仓库。 我的计划是将维基添加到我的主库中,并将所有内容保存在一个地方。 然而,在维基回购一切都在根目录,因此会混乱我的主要项目。

有没有人试过这个? 处理这个问题的最好方法是什么?

您想要将wiki添加为子模块 。 同样的Wiki git repo作为一个远程连接,但是在一个有自己的.git目录的子目录中。

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

在主repo的根目录下,将wiki repo添加为wiki / dir中的子模块。

我觉得这非常乏味 – 在我看来,github wiki应该是主要存储库的分支,或者至less应该可以做出这个select。

尽pipe如此,我认为最好的解决scheme是简单地 wiki移入主要的资源库,比如在docs/ wiki ,使用子树合并 。 例如,假设您的存储库是you/proj ,您的wiki将位于: 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 

不幸的是,合并其他方式的变化有点棘手,无论如何,你可能应该这样做一次,然后closures维基,或redirect到回购来源…

此外,这种方法的一个主要警告是, git log wiki/Home.md (例如)实际上并不显示wiki页面中的历史logging。 历史那里,但不知何故git-log无法跟踪它。 这是一个与git子树有关的已知限制 。 解决这个问题的另一个解决scheme是做一个filter-branch和一次规则的合并来保持历史。

对我来说,将wiki作为主要源代码树的一部分的主要优点是,可以跨代码和文档协调请求和更改。 这也使得使用代码运送文档变得非常简单,而不是假设人们只是在线阅读它。

你可以创build一个带有wiki repo的子模块 ,或者做一个常规的抓取并且来回切换分支。