【问题标题】:is there an API for GIT (C++ or other languages)是否有适用于 GIT(C++ 或其他语言)的 API
【发布时间】:2011-09-30 21:55:13
【问题描述】:

一家公司要求我为他们编写一个 GIT 包装器。

那里的人绝对没有版本控制系统经验,但最终会融入他们的日常生活中(通过我的程序)。

我正计划使用 VC++ 创建一个小型 Windows 小程序,以帮助 ppl 在此过程中。对此有什么想法吗?

如果一个守护进程检查人们是否想要提交/推送他们的文件呢?

【问题讨论】:

  • 包装器的目的是 git 和 other git 工具无法处理吗?
  • 假设您确实需要包装系统,您可以使用适当的参数直接从您的程序中调用 git。

标签: c++ windows git winapi


【解决方案1】:

对于几乎(但不是全部!)用例,libgit2 是通过代码与 Git 存储库交互的最简单方法。

【讨论】:

  • 这看起来不错……当我查看 libgit2 时,我确实想知道是否存在不需要 Qt 的 C++ 绑定……看起来提供的站点上没有广告。我注意到 OP 想要 VC++:看起来有人对 VS2010 C++ 有问题,但在这个 SO 帖子中解决了:stackoverflow.com/questions/14860814/…
【解决方案2】:

Git 已经有两层:管道(您可能会感兴趣)在其之上构建了提供用户界面的主要 porcelain。如果你想实现类似 git-commit 但语义略有不同的东西,那么所有底层程序,如 git-write-treegit-rev-parse 都可以供你构建。

另见What does the term "porcelain" mean in Git?

【讨论】:

  • Git 非常灵活——瓷器很棒。如果您不喜欢 GUI,您可能会通过最喜欢的语言(Ruby、Python、Perl 或类似 bash 的 shell)尝试简单的脚本编写方法。我已经看到那些使用 DVCS 系统效果很好的方法,但是对于不接受命令行的人来说可能很难。在 Git 本身中添加别名命令也有很长的路要走,但是您需要能够将它们分发给您的用户群(不要太难,有很多选择)
【解决方案3】:

已经有了TortoiseGit,以及其他“友好”的界面。不要重新发明轮子,从研究已有的东西开始。

【讨论】:

  • 当然,它是开源的,所以即使不是你想要的,也可能比没有更接近。
  • 他要求包装 git 功能,而不是接口。例如,如果您想在一个软件中实现协作功能,您将需要一个库。我知道 Ruby 中的 Grit,但我知道 C/C++ 没有这样的东西。
  • @user626921:他的问题明确指出他的目标是为他的用户提供一个界面。他目前的计划是写一个,但我建议一种成本更低的方法是定制一个已经存在的。
【解决方案4】:

为了方便查找文档,后面附上官方链接。这是关于管道和瓷器的: https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain

【讨论】:

    猜你喜欢
    • 2021-10-18
    • 2022-01-13
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2010-10-31
    • 1970-01-01
    相关资源
    最近更新 更多