【问题标题】:Share publically a part of a private repo on Github在 Github 上公开分享私人回购的一部分
【发布时间】:2018-04-03 04:29:19
【问题描述】:

我想知道在 Github 上公开分享位于 Github 私人仓库中的文件的最佳方式是什么。

我希望每次在我的私人存储库中自动推送该文件时也会更新。

特别是我有一个 .tex 项目:我想保密 tex 文件,但我想让每个人都可以使用 pdf 文件。

注意我知道 gitignore 选项的存在,但我不想使用它,因为我想跟踪 tex 文件的改进

【问题讨论】:

    标签: git github branch git-commit git-push


    【解决方案1】:

    我想保密 tex 文件,但我想向所有人提供 pdf 文件。

    您可以专用一个公共回购(其中包含一个简单的README),以便将工件(您的pdf)作为GitHUb release 上传并关联到所述公共回购。

    添加您的私人回购的公共回购as a submodule:这将创建一个包含自述文件的子文件夹,解释在哪里可以找到pdf(在公共回购的发布部分)

    然后,您可以从自己的私人仓库中:

    • 更新自述文件(仅用于创建新提交)
    • 标记 README 子模块存储库(以创建一个您将与您的发布相关联的标记)
    • 将您的 pdf 上传到与创建的标签相关联的公共 repo 版本。

    所有这些步骤都可以编写脚本,使用GitHub API:这里是example (focused on the release upload part) in bash shell

    【讨论】:

    • 我看不到在这种情况下使用子模块的优势。无论如何,您需要两个存储库(公共的,私有的)。不妨将更改的文件(.pdf)从私有存储库复制(使用脚本)到公共存储库并从那里提交。正如您所说,该步骤也可以编写脚本。
    • @MariusHofert 我想我一年多前考虑的想法是能够克隆一个 repo,并通过子模块引用自动获取另一个。我没有将生成的二进制文件放在公共仓库本身,而是作为发布工件。
    【解决方案2】:

    Github 不提供此类功能。 Github 存储库是公共的或私有的,两者都不是。但是,如果您要共享的部分足够小(比如说 4-5 个文件),您可以create a public gist。不幸的是,没有办法自动更新要点。

    【讨论】:

    • 很好,但是自动更新我感兴趣的文件的最快替代方法是什么? (假设最多 2 或 3 个......)
    • 如何在私有仓库中添加公共要点?
    【解决方案3】:

    使用原始链接会提供一个带有“token=”的 URL,它似乎会在一定天数后过期。

    【讨论】:

      【解决方案4】:

      如果只是一个文件,您可以使用原始链接。 转到 GitHub 上的那个文件,然后点击“raw”

      只需使用地址栏中的链接,它应该可以工作...

      【讨论】:

      • 如果存储库设置为私有,这将不起作用
      • @LorenzBung,它有效,我测试了它,但我发现它不可靠,因为我们不知道这个链接会保持多久。
      【解决方案5】:

      您可以根据现有的私有仓库自动创建公共 Github 仓库。

      您可以使用git-exporter。它允许您定义公共存储库中可用的文件路径。此实用程序基于具有类似提交历史的现有存储库创建一个新的 git 存储库。只有允许的文件才会包含在提交内容中。

      例子:

      创建config.json:

      {
          "forceReCreateRepo": true,
          "targetRepoPath": "my-open-source-repo",
          "sourceRepoPath": ".",
          "allowedPaths": ["*.pdf"],
          "ignoredPaths": ["*.tex"]
      }
      

      然后运行命令npx gitexporter config.json

      新存储库my-open-source-repo 仅包含"*.pdf" 文件。

      然后你可以推送my-open-source-repo并将其用作开源。

      像这样:

      cd my-open-source-repo
      git remote set-url origin github.com/orgname/repo-name.git
      git push origin master
      

      【讨论】:

        猜你喜欢
        • 2021-03-29
        • 1970-01-01
        • 1970-01-01
        • 2014-05-23
        • 2012-08-27
        • 2011-12-20
        • 1970-01-01
        • 2015-02-08
        相关资源
        最近更新 更多