我想将所有源代码和文档保存在一个git存储库中.我已经将github页面集成到我的主项目中,现在我想对github wiki做同样的事情.
我知道github wiki是普通的git存储库.我的计划是将维基作为远程控制添加到我的主仓库并将所有内容保存在一个地方.但是在wiki repo中,一切都在根目录中,因此会混乱我的主项目.
有人曾尝试过这个吗?处理这个问题的最佳方法是什么?
您想要将wiki添加为子模块.相同的Wiki git repo作为远程连接,但在具有自己的.git目录的子目录中.
git submodule add git://github.com/you/proj.wiki
在主repo的根目录中,将wiki repo添加为wiki/dir中的子模块.
我发现这一切都非常繁琐 - 在我看来,github wikis应该是主存储库的分支,或者至少应该可以做出选择.
不过,我认为最好的解决办法是简单地移动维基到主存储库,过问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
不幸的是,合并更改另一种方式有点棘手,无论如何,你应该做一次性的事情,然后关闭维基,或重定向到回购源...
此外,这种方法的一个主要警告是git log wiki/Home.md
(例如)实际上并未显示维基页面的历史记录.历史就在那里,但不知何故git-log
无法追踪它.这是与git子树相关的已知限制.解决这个问题的另一个解决方案是进行filter-branch
一次定期合并,以保持历史.
对我来说,将wiki作为主源代码树的一部分的主要优点是可以跨代码和文档协调拉取请求和更改.使用您的代码发送文档,而不是假设人们只是在线阅读它,这也简单易行...