patches: use the correct plural translation form for French
[git-osx-installer.git] / README_PATCHES.txt
blob1588a14f406eaed3c03db90204aa5b86bf451337
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 * Support Tcl 8.4 for git-gui
45   - `patches/km/git-gui-tcl-8_4.txt`
47   My own patch to make git-gui actually work with Tcl 8.4 which is all
48   it's supposed to require.  Posted to the list and picked up at:
49   <http://thread.gmane.org/gmane.comp.version-control.git/262055>.
50   Included in Git 2.4.0 now.
52 * Support auto threads detection on older OS X
54   - `patches/km/thread-utils-osx.txt`
56   My own patch to make thread-utils.c online_cpus function return the
57   correct value on older Mac OS X versions.  Included in Git 2.4.0 now.
59 * Use a different pack.windowmemory default setting instead of 0
61   - `patches/km/window-memory-default.txt`
63   My own patch to change the pack.windowmemory default from 0 (meaning
64   unlimited) to a sane default that should avoid memory thrashing especially
65   when running gc --aggressive with a 64-bit address space.  Has not been
66   posted elsewhere.
68 * Avoid PERL5LIB etc. variable conflicts
70   - `patches/km/no-perl-vars.txt`
72   My own patch to unset troublesome Perl environment variables before running
73   subcommands.  This prevents incompatible PERL5LIB libraries from being picked
74   up by Git's perl-based utilities.  Has not been posted elsewhere.
76 * Allow notes refs to be anywhere if given in full
78   - `patches/sc/any-notes-ref.txt`
79   - `patches/km/any-notes-ref-tests.txt`
81   Both patches included in the thread and discussion at:
82   <http://thread.gmane.org/gmane.comp.version-control.git/257281>.
84 * Backport contrib/hooks/pre-auto-gc-battery update
86   - `patches/pa/pre-auto-gc-newer-osx.txt`
88   A backport of c54c7b37 that first appeared in Git 2.4.6 that updates
89   the checking for newer osxen.
91 * Improve usability of git-instaweb:
93   - `patches/instaweb/q/t_instaweb_subdir.diff`
94   - `patches/instaweb/q/t_instaweb_highlight.diff`
95   - `patches/instaweb/q/t_instaweb_mimetypes.diff`
96   - `patches/instaweb/q/t_instaweb_defaults.diff`
97   - `patches/instaweb/q/t_instaweb_git-browser.diff`
98   - `patches/instaweb/q/t_instaweb_ipv6.diff`
99   - `patches/instaweb/q/t_instaweb_fcgi.diff`
100   - `patches/instaweb/q/t_instaweb_readme.diff`
101   - `patches/instaweb/q/t_instaweb_default-to-local.diff`
102   - `patches/instaweb/q/t_instaweb_no-kill-nothing.diff`
103   - `patches/instaweb/q/t_instaweb_auto-port.diff`
105   My own patches to improve the usability of git instaweb by making it run
106   from within a git checkout that is not at the top-level of the working tree,
107   enable source highlighting if highlight is available, use the installed copy
108   of mime.types (since there isn't such a file in OS X), enable pathinfo mode,
109   blame and better rename detection, add a 'graphiclog' link to the pages that
110   uses git-browser to show a graphic representation of commit ancestry, to bind
111   to both IPv4 and IPv6 addresses and browse to localhost instead of 127.0.0.1,
112   to enable readme blob display, to default to binding only to the localhost
113   address if `instaweb.local` has not been set at all, to avoid attempting to
114   kill using a process id of "" and finally to attempt to automatically select
115   an available port to listen on if one was not specified and the first chosen
116   port is not available.  The ipv6 patch is only effective when using lighttpd
117   as the web server (which is the default).  The fcgi patch enables FCGI mode
118   if the FCGI perl module is present.  Have not been posted elsewhere.
120 * Add submodule support to gitweb:
122   - `patches/gitweb/q/gitweb-find-project-dirs-with-.git-gitdir-links.diff`
124   My own patch to allow gitweb to find submodules that use gitdir links.  With
125   this patch using git instaweb in a working tree that contains checked-out
126   submodules makes it very easy to browse the submodules -- without the patch
127   they are not listed in the gitweb projects list.  Has not been posted
128   elsewhere.
130 * Various gitweb bug fixes / enhancements:
132 - `patches/gitweb/q/*.diff`
134   A selection of various patches from Girocco's [1] custom version of
135   gitweb [2] that vastly improves the usability of git instaweb by making
136   gitweb work so much better.
138   [1] <http://repo.or.cz/w/girocco.git>  
139   [2] <http://repo.or.cz/w/git/gitweb.git/blob/girocco:README_FIRST.txt>
142 Curl Patches
143 ------------
145 In order to provide compatibility with Mac OS X 10.4 AND web sites using
146 SHA-256/SHA-384 hashes in their certificates, the version of libcurl that has
147 been included as part of the Git OS X Installer uses the darwinssl backend
148 that relies on Secure Transport instead of OpenSSL.
150 Unfortunately the released version of the darwinssl backend has many
151 deficiencies that make it unsuitable for use as a replacement when users are
152 expecting to be able to provide multiple client certificates possibly combined
153 with an RSA private key all in PEM format.
155 Additionally the as-released darwinssl backend doesn't really work on older
156 Mac OS X versions as-is.  Oh it may compile on Mac OS X 10.5 without complaints
157 but it immediately crashes and burns when one tries to use it.  And it does not
158 support Mac OS X 10.4 at all as released.
160 * Curl darwinssl backend universal Mac OS X compatibility
162   - `patches/curl/curl_darwinssl_macosx.c`
163   - `patches/curl/stcompat.c`
164   - `patches/curl/stcompat.h`
165   - `patches/curl/q/t_ntlm_no-one-shot.diff`
166   - `patches/curl/q/t_securetransport_extra-data.diff`
167   - `patches/curl/q/t_pinning_darwin.diff`
168   - `patches/curl/q/t_pinning_dummy-key.diff`
170 * Curl mk-ca-bundle script improvements
172   - `patches/curl/q/t_mk-ca-bundle_improvements.diff`
175 Lighttpd Patches
176 ----------------
178 * Allow the darwin sendfile function to be used
180   - `patches/lighttpd/q/t_darwin_sendfile.diff`
182 * Avoid spurious testing failures on darwin
184   - `patches/lighttpd/q/t_darwin_no-test-shutdown.diff`
186 * Avoid testing unsupported crypt md5 on darwin
188   - `patches/lighttpd/q/t_darwin_no-crypt-md5.diff`
190 * Show the correct crypt status in -V output
192   - `patches/lighttpd/q/t_features_crypt.diff`
194 * Properly zero sockaddr structures before use
196   - `patches/lighttpd/q/t_net_zero-sockaddr.diff`
198 * Provide an idle timeout option
200   - `patches/lighttpd/q/t_server_idle-timeout.diff`
202 * A couple of other lighttpd patches are included to
203   avoid having to maintain multiple patch series, but
204   their changes are not relevant to the Git OS X Installer.
207 GnuPG Patches
208 -------------
210 The standard build of gpg does not allow one to create any keys with bit
211 lengths larger than 4096 bits.  (Once created, existing versions of gpg can
212 use such a key without problems.)  However, according to NIST 800-57, a RSA key
213 3072 bits in length only provides 128 bits of security strength.  In order to
214 comply with NIST policy on the use of AES to protect national information and
215 meet the TOP SECRET requirements a security strength of at least 192 bits is
216 required.  That necessitates an RSA key of 7680 bits (see NIST 800-57).  Hence
217 the gpg patch to permit creation of such keys.
219 * Always allow larger RSA keys up to 16384 bits to be created
221   - `patches/gnupg/q/t_gnupg_longer-keys.diff`
223 * Make trailing ":pid:protocol" part of GPG_AGENT_INFO optional (launchd)
225   - `patches/gnupg/q/t_launchd_agent-compat.diff`
228 Compatibility Patches
229 ---------------------
231 Other than the giant Curl darwinssl backend patch, some other compatibility
232 patches are needed in order to build for Mac OS X 10.4 without losing any
233 functionality.
235 These consist of the remaining files in the include and src subdirectories
236 and provide the following compatibility fixes:
238 * Curl support for NTLM on Mac OS X 10.4
240   Special thanks to Libtomcrypt <http://libtom.org/> for providing a public
241   domain version of DES needed to make this work.
243 * Git support CRAM-MD5 when `git-imap-send` is using a tunnel
245   This is really just some glue and an implementation of HMAC MD5 based
246   on RFC 2104 that uses the OS X Common Crypto MD5 hash implementation.
248 * GnuPG support using libedit instead of libreadline
250   This is just some simplistic linker glue (`src/gnupgcompat.c`) and a clever
251   compiler prefix file (`src/gnupg-prefix.h`).
254 Other Stuff
255 -----------
257 For the neophyte using gpg the first time can be rather intimidating.  To this
258 end a copy of the GNU Privacy Handbook has been included here in doc/gnupg.  It
259 has not been modified and was simply copied from the original location at
260 <https://www.gnupg.org/gph/en/manual.html>.