Git:管理推送事件的文件

标签 git github githooks git-push

我有一个包含 LaTeX 项目的存储库,其中包含从 .tex 文件编译和生成的 .pdf。我希望历史和源文件是私有(private)的,但 .pdf 应该是公开的并且具有固定的 URL。 GitHub 本身为单个文件提供了一个固定的 URL,但为了使其公开可用,我需要将存储库设置为公开,这也会向公众公开历史记录和所有其他文件。
您认为有什么方法可以让 GitHub(或 BitBucket 或...)将单个 .pdf 文件推送到其他地方,以便它具有固定的唯一公共(public) URL?我想我可以以某种方式将它推送到 AWS 的 S3 或让 Lambda 接收 HTTP 调用并获取单个文件,但我不知道可能有更简单的方法。

最佳答案

继续 Max 的回答,一种解决方案可能是维护单独的私有(private)和公共(public) repo 协议(protocol)。我喜欢这个选项,因为您不必引入其他服务。您的工作流程可能如下所示:

  1. 在您的私有(private)仓库中本地编译您的 PDF
  2. 将更改提交到您的私有(private)仓库
  3. 有一个提交后的 git 钩子(Hook)来将编译后的 PDF 复制到你的本地公共(public)仓库
  4. 从您本地的公共(public)仓库推送到 Github

对于提交后 Hook ,在 git .git/hooks 目录中创建一个名为 post-commit(无扩展名)的文件。然后只需在该文件中放置一个 bash 命令,将 PDF 从私有(private)仓库复制到公共(public)仓库,例如:cp ~/private-repo/document.pdf ~/public-repo/document.pdf .

关于Git:管理推送事件的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49388121/

相关文章:

git - 如何设置 GitHub 存储库和分支以进行协作?

git - 有没有办法避免在使用 HTTPS 进行 git 推送时输入用户名?

git - 如何使用 Git 更新我的项目版本号?

用于 merge 冲突的 Git 钩子(Hook)

Git:如何在pre-push hook中查看当前推送的分支?

git - 在 android studio 中尝试使用 CVS 后,我的 Android 项目现在变成了红色

git - cloudbees 中的 jenkins 远端意外挂断

windows - 如何在 Windows 7 中使用 Cygwin 安装 git-subtree?

javascript - git hooks pre-push 不起作用

ruby-on-rails - 使用Git中未发布的Rails版本(可能是提交编号)