<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libgit2.git, branch ethomson/middleware</title>
<subtitle>github.com: libgit2/libgit2.git
</subtitle>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/'/>
<entry>
<title>util: add more to the utility library</title>
<updated>2020-04-08T10:26:54+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-04-08T10:26:54+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=639df9b189ea489f30a1bb6b0c3d67c575262129'/>
<id>639df9b189ea489f30a1bb6b0c3d67c575262129</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>path: split repository-specific functions</title>
<updated>2020-04-08T10:20:45+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-04-08T10:20:45+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=6540600bb554d2bd49650174fc2cd45317fee287'/>
<id>6540600bb554d2bd49650174fc2cd45317fee287</id>
<content type='text'>
Make path.[ch] contain pure utility functions that do not know about
public-facing libgit2 objects, including `git_repository`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make path.[ch] contain pure utility functions that do not know about
public-facing libgit2 objects, including `git_repository`.
</pre>
</div>
</content>
</entry>
<entry>
<title>cli: introduce a clone command</title>
<updated>2020-04-06T11:37:43+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-04-04T17:31:00+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=768e19297b502808eeca681dd102e602a2ba7adb'/>
<id>768e19297b502808eeca681dd102e602a2ba7adb</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>cli: introduce a progress class</title>
<updated>2020-04-06T11:37:24+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-04-04T17:29:34+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=c023fbfca7ba6337797baea47cc2046818dd78a1'/>
<id>c023fbfca7ba6337797baea47cc2046818dd78a1</id>
<content type='text'>
Provide a class that will display progress information to the console.
Initially, it contains callbacks for fetch progress and checkout
progress.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Provide a class that will display progress information to the console.
Initially, it contains callbacks for fetch progress and checkout
progress.
</pre>
</div>
</content>
</entry>
<entry>
<title>cli: introduce a help command</title>
<updated>2020-04-06T11:37:03+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-02-23T11:54:33+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=4f4c7f8cc19cff5b9e36565af6f0c4411f1670ff'/>
<id>4f4c7f8cc19cff5b9e36565af6f0c4411f1670ff</id>
<content type='text'>
Set up a framework for subcommands, and introduce the first, "help".

Help will display the commands available, and information about the
help command itself.

Commands are expected to provide their own usage and help information,
which the help command will proxy to when necessary.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Set up a framework for subcommands, and introduce the first, "help".

Help will display the commands available, and information about the
help command itself.

Commands are expected to provide their own usage and help information,
which the help command will proxy to when necessary.
</pre>
</div>
</content>
</entry>
<entry>
<title>cli: introduce usage</title>
<updated>2020-04-06T11:36:18+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2019-06-09T19:30:22+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=f98c579c7f97cdf33406d40ed23a0f89b2226c9b'/>
<id>f98c579c7f97cdf33406d40ed23a0f89b2226c9b</id>
<content type='text'>
Our options parsing system can also be used as the basis for displaying
command-line usage.  Add usage information, using knowledge of the
console (if we're attached to one) for wrapping nicely.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Our options parsing system can also be used as the basis for displaying
command-line usage.  Add usage information, using knowledge of the
console (if we're attached to one) for wrapping nicely.
</pre>
</div>
</content>
</entry>
<entry>
<title>cli: add global state</title>
<updated>2020-04-06T11:35:18+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-04-06T11:28:59+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=65c20cc259cce0c296703663d9d03825c7efea13'/>
<id>65c20cc259cce0c296703663d9d03825c7efea13</id>
<content type='text'>
As we consume parts of the libgit2 utility functions (like `git_buf`),
we will inevitably need to allocate.  Since we re-use the libgit2
allocation functions - but linked into our application - we'll need
to configure our allocation strategy ahead of time.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As we consume parts of the libgit2 utility functions (like `git_buf`),
we will inevitably need to allocate.  Since we re-use the libgit2
allocation functions - but linked into our application - we'll need
to configure our allocation strategy ahead of time.
</pre>
</div>
</content>
</entry>
<entry>
<title>cli: infrastructure for a cli project</title>
<updated>2020-04-06T11:32:42+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-04-03T11:49:03+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=c8f4d4ba2f87d054e32626b5704f2e188edaa26a'/>
<id>c8f4d4ba2f87d054e32626b5704f2e188edaa26a</id>
<content type='text'>
Introduce a command-line interface for libgit2.  The goal is to be
git-compatible, so that:

1. By creating a git client ourselves, we can understand the needs of
   git clients and produce a common "middleware" for commonly-used
   pieces of client functionality.  For example: interacting with
   other command-line tools, like filter drivers or merge drivers.
   This can assist other git clients.

2. We can benefit from git's unit tests, running their test suite
   against our own CLI to ensure correct behavior.

3. We can easily benchmark ourselves against git to understand where we
   are poorly performing, by running identical commands between git and
   ourselves.

4. We can easily A/B test ourselves against git, at least for read-only
   operations, which will ensure that we are producing identical output.

This commit introduces a simple infrastructure for the CLI.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduce a command-line interface for libgit2.  The goal is to be
git-compatible, so that:

1. By creating a git client ourselves, we can understand the needs of
   git clients and produce a common "middleware" for commonly-used
   pieces of client functionality.  For example: interacting with
   other command-line tools, like filter drivers or merge drivers.
   This can assist other git clients.

2. We can benefit from git's unit tests, running their test suite
   against our own CLI to ensure correct behavior.

3. We can easily benchmark ourselves against git to understand where we
   are poorly performing, by running identical commands between git and
   ourselves.

4. We can easily A/B test ourselves against git, at least for read-only
   operations, which will ensure that we are producing identical output.

This commit introduces a simple infrastructure for the CLI.
</pre>
</div>
</content>
</entry>
<entry>
<title>fixup! libgit2client: a client "middleware" library</title>
<updated>2020-04-06T11:32:42+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-04-06T11:28:05+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=17f93dd86d310b261374ae812735991114851410'/>
<id>17f93dd86d310b261374ae812735991114851410</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>libgit2client: a client "middleware" library</title>
<updated>2020-04-06T10:34:44+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2020-04-06T09:48:34+00:00</published>
<link rel='alternate' type='text/html' href='http://trove.baserock.org/cgit/delta/libgit2.git/commit/?id=25b608e9b78808c967db245bc57bdc329371d767'/>
<id>25b608e9b78808c967db245bc57bdc329371d767</id>
<content type='text'>
Introduce libgit2client, a client "middleware" library.  This is an
experimental set of utility functions and classes for client software
that builds on top of libgit2.

This library might contain - for example - code that invokes filters or
other tools.  This is incredibly useful to share and reuse among
consumers but should be excluded from libgit2 itself.  Users may,
understandably, not want code that executes arbitrary other commands in
libgit2 itself.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Introduce libgit2client, a client "middleware" library.  This is an
experimental set of utility functions and classes for client software
that builds on top of libgit2.

This library might contain - for example - code that invokes filters or
other tools.  This is incredibly useful to share and reuse among
consumers but should be excluded from libgit2 itself.  Users may,
understandably, not want code that executes arbitrary other commands in
libgit2 itself.
</pre>
</div>
</content>
</entry>
</feed>
