<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git-suggestion, branch v0.2.1</title>
<subtitle>Diffs and patches for GitHub pull request suggestions</subtitle>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/'/>
<entry>
<title>Increase version v0.2.0 -&gt; v0.2.1</title>
<updated>2020-09-20T00:54:23+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2020-09-20T00:54:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/commit/?id=ce4011af111d814cad7f08a229f983b510d84daa'/>
<id>ce4011af111d814cad7f08a229f983b510d84daa</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Build a static binary</title>
<updated>2020-09-20T00:20:32+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2020-09-20T00:20:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/commit/?id=c6d4fbc68e863b070a3f33db7c87d581569d1db5'/>
<id>c6d4fbc68e863b070a3f33db7c87d581569d1db5</id>
<content type='text'>
I recently tried installing the program via Homebrew on a machine that
didn't have 'libgit2' installed. The Homebrew formula installs pre-built
binaries. Running the binaries gave me an error saying that the
'libgit2' dynamic library couldn't be found.

Change the build configuration to build a "static" binary. It still
links to system dylibs, but I've removed all links to Homebrew dylibs.
These were:

* libgit2
* openssl

Removed the 'openssl' link by adding the 'vendored-openssl' feature to
the 'git2' dependency.

In order to remove the 'libgit2' link, I had to do some more finagling.
Accomplished this by setting an empty `PKG_CONFIG_LIBDIR` when building.
While 'git2' doesn't have a Cargo feature to disable dynamic linking, we
can force static linking by preventing `pkg-config` from finding the
Homebrew-installed 'libgit2'. The 'libgit2-sys' crate's build script
first checks for the library using `pkg-config`, and builds it
statically if it doesn't exist:

https://github.com/rust-lang/git2-rs/blob/43d583fd8b50fad0cfe0bbc334059ce965b6f3fc/libgit2-sys/build.rs#L15-L17

With these changes, the above packages will now be statically linked
with the program's binaries.

Upgrade 'git2' to the latest version (0.13.11) since we're changing its
build configuration.

Before:

    $ otool -L target/release/git-sug*
    target/release/git-sugapply:
      /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57740.60.18)
      /usr/local/opt/libgit2/lib/libgit2.1.0.dylib (compatibility version 1.0.0, current version 1.0.1)
      /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
      /usr/local/opt/openssl@1.1/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
      /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
      /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
    target/release/git-sugapply.d: is not an object file
    target/release/git-sugdiff:
      /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57740.60.18)
      /usr/local/opt/libgit2/lib/libgit2.1.0.dylib (compatibility version 1.0.0, current version 1.0.1)
      /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
      /usr/local/opt/openssl@1.1/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
      /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
      /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
    target/release/git-sugdiff.d: is not an object file

After:

    $ otool -L target/release/git-sug*
    target/release/git-sugapply:
      /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57740.60.18)
      /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
      /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.8.0)
      /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
      /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
    target/release/git-sugapply.d: is not an object file
    target/release/git-sugdiff:
      /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57740.60.18)
      /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
      /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.8.0)
      /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
      /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
    target/release/git-sugdiff.d: is not an object file
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I recently tried installing the program via Homebrew on a machine that
didn't have 'libgit2' installed. The Homebrew formula installs pre-built
binaries. Running the binaries gave me an error saying that the
'libgit2' dynamic library couldn't be found.

Change the build configuration to build a "static" binary. It still
links to system dylibs, but I've removed all links to Homebrew dylibs.
These were:

* libgit2
* openssl

Removed the 'openssl' link by adding the 'vendored-openssl' feature to
the 'git2' dependency.

In order to remove the 'libgit2' link, I had to do some more finagling.
Accomplished this by setting an empty `PKG_CONFIG_LIBDIR` when building.
While 'git2' doesn't have a Cargo feature to disable dynamic linking, we
can force static linking by preventing `pkg-config` from finding the
Homebrew-installed 'libgit2'. The 'libgit2-sys' crate's build script
first checks for the library using `pkg-config`, and builds it
statically if it doesn't exist:

https://github.com/rust-lang/git2-rs/blob/43d583fd8b50fad0cfe0bbc334059ce965b6f3fc/libgit2-sys/build.rs#L15-L17

With these changes, the above packages will now be statically linked
with the program's binaries.

Upgrade 'git2' to the latest version (0.13.11) since we're changing its
build configuration.

Before:

    $ otool -L target/release/git-sug*
    target/release/git-sugapply:
      /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57740.60.18)
      /usr/local/opt/libgit2/lib/libgit2.1.0.dylib (compatibility version 1.0.0, current version 1.0.1)
      /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
      /usr/local/opt/openssl@1.1/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
      /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
      /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
    target/release/git-sugapply.d: is not an object file
    target/release/git-sugdiff:
      /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57740.60.18)
      /usr/local/opt/libgit2/lib/libgit2.1.0.dylib (compatibility version 1.0.0, current version 1.0.1)
      /usr/local/opt/openssl@1.1/lib/libssl.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
      /usr/local/opt/openssl@1.1/lib/libcrypto.1.1.dylib (compatibility version 1.1.0, current version 1.1.0)
      /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
      /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
    target/release/git-sugdiff.d: is not an object file

