【问题标题】:Are there any alternatives to the git binary?git二进制文件有什么替代品吗?
【发布时间】:2016-05-28 15:16:28
【问题描述】:

我想在一个非常古老的发行版(Fedora 4)上运行 git。我不想做的是触发一连串的依赖安装,以便运行 git 二进制文件。所以我正在寻找 git 二进制文件的替代品,例如。在 Java 或 Python 中。如果有任何地方我可以获得 32 位静态构建,那也可能满足我的需要。

【问题讨论】:

  • 只需rsync 将文件覆盖,或复制一个压缩包。您将通过 Java 或 Python 遇到类似的依赖问题,因为事实是您希望 最近的代码 和功能在一个古老的系统上。必须付出一些东西。
  • Java JRE 是相当新的,所以我怀疑我会面临太多问题。
  • 从源代码构建它。

标签: git


【解决方案1】:

我想推荐libgit2

这个库是 Git 核心方法的可移植纯 C 实现。它是 100% 跨平台的,并且具有零依赖性。 它有很多language bindings,例如:Ruby、Python、Node.js 等等。

【讨论】:

    【解决方案2】:

    您可以在另一台机器上build git statically,使用您需要的所有选项;那么您可以轻松地传输生成的二进制文件。


    如果你真的想要一个替代方案,有JGit for Java,它提供了纯 Java 中的最基本功能。 然而,这个实现并不完整(至少我上次看的时候是这样),因此无法与高级 git 功能(例如钩子)正确交互。

    【讨论】:

    • 我确实尝试过该答案中的建议,但编译失败并且还警告说仍然存在对目标系统的依赖关系。
    • @pinoyyid 很奇怪,它对我有用(尽管我没有关注特定的 SO 帖子,我只是链接了已经存在的帖子)。在不知道构建时到底出了什么问题的情况下,恐怕我不会有太大帮助。我的(在 64 位上为 64 位,交叉编译到 32 位需要另一个更改)过程类似于 make clean; make configure ; ./configure --prefix=/staticroot CFLAGS="${CFLAGS} -static" NO_TCLTK=1 NO_GETTEXT=1 NO_PYTHON=1; make install (不需要前缀 iirc)
    • 我没有交叉编译到 32 位,而是简单地在 AWS 上运行了一个 32 位的 Fedora 实例。我不记得详细的错误,但是仍然存在依赖关系的警告足以让我停止使用该选项。我会看看 JGit。
    • 对于未来的读者:您可能参考the problems of gethostbyname,这确实是任何与 glibc 的静态链接所固有的。
    【解决方案3】:

    非常感谢您的建议。

    在不进入后台的情况下,我真的需要尽可能少地对有问题的服务器做任何事情。考虑到这一点,我最终对我的具体问题采取的方法是从更现代的服务器上 sshmount 相关目录并在那里运行 git。

    【讨论】:

      猜你喜欢
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2022-11-10
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多