在 Github 上公开分享私人回购的一部分
Posted
技术标签:
【中文标题】在 Github 上公开分享私人回购的一部分【英文标题】:Share publically a part of a private repo on Github 【发布时间】:2018-04-03 04:29:19 【问题描述】:我想知道在 Github 上公开分享位于 Github 私人仓库中的文件的最佳方式是什么。
我希望每次在我的私人存储库中自动推送该文件时也会更新。
特别是我有一个 .tex 项目:我想保密 tex 文件,但我想让每个人都可以使用 pdf 文件。
注意我知道 gitignore 选项的存在,但我不想使用它,因为我想跟踪 tex 文件的改进
【问题讨论】:
【参考方案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
【讨论】:
以上是关于在 Github 上公开分享私人回购的一部分的主要内容,如果未能解决你的问题,请参考以下文章