1. 03 Sep, 2023 1 commit
    • ssh: refactor to avoid using error state · 9a9f2201
      The error handling in the ssh certificate callback is straightforward.
      There's no error messages from an external library that need to be
      saved, we populate the error message ourselves. Since there's nothing
      custom here, it does not need to use the error saving mechanism.
      Edward Thomson committed
  2. 30 Aug, 2023 2 commits
  3. 18 Jul, 2023 1 commit
  4. 13 May, 2023 1 commit
    • net: move `gitno` buffer to `staticstr` · 11c89c38
      The `gitno` buffer interface is another layer on top of socket reads.
      Abstract it a bit into a "static string" that has `git_str` like
      semantics but without heap allocation which moves the actual reading
      logic into the socket / stream code, and allows for easier future usage
      of a static / stack-allocated `git_str`-like interface.
      Edward Thomson committed
  5. 27 Feb, 2023 1 commit
  6. 24 Feb, 2023 2 commits
  7. 22 Feb, 2023 1 commit
  8. 09 Feb, 2023 3 commits
  9. 04 Nov, 2022 1 commit
  10. 02 Nov, 2022 1 commit
  11. 23 Feb, 2022 1 commit
  12. 18 Jan, 2022 2 commits
  13. 06 Jan, 2022 1 commit
    • remote: introduce `git_remote_connect_options` · 6fc6eeb6
      The existing mechanism for providing options to remote fetch/push calls,
      and subsequently to transports, is unsatisfactory.  It requires an
      options structure to avoid breaking the API and callback signatures.
      
      1. Introduce `git_remote_connect_options` to satisfy those needs.
      
      2. Add a new remote connection API, `git_remote_connect_ext` that will
         take this new options structure.  Existing `git_remote_connect` calls
         will proxy to that.  `git_remote_fetch` and `git_remote_push` will
         proxy their fetch/push options to that as well.
      
      3. Define the interaction between `git_remote_connect` and fetch/push.
         Connect _may_ be called before fetch/push, but _need not_ be.  The
         semantics of which options would be used for these operations was
         not specified if you specify options for both connect _and_ fetch.
         Now these are defined that the fetch or push options will be used
         _if_ they were specified.  Otherwise, the connect options will be
         used if they were specified.  Otherwise, the library's defaults will
         be used.
      
      4. Update the transports to understand `git_remote_connect_options`.
         This is a breaking change to the systems API.
      Edward Thomson committed
  14. 05 Jan, 2022 1 commit
  15. 17 Oct, 2021 1 commit
    • str: introduce `git_str` for internal, `git_buf` is external · f0e693b1
      libgit2 has two distinct requirements that were previously solved by
      `git_buf`.  We require:
      
      1. A general purpose string class that provides a number of utility APIs
         for manipulating data (eg, concatenating, truncating, etc).
      2. A structure that we can use to return strings to callers that they
         can take ownership of.
      
      By using a single class (`git_buf`) for both of these purposes, we have
      confused the API to the point that refactorings are difficult and
      reasoning about correctness is also difficult.
      
      Move the utility class `git_buf` to be called `git_str`: this represents
      its general purpose, as an internal string buffer class.  The name also
      is an homage to Junio Hamano ("gitstr").
      
      The public API remains `git_buf`, and has a much smaller footprint.  It
      is generally only used as an "out" param with strict requirements that
      follow the documentation.  (Exceptions exist for some legacy APIs to
      avoid breaking callers unnecessarily.)
      
      Utility functions exist to convert a user-specified `git_buf` to a
      `git_str` so that we can call internal functions, then converting it
      back again.
      Edward Thomson committed
  16. 09 Sep, 2021 1 commit
  17. 22 Dec, 2020 2 commits
  18. 27 Nov, 2020 2 commits
  19. 11 Oct, 2020 1 commit
  20. 07 Feb, 2020 1 commit
  21. 26 Jan, 2020 1 commit
    • credential: change git_cred to git_credential · 3f54ba8b
      We avoid abbreviations where possible; rename git_cred to
      git_credential.
      
      In addition, we have standardized on a trailing `_t` for enum types,
      instead of using "type" in the name.  So `git_credtype_t` has become
      `git_credential_t` and its members have become `GIT_CREDENTIAL` instead
      of `GIT_CREDTYPE`.
      
      Finally, the source and header files have been renamed to `credential`
      instead of `cred`.
      
      Keep previous name and values as deprecated, and include the new header
      files from the previous ones.
      Edward Thomson committed
  22. 13 Dec, 2019 1 commit
  23. 20 Nov, 2019 1 commit
  24. 16 Nov, 2019 1 commit
  25. 13 Sep, 2019 1 commit
  26. 10 Jun, 2019 1 commit
    • net: rename gitno_connection_data to git_net_url · c6ab183e
      "Connection data" is an imprecise and largely incorrect name; these
      structures are actually parsed URLs.  Provide a parser that takes a URL
      string and produces a URL structure (if it is valid).
      
      Separate the HTTP redirect handling logic from URL parsing, keeping a
      `gitno_connection_data_handle_redirect` whose only job is redirect
      handling logic and does not parse URLs itself.
      Edward Thomson committed
  27. 16 Apr, 2019 1 commit
  28. 22 Jan, 2019 1 commit
  29. 21 Nov, 2018 1 commit
    • transport: allow cred/cert callbacks to return GIT_PASSTHROUGH · a2e6e0ea
      Allow credential and certificate checking callbacks to return
      GIT_PASSTHROUGH, indicating that they do not want to act.
      Introduce this to support in both the http and ssh callbacks.
      Additionally, enable the same mechanism for certificate validation.
      
      This is most useful to disambiguate any meaning in the publicly exposed
      credential and certificate functions (`git_transport_smart_credentials`
      and `git_transport_smart_certificate_check`) but it may be more
      generally useful for callers to be able to defer back to libgit2.
      Edward Thomson committed
  30. 10 Jun, 2018 1 commit
  31. 27 Mar, 2018 2 commits
    • transports: ssh: replace deprecated function `libssh2_session_startup` · 874ce161
      The function `libssh2_session_startup` has been deprecated since libssh2
      version 1.2.8 in favor of `libssh2_session_handshake` introduced in the
      same version. libssh2 1.2.8 was released in April 2011, so it is already
      seven years old. It is available in Debian Wheezy, Ubuntu Trusty and
      CentOS 7.4, so the most important and conservative distros already have
      it available. As such, it seems safe to just use the new function.
      Patrick Steinhardt committed
    • transports: ssh: disconnect session before freeing it · 2785cc8e
      The function `ssh_stream_free` takes over the responsibility of closing
      channels and streams just before freeing their memory, but it does not
      do so for the session. In fact, we never disconnect the session
      ourselves at all, as libssh2 will not do so itself upon freeing the
      structure. Quoting the documentation of `libssh2_session_free`:
      
          > Frees all resources associated with a session instance. Typically
          > called after libssh2_session_disconnect_ex,
      
      The missing disconnect probably stems from a misunderstanding what it
      actually does. As we are already closing the TCP socket ourselves, the
      assumption was that no additional disconnect is required. But calling
      `libssh2_session_disconnect` will notify the server that we are cleanly
      closing the connection, such that the server can free his own resources.
      
      Add a call to `libssh2_session_disconnect` to fix that issue.
      
      [1]: https://www.libssh2.org/libssh2_session_free.html
      Patrick Steinhardt committed
  32. 19 Mar, 2018 1 commit