【问题标题】:Single github repo for multiple platforms适用于多个平台的单个 github 存储库
【发布时间】:2016-09-25 04:55:14
【问题描述】:

我正在编写一个小型代码项目(或模块),并愿意用 3 种不同的语言实现相同的技术,即:Python、JS、Lua。我想制作一个包含所有这些语言的所有代码的单个 github 存储库。

我的问题是:如何将它作为可安装的包,适用于所有三种语言?即:

对于 Python,我希望它可以通过

获得
pip install packagex

对于 Lua,我希望它可以通过以下方式获得:

luarocks install packagex

对于 JS/Node 也是如此:

npm install packagex

是的,我可以为三个不同的平台创建三个不同的存储库,并将它们中的每一个注册为可安装包,但我想将所有内容保存在一个源存储库中。我应该如何进行?谢谢。

【问题讨论】:

  • GitHub 只是源代码的存储库,例如 Python 项目不能与 JavaScript 项目在同一个存储库中是没有理由的。如何创建安装程序是另一回事。
  • 是的。实际上,所有内容都可以包含在一个存储库中。创建安装程序的问题。
  • 一个仓库中的三个分支可以容纳您的所有代码。但我不认为安装问题是 Git 的事。
  • this existing question 对此进行了很好的讨论。您还可以将每种语言放在 repo 根级别的不同目录中。
  • 是的,一个包含三个目录的存储库可能是一种方法。但是在为每个创建安装程序时,也许我必须以不同的方式传递源地址。

标签: git github npm pip luarocks


【解决方案1】:

我可以回答问题的 LuaRocks 部分:

LuaRocks

如果您选择为每种语言创建子目录并且 Lua 内容位于 /lua 下,您可以按照 usual process of creating a rockspec file 添加一个 source.dir 条目,告诉它在子目录中工作。因此,在上面的链接示例中,您可以执行以下操作:

source = {
   url = "git://github.com/me/luafruits",
   tag = "v1.0",
   dir = "luafruits/lua"
}

source.dirrockspec format 的其余部分一起记录在案:

  • source.dir (string) - 解压源存档时创建的目录的名称。如果可以从 source.file 字段推断,则可以省略。示例:“luasocket-2.0.1”

对于 Git 存储库,source.dir 默认被推断为路径的最后一个组件,但如果您的代码位于子目录中,您可以随意重新定义它。 Rockspec 中的所有其他路径都将与此 source.dir 相关。

或者,您可以将lua/ 添加到您的build 部分的所有路径中。在文档中的“luafruits”示例中,请注意所有源都位于 src/ 中。只需改用lua/ 即可,无需使用source.dir

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-11-07
    • 2019-07-18
    • 2018-02-07
    • 2021-09-07
    • 1970-01-01
    相关资源
    最近更新 更多