2

所以我有一个带有 wiki 的 Github 项目,用于维护文档。每当项目中发生变化或被添加到项目中时,这通常很血腥,我会立即将其记录在 wiki 中,这有助于将所有内容记录在案。

同时,大多数用户只获取和使用周期性的二进制更新,因此需要在特定时间点访问 wiki 的状态。我知道 wiki 也是一个 git 存储库,但它显然与主项目存储库完全分开。

我也知道可以将 wiki 存储库集成为子模块(尽管我不能说我理解这些是如何工作的,因为我并没有命令行 git 经验)但这本身并不能回答我的问题,我以这种方式制定:

我必须做些什么来生成一个 URL,我可以发布给用户以将他们引导到一个工作 wiki,反映它在最新二进制版本时的状态?

4

1 回答 1

0

我也知道可以将 wiki 存储库集成为子模块(尽管我不能说我理解这些是如何工作的,因为我并没有真正的命令行 git 经验),但这本身并不能回答我的问题

它实际上可以回答这个问题,因为子模块将记录 wiki 的确切 SHA1(注册为子模块

cd /yourRepo
git submodule add -b master https://github.com/you/proj.wiki
git submodule update --init

每次修改项目时,您都可以:

  • 去那个子模块,
  • 修改 wiki、添加、提交和推送,
  • 返回父仓库,添加、提交和推送:这将在您的父仓库中记录 wiki 的 SHA1。

当你的用户得到那个 repo 时,一个简单的git ls-tree master:<path-to-directory-containing-submodule>可以给他们那个 wiki 的 SHA1。
请注意,除非这些用户进行以下操作,否则该 wiki 的内容将不可见:

git submodule update --init

但是,如果只需要 SHA1,以便访问 wiki 处的 wiki https://github.com/you/proj.wiki/commit/<SHA1>git ls-tree就足够了(他们不需要使用任何内容填充子模块)。


现在,如果子模块方法看起来太麻烦,您可以更简单地在本地 repo 中设置一个 pre-commit 钩子,这将:

  • 检查 wiki 中最新提交的 SHA1
  • 将该 SHA1 放入本地存储库中的文件中(作为 url: https://github.com/you/proj.wiki/commit/<SHA1>
  • 拒绝当前提交,要求您添加并再次提交(因为预提交无法修改索引)

这样,您的用户将查阅该文件以获取正确版本的 wiki。

于 2013-12-09T10:02:49.900 回答