summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'jc/commit-hook-authorship'Junio C Hamano2012-04-155-47/+141
|\ | | | | | | | | | | | | | | | | | | | | | | "git commit --author=$name" did not tell the name that was being recorded in the resulting commit to hooks, even though it does do so when the end user overrode the authorship via the "GIT_AUTHOR_NAME" environment variable. * jc/commit-hook-authorship: commit: pass author/committer info to hooks t7503: does pre-commit-hook learn authorship? ident.c: add split_ident_line() to parse formatted ident line
| * commit: pass author/committer info to hooksjc/commit-hook-authorshipJunio C Hamano2012-03-112-4/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When lying the author name via GIT_AUTHOR_NAME environment variable to "git commit", the hooks run by the command saw it and could act on the name that will be recorded in the final commit. When the user uses the "--author" option from the command line, the command should give the same information to the hook, and back when "git command" was a scripted Porcelain, it did set the environment variable and hooks can learn the author name from it. However, when the command was reimplemented in C, the rewritten code was not very faithful to the original, and hooks stopped getting the authorship information given with "--author". Fix this by exporting the necessary environment variables. Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * t7503: does pre-commit-hook learn authorship?Junio C Hamano2012-03-111-0/+18
| | | | | | | | | | | | | | | | | | When "--author" option is used to lie the authorship to "git commit" command, hooks should learn the author name and email just like when GIT_AUTHOR_NAME and GIT_AUTHOR_EMAIL environment variables are used to lie the authorship. Test this. Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * ident.c: add split_ident_line() to parse formatted ident lineJunio C Hamano2012-03-113-44/+104
| | | | | | | | | | | | | | | | | | | | | | | | | | The commit formatting logic format_person_part() in pretty.c implements the logic to split an author/committer ident line into its parts, intermixed with logic to compute its output using these piece it computes. Separate the former out to a helper function split_ident_line() so that other codepath can use the same logic, and rewrite the function using the helper function. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | Merge branch 'nd/stream-more'Junio C Hamano2012-04-1511-75/+221
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use API to read blob data in smaller chunks in more places to reduce the memory footprint. By Nguyễn Thái Ngọc Duy (6) and Junio C Hamano (1) * nd/stream-more: update-server-info: respect core.bigfilethreshold fsck: use streaming API for writing lost-found blobs show: use streaming API for showing blobs parse_object: avoid putting whole blob in core cat-file: use streaming API to print blobs Add more large blob test cases streaming: make streaming-write-entry to be more reusable
| * | update-server-info: respect core.bigfilethresholdnd/stream-moreNguyễn Thái Ngọc Duy2012-03-072-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This command indirectly calls check_sha1_signature() (add_info_ref -> deref_tag -> parse_object -> ..) , which may put whole blob in memory if the blob's size is under core.bigfilethreshold. As config is not read, the threshold is always 512MB. Respect user settings here. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | fsck: use streaming API for writing lost-found blobsNguyễn Thái Ngọc Duy2012-03-071-6/+2
| | | | | | | | | | | | | | | Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | show: use streaming API for showing blobsNguyễn Thái Ngọc Duy2012-03-072-15/+21
| | | | | | | | | | | | | | | Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | parse_object: avoid putting whole blob in coreNguyễn Thái Ngọc Duy2012-03-072-2/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Traditionally, all the callers of check_sha1_signature() first called read_sha1_file() to prepare the whole object data in core, and called this function. The function is used to revalidate what we read from the object database actually matches the object name we used to ask for the data from the object database. Update the API to allow callers to pass NULL as the object data, and have the function read and hash the object data using streaming API to recompute the object name, without having to hold everything in core at the same time. This is most useful in parse_object() that parses a blob object, because this caller does not have to keep the actual blob data around in memory after a "struct blob" is returned. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | cat-file: use streaming API to print blobsNguyễn Thái Ngọc Duy2012-03-072-2/+27
| | | | | | | | | | | | | | | Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | Add more large blob test casesNguyễn Thái Ngọc Duy2012-03-072-5/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New test cases list commands that should work when memory is limited. All memory allocation functions (*) learn to reject any allocation larger than $GIT_ALLOC_LIMIT if set. (*) Not exactly all. Some places do not use x* functions, but malloc/calloc directly, notably diff-delta. These code path should never be run on large blobs. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | streaming: make streaming-write-entry to be more reusableJunio C Hamano2012-03-073-48/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The static function in entry.c takes a cache entry and streams its blob contents to a file in the working tree. Refactor the logic to a new API function stream_blob_to_fd() that takes an object name and an open file descriptor, so that it can be reused by other callers. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | merge overwrites unstaged changes in renamed fileClemens Buchacher2012-04-151-0/+9
| | | | | | | | | | | | | | | Signed-off-by: Clemens Buchacher <drizzd@aon.at> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Kick off post 1.7.10 cycleJunio C Hamano2012-04-113-2/+31
| | | | | | | | | | | | | | | | | | | | | | | | I tentatively named the release notes "1.7.11" but this may have to be renamed to "1.8" or some other name later. Let's see how well we would do during this cycle. Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | gitweb: Fix unintended "--no-merges" for regular Atom feedSebastian Pipping2012-04-111-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The print_feed_meta() subroutine generates links for feeds with and without merges, in RSS and Atom formats. However because %href_params was not properly reset, it generated links with "--no-merges" for all except the very first link. Before: <link rel="alternate" title="[..] - Atom feed" href="/?p=.git;a=atom;opt=--no-merges" type="application/atom+xml" /> <link rel="alternate" title="[..] - Atom feed (no merges)" href="/?p=.git;a=atom;opt=--no-merges" type="application/atom+xml" /> After: <link rel="alternate" title="[..] - Atom feed" href="/?p=.git;a=atom" type="application/atom+xml" /> <link rel="alternate" title="[..] - Atom feed (no merges)" href="/?p=.git;a=atom;opt=--no-merges" type="application/atom+xml" /> Signed-off-by: Sebastian Pipping <sebastian@pipping.org> Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge branch 'maint'Junio C Hamano2012-04-102-4/+4
|\ \ \ | | | | | | | | | | | | | | | | | | | | * maint: test-subprocess: fix segfault without arguments submodule: fix prototype of gitmodules_config
| * \ \ Merge branch 'maint-1.7.9' into maintJunio C Hamano2012-04-100-0/+0
| |\ \ \ | | | | | | | | | | | | | | | * maint-1.7.9:
| | * \ \ Merge branch 'maint-1.7.8' into maint-1.7.9Junio C Hamano2012-04-102-6/+6
| | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * maint-1.7.8: Documentation/gitweb: trivial English fixes fetch/receive: remove over-pessimistic connectivity check
| | | * \ \ Merge branch 'jc/maint-verify-objects-remove-pessimism' into maint-1.7.8Junio C Hamano2012-04-091-4/+4
| | | |\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * jc/maint-verify-objects-remove-pessimism: fetch/receive: remove over-pessimistic connectivity check
| | | * \ \ \ Merge branch 'dw/gitweb-doc-grammo' into maint-1.7.8Junio C Hamano2012-04-091-2/+2
| | | |\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * dw/gitweb-doc-grammo: Documentation/gitweb: trivial English fixes
| | | * \ \ \ \ Merge branch 'tr/cache-tree' into maint-1.7.8Junio C Hamano2012-04-0910-11/+142
| | | |\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * tr/cache-tree: t0090: be prepared that 'wc -l' writes leading blanks reset: update cache-tree data when appropriate commit: write cache-tree data when writing index anyway Refactor cache_tree_update idiom from commit Test the current state of the cache-tree optimization Add test-scrap-cache-tree
| | | * \ \ \ \ \ Merge branch 'cb/maint-t5541-make-server-port-portable' into maint-1.7.8Junio C Hamano2012-04-092-4/+33
| | | |\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cb/maint-t5541-make-server-port-portable: t5541: check error message against the real port number used remote-curl: Fix push status report when all branches fail
| | | * \ \ \ \ \ \ Merge branch 'cn/maint-rev-list-doc' into maint-1.7.8Junio C Hamano2012-04-091-6/+6
| | | |\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cn/maint-rev-list-doc: Documentation: use {asterisk} in rev-list-options.txt when needed
| | | * \ \ \ \ \ \ \ Merge branch 'tr/maint-bundle-boundary' into maint-1.7.8Junio C Hamano2012-04-092-23/+36
| | | |\ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * tr/maint-bundle-boundary: bundle: keep around names passed to add_pending_object() t5510: ensure we stay in the toplevel test dir t5510: refactor bundle->pack conversion
| | | * \ \ \ \ \ \ \ \ Merge branch 'tr/maint-bundle-long-subject' into maint-1.7.8Junio C Hamano2012-04-095-51/+67
| | | |\ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * tr/maint-bundle-long-subject: t5704: match tests to modern style strbuf: improve strbuf_get*line documentation bundle: use a strbuf to scan the log for boundary commits bundle: put strbuf_readline_fd in strbuf.c with adjustments
| | | * \ \ \ \ \ \ \ \ \ Merge branch 'ph/rerere-doc' into maint-1.7.8Junio C Hamano2012-04-091-7/+12
| | | |\ \ \ \ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * ph/rerere-doc: rerere: Document 'rerere remaining'
| * | | | | | | | | | | | | test-subprocess: fix segfault without argumentsRené Scharfe2012-04-101-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Check if we even have a parameter before checking its value. Running this command without any arguments may not make a lot of sense, but reacting with a segmentation fault is unduly harsh. While we're at it, avoid casting argv by declaring it const right away. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | | | | | | | | | submodule: fix prototype of gitmodules_configRené Scharfe2012-04-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add void to make it match its definition in submodule.c. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | | | | | | | | | | Fix git-subtree install instructionsDavid A. Greene2012-04-091-12/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update the install instructions to reflect the changes for an integrated git-subtree. Signed-off-by: David A. Greene <greened@obbligato.org>
* | | | | | | | | | | | | | Use git-subtree test MakefileDavid A. Greene2012-04-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the Makefile in contrib/subtree/t to run git-subtree tests. Signed-off-by: David A. Greene <greened@obbligato.org>
* | | | | | | | | | | | | | Add subtree test MakefileDavid A. Greene2012-04-091-0/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a Makefile to run subtree tests. This is largely copied from the standard test suite with irrelevant targets removed and some paths altered to account for where subtree tests live. Signed-off-by: David A. Greene <greened@obbligato.org>
* | | | | | | | | | | | | | Install git-subtree from contribDavid A. Greene2012-04-091-20/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Build git-subtree in its contrib directory and install from there. The main Makefile no longer discovers subcommands build in the main build area so we cannot count on it to install git-subtree. The user should make && make install in contrib/subtree to install git-subtree. Change the rule to install the git-subtree manpage. The main Documentation area doesn't directly support installing documentation from other directories so the user will have to do that from within contrib/subtree for now. Signed-off-by: David A. Greene <greened@obbligato.org>
* | | | | | | | | | | | | | Use configure settings for git-subtreeDavid A. Greene2012-04-091-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Include config.make.autogen in the git-subtree contrib area to pick up settings for prefix and other such things. Signed-off-by: David A. Greene <greened@obbligato.org>
* | | | | | | | | | | | | | Use project config filesDavid A. Greene2012-04-091-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use project-wide files to process documentation for git-subtree. Signed-off-by: David A. Greene <greened@obbligato.org>
* | | | | | | | | | | | | | Remove unnecessary git-subtree filesDavid A. Greene2012-04-096-143/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove various files that simply duplicate functionality already provided by the main project files. Signed-off-by: David A. Greene <greened@obbligato.org>
* | | | | | | | | | | | | | Set TEST_DIRECTORYDavid A. Greene2012-04-091-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Set TEST_DIRECTORY to the main git test area. This allows the git-subtree out-of-tree tests to run correctly. Signed-off-by: David A. Greene <greened@obbligato.org>
* | | | | | | | | | | | | | Add 'contrib/subtree/' from commit 'd3a04e06c77d57978bb5230361c64946232cc346'David A. Greene2012-04-0915-0/+2196
|\ \ \ \ \ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git-subtree-dir: contrib/subtree git-subtree-mainline: e8dde3e5f9ddb7cf95a6ff3cea6cf07c3a2db80d git-subtree-split: d3a04e06c77d57978bb5230361c64946232cc346
| * | | | | | | | | | | | | Use Test HarnessDavid A. Greene2012-02-111-241/+405
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clean up the git-subtree tests to conform the git project conventions and use the existing test harness. Signed-off-by: David A. Greene <greened@obbligato.org>
| * | | | | | | | | | | | | Rename TestDavid A. Greene2012-02-111-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename the subtree test file to conform with git project conventions. Signed-off-by: David A. Greene <greened@obbligato.org>
| * | | | | | | | | | | | | Move Tests Into SubdirectoryDavid A. Greene2012-02-111-0/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move the git-subtree tests into a "t" subdir to reflect how testing works at the top level. Signed-off-by: David A. Greene <greened@obbligato.org>
| * | | | | | | | | | | | | Skip commit objects that should be trees, rather than copying them.Avery Pennarun2011-02-281-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | An improvement on the previous patch, based on more reports from Sum-Wai Low.
| * | | | | | | | | | | | | It's also okay if an expected tree object is actually a commit.Avery Pennarun2011-02-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ...that happens with submodules sometimes, so don't panic. Reported by Sum-Wai Low.
| * | | | | | | | | | | | | Added check to order of processed commits.Jesse Greenwald2010-11-091-0/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With debug messages enabled, "incorrect order" will be output whenever a commit is processed before its parents have been processed. This can be determined by checking to see if a parent isn't mapped to a new commit, but it has been processed.
| * | | | | | | | | | | | | Split cmd now processes commits in topo order.Jesse Greenwald2010-11-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added the "--topo-order" option to git rev-list. Without this, it seems that the revision list is coming back in reverse order but it is sorted chronologically. This does not gurantee that parent commits are handled before child commits.
| * | | | | | | | | | | | | Fix a few typos/grammar-o's in the preceding commit.Avery Pennarun2010-10-211-7/+7
| | | | | | | | | | | | | |
| * | | | | | | | | | | | | docs: Description, synopsys, options and examples changes.John Yani2010-10-211-43/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Description: Made the difference from submodules and the subtree merge strategy clearer. Synopsys and options: Synchronize with 'git subtree -h' output. I hope, properly. Examples: Added example descriptions in captions. Small fixes. Signed-off-by: John Yani <vanuan@gmail.com>
| * | | | | | | | | | | | | Fixing eval syntax error.Cole Stanfield2010-10-211-1/+1
| | | | | | | | | | | | | |
| * | | | | | | | | | | | | Fix typo: an -> aAvery Pennarun2010-08-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thanks to Vanuan on github.
| * | | | | | | | | | | | | docs: simplify example 1Bryan Larsen2010-07-211-7/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The documentation was written prior to Wayne Walter's 2-parameter add. Using 2-parameter add in example 1 makes the example much simpler.
| * | | | | | | | | | | | | Another fix for PATH and msysgit.Avery Pennarun2010-06-241-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Evan Shaw tells me the previous fix didn't work. Let's use this one instead, which he says does work. This fix is kind of wrong because it will run the "correct" git-sh-setup *after* the one in /usr/bin, if there is one, which could be weird if you have multiple versions of git installed. But it works on my Linux and his msysgit, so it's obviously better than what we had before.