• Show log

    Commit

  • Hash : 3a3ab065
    Author : Edward Thomson
    Date : 2020-05-03T23:13:28

    cli: infrastructure for a cli project
    
    Introduce a command-line interface for libgit2.  The goal is for it to
    be git-compatible.
    
    1. The libgit2 developers can more easily dogfood libgit2 to find bugs,
       and performance issues.
    
    2. There is growing usage of libgit2's examples as a client; libgit2's
       examples should be exactly that - simple code samples that illustrate
       libgit2's usage.  This satisfies that need directly.
    
    3. By producing a client ourselves, we can better understand the needs
       of client creators, possibly producing a shared "middleware" for
       commonly-used pieces of client functionality like interacting with
       external tools.
    
    4. Since git is the reference implementation, we may be able to benefit
       from git's unit tests, running their test suite against our CLI to
       ensure correct behavior.
    
    This commit introduces a simple infrastructure for the CLI.
    
    The CLI is currently links libgit2 statically; this is because the
    utility layer is required for libgit2 _but_ shares the error state
    handling with libgit2 itself.  There's no obviously good solution
    here without introducing annoying indirection or more complexity.
    Until we can untangle that dependency, this is a good step forward.
    
    In the meantime, we link the libgit2 object files, but we do not include
    the (private) libgit2 headers.  This constrains the CLI to the public
    libgit2 interfaces.
    

  • README.md

  • libgit2 sources

    This is the source that makes up the core of libgit2 and its related projects.

    • cli
      A git-compatible command-line interface that uses libgit2.
    • libgit2
      This is the libgit2 project, a cross-platform, linkable library implementation of Git that you can use in your application.
    • util
      A shared utility library for these projects.