所以我有一个Github项目,我用一个wiki来维护文档。每当项目中发生变化或添加到项目中时,我都会立即将其记录在wiki中,这有助于将所有内容都记录下来。
同时,大多数用户只获得和使用定期的二进制更新,因此需要在特定时间点访问wiki的状态。我知道wiki也是一个git存储库,但它显然与主项目存储库完全分离。
我也知道可以将wiki存储库集成为子模块(尽管我不能说我理解这些模块是如何工作的,因为我没有真正的命令行git经验),但这本身并不能回答我的问题,我是这样表述的:
我该怎么做才能生成一个URL,我可以发布给用户,将他们引导到一个工作中的wiki,反映出它在最新二进制版本发布时的状态
我也知道可以将wiki存储库作为一个子模块进行集成(尽管我不能说我理解这些模块是如何工作的,因为我没有真正的命令行git经验),但这本身并不能回答我的问题
它实际上可以回答这个问题,因为子模块将记录wiki(注册为子模块)的确切SHA1
cd /yourRepo
git submodule add -b master https://github.com/you/proj.wiki
git submodule update --init
每次修改项目时,您可以:
- 转到该子模块
- 修改wiki,添加,提交和推送
- 回到父repo,添加、提交和推送:这将在您的父repo中记录wiki的SHA1
当您的用户获得该repo时,一个简单的git ls-tree master:<path-to-directory-containing-submodule>
可以为他们提供该wiki的SHA1
请注意,除非这些用户制作一个:,否则该wiki的内容将不可见
git submodule update --init
但是,如果只需要SHA1,为了访问https://github.com/you/proj.wiki/commit/<SHA1>
的wiki,git ls-tree
就足够了(他们不需要用任何内容填充子模块)。
现在,如果子模块方法看起来太麻烦,您可以更简单地在本地回购中设置一个预提交挂钩,它将:
- 在wiki中检查最新提交的SHA1
- 将该SHA1放在本地repo中的一个文件中(作为url:
https://github.com/you/proj.wiki/commit/<SHA1>
) - 拒绝当前提交,要求您添加并再次提交(因为预提交无法修改索引)
这样,您的用户就会查阅该文件,以便获得正确版本的wiki。