我也知道可以将 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。