听起来你想编写一些“提交后钩子(post-commit hook)”程序,但那可能对你来说太细致了。只需编写自动步骤到
.git/hooks/post-commit
,并将其设置为可执行即可。
git --work-tree PATH_FOR_THIRD_PARTY checkout HEAD -- PUBLIC_FILES
要更新PATH_FOR_THIRD_PARTY中第三方开发人员的PUBLIC_FILES,我假设您在那里发布第三方开发人员的数据。
然后,您需要编写一些Makefile(或类似文件)来从您的隐藏文件中生成PATH_FOR_THIRD_PARTY的输出,以更新编译结果。
如果您选择了正确的存储库布局,只需使用PUBLIC_FILES目录即可将所有PUBLIC_FILES检出到PATH_FOR_THIRD_PARTY/PUBLIC_FILES
。
请注意,使用此方法,发布目录和存储库中的目录布局将相同。
顺便说一句:如果第三方开发人员更改其目录中的PUBLIC_FILE,则可以简单地
git --work-tree PATH_FOR_THIRD_PARTY add -u
我经常使用这种方法从Git仓库发布文件。您可以简单地:
git config -g alias.public '!git --work-tree $(git config --get public.root) '
git config public.root 'PATH_FOR_THIRD_PARTY'
因此,您可以这样说。
git public diff --name-only
或者
git public status -s -uno
我认为这种方法被称为“分离的工作树”或类似的方法。如果使用此方法,在您进行公共提交后,需要在本地仓库中检出文件。
git public add -u; git public commit -m "John Doe changed something"
git checkout HEAD -- .
最后一行命令将会更新本地工作目录,使其与上述提交保持一致。