关于git:如何将github wiki集成到主项目中

How to integrate a GitHub wiki into the main project

我要把我所有的源代码和文件保存在一个单一的GIT库。我已经把吉普赛人的页面整合到我的主要项目中,现在我想和吉普赛人维基做同样的事情。

我知道吉普赛人维基斯很平静。我的计划是将wiki添加到我的主回收站,并在一个地方保留一切。然而,在wiki的回复中,所有的东西都在根目录中,因此我的主要项目将结束。

以前有人试过这个吗?处理这件事的最佳方式是什么?


您希望将wiki添加为子模块。与远程连接的wiki git repo相同,但在具有自己的.git dir的子目录中。

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

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


我觉得这一切都很乏味——在我看来,Github维基应该是主存储库的分支,或者至少可以让它成为一种选择。

不过,我认为最好的解决方案是简单地将wiki移动到主存储库中,比如在docs/wiki中,使用子树合并。例如,假设您的存储库是you/proj,那么您的wiki将位于:git://github.com/you/proj.wiki。然后,要将其合并到主回购中,您需要执行以下操作:

1
2
3
4
5
6
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/"

你甚至可以让wiki站在一边欢迎公众的贡献,但是如果你认为合适的话,可以将它们审查到你的主要文档中。要在审阅后合并中的新更改,请执行以下操作:

1
git pull -s subtree wiki master

不幸的是,以另一种方式合并变更有些棘手,无论如何,您应该一次性完成这项工作,然后关闭wiki,或者重定向到repo源代码…

此外,这种方法的一个主要警告是,EDOCX1(例如4)实际上没有显示wiki页面上的历史记录。历史就在那里,但不知何故,git-log未能追踪到它。这是与Git子树相关的已知限制。解决这一问题的另一个解决方案是执行filter-branch和定期合并,一次保留历史。

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


您可以使用wiki repo创建一个子模块,也可以定期获取和来回切换分支。