After:

    $ otool -L target/release/git-sug*
    target/release/git-sugapply:
      /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57740.60.18)
      /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
      /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.8.0)
      /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
      /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
    target/release/git-sugapply.d: is not an object file
    target/release/git-sugdiff:
      /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 57740.60.18)
      /usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
      /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1349.8.0)
      /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1238.60.2)
      /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0)
    target/release/git-sugdiff.d: is not an object file
</pre>
</div>
</content>
</entry>
<entry>
<title>Update TODO</title>
<updated>2020-08-30T18:30:12+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2020-08-30T18:26:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/commit/?id=2ae21ec6fe7897af6946aa7b149916c15d2c216c'/>
<id>2ae21ec6fe7897af6946aa7b149916c15d2c216c</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Increase version v0.1.0 -&gt; v0.2.0</title>
<updated>2020-08-30T18:18:25+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2020-08-30T03:47:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/commit/?id=63610d9a6378c0febb0ef7fceb72c477a2ca6899'/>
<id>63610d9a6378c0febb0ef7fceb72c477a2ca6899</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>git-suggestion-cli: Rename crate to `git-suggestion`</title>
<updated>2020-08-30T02:51:51+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2020-08-30T02:51:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/commit/?id=4477ae635ec67d2b79ac670bbd73b88d4979e786'/>
<id>4477ae635ec67d2b79ac670bbd73b88d4979e786</id>
<content type='text'>
Now that I'm using the name "git-suggestion" in a few places, and from a
user perspective, it's more Git-oriented than GitHub-oriented, I think
the crate should be renamed to reflect that.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now that I'm using the name "git-suggestion" in a few places, and from a
user perspective, it's more Git-oriented than GitHub-oriented, I think
the crate should be renamed to reflect that.
</pre>
</div>
</content>
</entry>
<entry>
<title>doc/git-sugdiff.1: Add a note about Git diff option support</title>
<updated>2020-08-30T02:27:39+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2020-08-30T02:27:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/commit/?id=436c09d6484b657056db07f68b11da116bbd0307'/>
<id>436c09d6484b657056db07f68b11da116bbd0307</id>
<content type='text'>
Not sure if I should be emphasising this more.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Not sure if I should be emphasising this more.
</pre>
</div>
</content>
</entry>
<entry>
<title>diff_options: Add doc comments</title>
<updated>2020-08-30T00:59:42+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2020-08-30T00:59:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/commit/?id=118d466716ca688e3d1f5857cf8ea35b23c8e704'/>
<id>118d466716ca688e3d1f5857cf8ea35b23c8e704</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>diff_options: Sort and uniq `FLAGS`</title>
<updated>2020-08-30T00:56:23+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2020-08-30T00:56:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/commit/?id=61e582cf930bfa0bbc20c5c7c3c4b3a6098ce53e'/>
<id>61e582cf930bfa0bbc20c5c7c3c4b3a6098ce53e</id>
<content type='text'>
Make the list easier to scan by ordering it alphabetically. Also, I
noticed there were two `-p` flags listed, so ran the flags through
`uniq`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Make the list easier to scan by ordering it alphabetically. Also, I
noticed there were two `-p` flags listed, so ran the flags through
`uniq`.
</pre>
</div>
</content>
</entry>
<entry>
<title>diff_options::parse(): Rename `found_args` to `diff_args`</title>
<updated>2020-08-30T00:56:12+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2020-08-30T00:50:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/commit/?id=da974e4d4ce45ee7798b53b52b3a152dfb56eaae'/>
<id>da974e4d4ce45ee7798b53b52b3a152dfb56eaae</id>
<content type='text'>
Now that I added `program_args`, reading this back over I realised
`found_args` didn't convey enough information about what it contains.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now that I added `program_args`, reading this back over I realised
`found_args` didn't convey enough information about what it contains.
</pre>
</div>
</content>
</entry>
<entry>
<title>diff_options: Merge `FLAGS` and `OPTIONS`</title>
<updated>2020-08-30T00:41:15+00:00</updated>
<author>
<name>Teddy Wing</name>
</author>
<published>2020-08-30T00:41:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/git-suggestion/commit/?id=2b1e644ead40145f0b1b84f286b48948fb314311'/>
<id>2b1e644ead40145f0b1b84f286b48948fb314311</id>
<content type='text'>
Didn't look closely enough in d9b8838a5d99e643a751d042047644cfa4a9a032,
but we now have the exact same handling for key-value options and flags.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Didn't look closely enough in d9b8838a5d99e643a751d042047644cfa4a9a032,
but we now have the exact same handling for key-value options and flags.
</pre>
</div>
</content>
</entry>
</feed>
