curl: update for 7.46.0
[git-osx-installer.git] / README_PATCHES.txt
blob46873737dbbd617dc6947e993194840c2ec77de4
1 Patches Information
2 ===================
4 The various patches, enhancements and downright replacements used to build
5 the version of Git and supplementary software included in the Git OS X
6 Installer are collected here.
8 For the files/patches included herein, some have explicit licenses embedded
9 within them (typically GPLv2).  For the ones that do not explicitly mention
10 a license the standard Git license applies -- this is especially true for
11 any 'Signed-off-by' patches taken from the Git mailing list.  The standard
12 Git license is GPLv2 ONLY.
14 Other files that do not have an explicit license and did not come from the
15 Git mailing list are my own code and where the source file does not say
16 otherwise are licensed under GPLv2 or, at your option, any later version.
19 Git Patches
20 -----------
22 * Use Mac OS X native API to show language translations
24   - `src/build-prefix.h`
25   - `src/gettext.c`
26   - `src/gettext-util.c`
27   - `patches/git-sh-i18n-sh-git_gettext.diff`
28   - `patches/git-gettext-failures.diff`
30 * Use libcurl for imap send
32   - `patches/km/git-imap-send_use_libcurl.txt`
34   This enables using CRAM-MD5 in an imap tunnel without needing OpenSSL.
36 * Use libcurl for send email
38   - `patches/km/git-send-email-libcurl.txt`
40   My own patches to make `git-send-email.perl` use libcurl instead of
41   OpenSSL.  Has not been posted elsewhere.
43 * Use a different pack.windowmemory default setting instead of 0
45   - `patches/windowmemory/q/t_util_sys__memsize.diff`
46   - `patches/windowmemory/q/t_gc_default-windowmemory.diff`
48   My own patches to change the pack.windowmemory default from 0 (meaning
49   unlimited) to a sane default that should avoid memory thrashing especially
50   when running gc --aggressive with a 64-bit address space.  Has not been
51   posted elsewhere.
53 * Avoid PERL5LIB etc. variable conflicts
55   - `patches/km/no-perl-vars.txt`
57   My own patch to unset troublesome Perl environment variables before running
58   subcommands.  This prevents incompatible PERL5LIB libraries from being picked
59   up by Git's perl-based utilities.  Has not been posted elsewhere.
61 * Allow notes refs to be anywhere if given in full
63   - `patches/sc/any-notes-ref.txt`
64   - `patches/km/any-notes-ref-tests.txt`
66   Both patches included in the thread and discussion at:
67   <http://thread.gmane.org/gmane.comp.version-control.git/257281>.
69 * Make git-remote-mediawiki work properly:
71   - `patches/mediawiki/q/t_mediawiki_no-dupes.diff`
72   - `patches/mediawiki/q/t_mediawiki_namespaces.diff`
73   - `patches/mediawiki/q/t_mediawiki_max-revision.diff`
74   - `patches/mediawiki/q/t_mediawiki_mediaimport.diff`
75   - `patches/mediawiki/q/t_mediawiki_many-revisions.difff`
76   - `patches/mediawiki/q/t_mediawiki_empty-commit.diff`
78   My own patches to make git-remote-mediawiki work properly.  The no-dupes
79   patch avoids importing more than one copy of the same history (typically it
80   would import two copies).  The max-revision patch allows it to actually find
81   the correct maximum revision so that a fetchStrategy of 'by_rev' can work
82   properly.  The namespaces patch allows a 'by_rev' fetchStrategy to fetch an
83   update regardless of what namespace it's located in when no pages or
84   categories have been set to otherwise limit the import.  The mediaimport
85   patch allows it to actually find the media to import when the mediaimport
86   flag is set to true and the media has a timestamp that does not exactly match
87   the page's down to the last second.  The many-revisions patch allows a
88   fetchStrategy of 'by_rev' to succeed when the number of revisions that need
89   to be fetched is very larg.  And finally the empty-commit patch preserves
90   a MediaWiki revision that only has a comment when can happen if the revision
91   data has somehow been obliterated.  Have not been posted elsewhere.
93 * Improve usability of git-instaweb:
95   - `patches/instaweb/q/t_instaweb_highlight.diff`
96   - `patches/instaweb/q/t_instaweb_mimetypes.diff`
97   - `patches/instaweb/q/t_instaweb_defaults.diff`
98   - `patches/instaweb/q/t_instaweb_git-browser.diff`
99   - `patches/instaweb/q/t_instaweb_ipv6.diff`
100   - `patches/instaweb/q/t_instaweb_fcgi.diff`
101   - `patches/instaweb/q/t_instaweb_readme.diff`
102   - `patches/instaweb/q/t_instaweb_default-to-local.diff`
103   - `patches/instaweb/q/t_instaweb_no-kill-nothing.diff`
104   - `patches/instaweb/q/t_instaweb_auto-port.diff`
106   My own patches to improve the usability of git instaweb by enabling source
107   highlighting if highlight is available, using the installed copy of
108   mime.types (since there isn't such a file in OS X), enabling pathinfo mode,
109   blame and better rename detection, adding a 'graphiclog' link to the pages
110   that uses git-browser to show a graphic representation of commit ancestry,
111   binding to both IPv4 and IPv6 addresses and browsing to localhost instead of
112   127.0.0.1, enabling readme blob display, defaulting to binding only to the
113   localhost address if `instaweb.local` has not been set at all, avoiding
114   attempting to kill using a process id of "" and finally attempting to
115   automatically select an available port to listen on if one was not specified
116   and the first chosen port is not available.  The ipv6 patch is only effective
117   when using lighttpd as the web server (which is the default).  The fcgi patch
118   enables FCGI mode when the needed FCGI perl module is present.  Have not been
119   posted elsewhere.
121 * Add submodule support to gitweb:
123   - `patches/gitweb/q/gitweb-find-project-dirs-with-.git-gitdir-links.diff`
125   My own patch to allow gitweb to find submodules that use gitdir links.  With
126   this patch using git instaweb in a working tree that contains checked-out
127   submodules makes it very easy to browse the submodules -- without the patch
128   they are not listed in the gitweb projects list.  Has not been posted
129   elsewhere.
131 * Various gitweb bug fixes / enhancements:
133 - `patches/gitweb/q/*.diff`
135   A selection of various patches from Girocco's [1] custom version of
136   gitweb [2] that vastly improves the usability of git instaweb by making
137   gitweb work so much better.
139   [1] <http://repo.or.cz/w/girocco.git>  
140   [2] <http://repo.or.cz/w/git/gitweb.git/blob/girocco:README_FIRST.txt>
142 * contrib/git-log-times:
144   - `patches/km/contrib-git-log-times.txt`
146   My own patch that adds contrib/git-log-times a git log --oneline alternative
147   that includes dates, times and initials.  See the README file in the patch.
148   Has not been posted elsewhere.
151 Curl Patches
152 ------------
154 In order to provide compatibility with Mac OS X 10.4 AND web sites using
155 SHA-256/SHA-384 hashes in their certificates, the version of libcurl that has
156 been included as part of the Git OS X Installer uses the darwinssl backend
157 that relies on Secure Transport instead of OpenSSL.
159 Unfortunately the released version of the darwinssl backend has many
160 deficiencies that make it unsuitable for use as a replacement when users are
161 expecting to be able to provide multiple client certificates possibly combined
162 with an RSA private key all in PEM format.
164 Additionally the as-released darwinssl backend doesn't really work on older
165 Mac OS X versions as-is.  Oh it may compile on Mac OS X 10.5 without complaints
166 but it immediately crashes and burns when one tries to use it.  And it does not
167 support Mac OS X 10.4 at all as released.
169 * Curl darwinssl backend universal Mac OS X compatibility
171   - `patches/curl/curl_darwinssl_macosx.c`
172   - `patches/curl/stcompat.c`
173   - `patches/curl/stcompat.h`
174   - `patches/curl/q/t_ntlm_no-one-shot.diff`
175   - `patches/curl/q/t_securetransport_extra-data.diff`
176   - `patches/curl/q/t_pinning_darwin.diff`
177   - `patches/curl/q/t_pinning_dummy-key.diff`
179 * Curl mk-ca-bundle script improvements
181   - `patches/curl/q/t_mk-ca-bundle_improvements.diff`
184 Lighttpd Patches
185 ----------------
187 * Allow the darwin sendfile function to be used
189   - `patches/lighttpd/q/t_darwin_sendfile.diff`
191 * Avoid spurious testing failures on darwin
193   - `patches/lighttpd/q/t_darwin_no-test-shutdown.diff`
195 * Avoid testing unsupported crypt md5 on darwin
197   - `patches/lighttpd/q/t_darwin_no-crypt-md5.diff`
199 * Show the correct crypt status in -V output
201   - `patches/lighttpd/q/t_features_crypt.diff`
203 * Properly zero sockaddr structures before use
205   - `patches/lighttpd/q/t_net_zero-sockaddr.diff`
207 * Provide an idle timeout option
209   - `patches/lighttpd/q/t_server_idle-timeout.diff`
211 * A couple of other lighttpd patches are included to
212   avoid having to maintain multiple patch series, but
213   their changes are not relevant to the Git OS X Installer.
216 GnuPG Patches
217 -------------
219 The standard build of gpg does not allow one to create any keys with bit
220 lengths larger than 4096 bits.  (Once created, existing versions of gpg can
221 use such a key without problems.)  However, according to NIST 800-57, a RSA key
222 3072 bits in length only provides 128 bits of security strength.  In order to
223 comply with NIST policy on the use of AES to protect national information and
224 meet the TOP SECRET requirements a security strength of at least 192 bits is
225 required.  That necessitates an RSA key of 7680 bits (see NIST 800-57).  Hence
226 the gpg patch to permit creation of such keys.
228 * Always allow larger RSA keys up to 16384 bits to be created
230   - `patches/gnupg/q/t_gnupg_longer-keys.diff`
232 * Make trailing ":pid:protocol" part of GPG_AGENT_INFO optional (launchd)
234   - `patches/gnupg/q/t_launchd_agent-compat.diff`
237 Compatibility Patches
238 ---------------------
240 Other than the giant Curl darwinssl backend patch, some other compatibility
241 patches are needed in order to build for Mac OS X 10.4 without losing any
242 functionality.
244 These consist of the remaining files in the include and src subdirectories
245 and provide the following compatibility fixes:
247 * Curl support for NTLM on Mac OS X 10.4
249   Special thanks to Libtomcrypt <http://libtom.org/> for providing a public
250   domain version of DES needed to make this work.
252 * Git support CRAM-MD5 when `git-imap-send` is using a tunnel
254   This is really just some glue and an implementation of HMAC MD5 based
255   on RFC 2104 that uses the OS X Common Crypto MD5 hash implementation.
257 * GnuPG support using libedit instead of libreadline
259   This is just some simplistic linker glue (`src/gnupgcompat.c`) and a clever
260   compiler prefix file (`src/gnupg-prefix.h`).
263 Other Stuff
264 -----------
266 For the neophyte using gpg the first time can be rather intimidating.  To this
267 end a copy of the GNU Privacy Handbook has been included here in doc/gnupg.  It
268 has not been modified and was simply copied from the original location at
269 <https://www.gnupg.org/gph/en/manual.html>.