summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'maint'Junio C Hamano2009-11-236-6/+26
|\ | | | | | | | | | | | | | | | | | | * maint: pack-objects: split implications of --all-progress from progress activation instaweb: restart server if already running prune-packed: only show progress when stderr is a tty Conflicts: builtin-pack-objects.c
| * pack-objects: split implications of --all-progress from progress activationNicolas Pitre2009-11-234-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the --all-progress flag is used to use force progress display during the writing object phase even if output goes to stdout which is primarily the case during a push operation. This has the unfortunate side effect of forcing progress display even if stderr is not a terminal. Let's introduce the --all-progress-implied argument which has the same intent except for actually forcing the activation of any progress display. With this, progress display will be automatically inhibited whenever stderr is not a terminal, or full progress display will be included otherwise. This should let people use 'git push' within a cron job without filling their logs with useless percentage displays. Signed-off-by: Nicolas Pitre <nico@fluxnic.net> Tested-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * instaweb: restart server if already runningStephen Boyd2009-11-231-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Running 'git instaweb' when an instaweb server is already running will fail (at least when the port is the same) and overwrite the pid file used to track the currently running server. This turns out to be especially annoying when the user tries to stop the previously running server with 'git instaweb --stop' and is instead greeted with an error message because the pid file has been destroyed. Instead of allowing a user to start two instaweb servers, stop the currently running server first and then start the new one. This should be fine because it was never really possible to start two instaweb servers in the first place due to the pid file issue outlined above. Signed-off-by: Stephen Boyd <bebarino@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * prune-packed: only show progress when stderr is a ttyJeff King2009-11-231-1/+1
| | | | | | | | | | | | | | | | This matches the behavior of other git programs, and helps keep cruft out of things like cron job output. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | remote-curl.c: fix rpc_out()Tay Ray Chuan2009-11-231-1/+1
| | | | | | | | | | | | | | | | | | | | | | Remove the extraneous semicolon (';') at the end of the if statement that allowed the code in its block to execute regardless of the condition. This fixes pushing to a smart http backend with chunked encoding. Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | t4014-format-patch: do not assume 'test' is available as non-builtinJohannes Sixt2009-11-231-4/+2
| | | | | | | | | | | | | | | | | | | | | | | | One test case used 'xargs test', which assumes that 'test' is available as external program. At least on MinGW it is not. Moreover, 'git format-patch' was invoked in a pipeline, but not as the last command. Rewrite the test case to catch breakage in 'git format-patch' as well. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | Merge branch 'bg/fetch-multi'Junio C Hamano2009-11-2313-115/+492
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bg/fetch-multi: Re-implement 'git remote update' using 'git fetch' builtin-fetch: add --dry-run option builtin-fetch: add --prune option teach warn_dangling_symref to take a FILE argument remote: refactor some logic into get_stale_heads() Add missing test for 'git remote update --prune' Add the configuration option skipFetchAll Teach the --multiple option to 'git fetch' Teach the --all option to 'git fetch'
| * | Re-implement 'git remote update' using 'git fetch'Björn Gustavsson2009-11-101-60/+28
| | | | | | | | | | | | | | | | | | | | | | | | In order not to duplicate functionality, re-implement 'git remote update' in terms of 'git fetch'. Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | builtin-fetch: add --dry-run optionJay Soffian2009-11-102-4/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Teach fetch --dry-run as users of "git remote prune" switching to "git fetch --prune" may expect it. Unfortunately OPT__DRY_RUN() cannot be used as fetch already uses "-n" for something else. Signed-off-by: Jay Soffian <jaysoffian@gmail.com> Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | builtin-fetch: add --prune optionJay Soffian2009-11-102-2/+34
| | | | | | | | | | | | | | | | | | | | | | | | Teach fetch to cull stale remote tracking branches after fetching via --prune. Signed-off-by: Jay Soffian <jaysoffian@gmail.com> Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | teach warn_dangling_symref to take a FILE argumentJay Soffian2009-11-103-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | Different callers of warn_dangling_symref() may want to control whether its output goes to stdout or stderr so let it take a FILE argument. Signed-off-by: Jay Soffian <jaysoffian@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | remote: refactor some logic into get_stale_heads()Jay Soffian2009-11-103-24/+51
| | | | | | | | | | | | | | | | | | | | | | | | Move the logic in builtin-remote.c which determines which local heads are stale to remote.c so it can be used by other builtins. Signed-off-by: Jay Soffian <jaysoffian@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | Add missing test for 'git remote update --prune'Björn Gustavsson2009-11-101-0/+11
| | | | | | | | | | | | | | | Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | Add the configuration option skipFetchAllBjörn Gustavsson2009-11-104-6/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement the configuration skipFetchAll option to allow certain remotes to be skipped when doing 'git fetch --all' and 'git remote update'. The existing skipDefaultUpdate variable is still honored (by 'git fetch --all' and 'git remote update'). (If both are set in the configuration file with different values, the value of the last occurrence will be used.) Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | Teach the --multiple option to 'git fetch'Björn Gustavsson2009-11-104-1/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add the --multiple option to specify that all arguments are either groups or remotes. The primary reason for adding this option is to allow us to re-implement 'git remote update' using fetch. It would have been nice if this option was not needed, but since the colon in a refspec is optional, it is in general not possible to know whether a single, colon-less argument is a remote or a refspec. Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | Teach the --all option to 'git fetch'Björn Gustavsson2009-11-106-22/+247
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'git remote' is meant for managing remotes and 'git fetch' is meant for actually fetching data from remote repositories. Therefore, it is not logical that you must use 'git remote update' to fetch from more than one repository at once. Add the --all option to 'git fetch', to tell it to attempt to fetch from all remotes. Also, if --all is not given, the <repository> argument is allowed to be the name of a group, to allow fetching from all repositories in the group. Other options except -v and -q are silently ignored. Signed-off-by: Björn Gustavsson <bgustavsson@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | bisect: simplify calling visualizer using '--bisect' optionChristian Couder2009-11-221-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit ad3f9a7 (Add '--bisect' revision machinery argument) the '--bisect' option was added to easily pass bisection refs to commands using the revision machinery. So it is now shorter and safer to use the new '--bisect' revision machinery option, than to compute the refs that we must pass. Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Disable CURLOPT_NOBODY before enabling CURLOPT_PUT and CURLOPT_POSTMartin Storsjö2009-11-222-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This works around a bug in curl versions up to 7.19.4, where disabling the CURLOPT_NOBODY option sets the internal state incorrectly considering that CURLOPT_PUT was enabled earlier. The bug is discussed at http://curl.haxx.se/bug/view.cgi?id=2727981 and is corrected in the latest version of curl in CVS. This bug usually has no impact on git, but may surface if using multi-pass authentication methods. Signed-off-by: Martin Storsjo <martin@martin.st> Signed-off-by: Tay Ray Chuan <rctay89@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | config documentation: some configs are auto-set by git-initMatthew Ogilvie2009-11-221-2/+22
| | | | | | | | | | | | | | | | | | | | | | | | Add documentation for core.ignorecase, and mention git-init in core.filemode and core.symlinks. Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | cvsserver doc: database generally can not be reproduced consistentlyMatthew Ogilvie2009-11-221-4/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A regenerated git-cvsserver database is at risk of having different CVS revision numbers from an incrementally updated database. Mention this in the the documentation, and remove an erroneous statement to the contrary. Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Git v1.6.6-rc0v1.6.6-rc0Junio C Hamano2009-11-221-1/+22
| | | | | | | | | | | | Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge branch 'maint'Junio C Hamano2009-11-222-6/+0
|\ \ \ | | |/ | |/| | | | | | | * maint: Documentation: undocument gc'd function graph_release()
| * | Documentation: undocument gc'd function graph_release()Greg Price2009-11-192-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | graph_release() was removed in 064bfbd. Cut it from the API documentation and a comment. Signed-off-by: Greg Price <price@ksplice.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | Merge git://git.bogomips.org/git-svnJunio C Hamano2009-11-222-0/+28
|\ \ \ | | | | | | | | | | | | | | | | | | | | * git://git.bogomips.org/git-svn: git svn: strip leading path when making empty dirs git svn: always reuse existing remotes on fetch
| * | | git svn: strip leading path when making empty dirsEric Wong2009-11-222-0/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since unhandled.log stores paths relative to the repository root, we need to strip out leading path components if the directories we're tracking are not the repository root. Reported-by: Björn Steinbrink Signed-off-by: Eric Wong <normalperson@yhbt.net>
| * | | git svn: always reuse existing remotes on fetchEric Wong2009-11-221-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The internal no_reuse_existing flag is set to allow initializing multiple remotes with the same URL, common with SVM users. Unfortunately, this flag caused misbehavior when used with the -R command-line flag for fetching. Signed-off-by: Eric Wong <normalperson@yhbt.net>
* | | | Merge branch 'th/maint-remote-update-help-string'Junio C Hamano2009-11-221-1/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | * th/maint-remote-update-help-string: Update 'git remote update' usage string to match man page.
| * | | | Update 'git remote update' usage string to match man page.Tim Henigan2009-11-151-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit b344e161 taught 'git remote update' to understand [group | remote] as its argument. The man page was updated to document this change, but the usage string was not. Signed-off-by: Tim Henigan <tim.henigan@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'jn/faster-completion-startup'Junio C Hamano2009-11-221-35/+41
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * jn/faster-completion-startup: Speed up bash completion loading
| * | | | | Speed up bash completion loadingJonathan Nieder2009-11-171-35/+41
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since git is not used in each and every interactive xterm, it seems best to load completion support with cold caches and then load each needed thing lazily. This has most of the speed advantage of pre-generating everything at build time, without the complication of figuring out at build time what commands will be available at run time. On this slow laptop, this decreases the time to load git-completion.bash from about 500 ms to about 175 ms. Suggested-by: Kirill Smelkov <kirr@mns.spb.ru> Acked-by: Shawn O. Pearce <spearce@spearce.org> Cc: Stephen Boyd <bebarino@gmail.com> Cc: SZEDER Gábor <szeder@ira.uka.de> Cc: Sverre Rabbelier <srabbelier@gmail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'rj/maint-t9700'Junio C Hamano2009-11-221-1/+1
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * rj/maint-t9700: t9700-perl-git.sh: Fix a test failure on Cygwin
| * | | | | t9700-perl-git.sh: Fix a test failure on CygwinRamsay Jones2009-11-191-1/+1
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The t/t9700/test.pl script uses method invocation syntax when using the Cwd module to determine the current working directory. This fails on cygwin, since cygwin perl specifically checks for any arguments to the cwd() function and croak()'s with the message "Usage: Cwd::cwd()". (In perl v5.8.8 distribution, see the file perl-5.8.8/cygwin/cygwin.c lines 139-157) In order to avoid the problem, we replace the method invocation syntax with a simple function call. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'ls/maint-mailinfo-no-inbody'Junio C Hamano2009-11-2216-5/+122
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * ls/maint-mailinfo-no-inbody: git am/mailinfo: Don't look at in-body headers when rebasing
| * | | | | git am/mailinfo: Don't look at in-body headers when rebasingLukas Sandström2009-11-2016-5/+122
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we are rebasing we know that the header lines in the patch are good and that we don't need to pick up any headers from the body of the patch. This makes it possible to rebase commits whose commit message start with "From" or "Date". Test vectors by Jeff King. Signed-off-by: Lukas Sandström <luksan@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'mo/maint-crlf-doc'Junio C Hamano2009-11-221-3/+4
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * mo/maint-crlf-doc: core.autocrlf documentation: mention the crlf attribute
| * | | | | core.autocrlf documentation: mention the crlf attributeMatthew Ogilvie2009-11-161-3/+4
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The description of the configuration variable is obsolete and wrong (saying only file content is used), not just incomplete. It has used the attribute mechanism for a long time. The documentation of gitattributes mentions the core.autocrlf configuration variable in its description of crlf attribute. Refer to the gitattributes documentation from here as well. Signed-off-by: Matthew Ogilvie <mmogilvi_git@miniinfo.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'th/remote-usage'Junio C Hamano2009-11-222-21/+52
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * th/remote-usage: git remote: Separate usage strings for subcommands
| * | | | | git remote: Separate usage strings for subcommandsTim Henigan2009-11-202-21/+52
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the usage string for a subcommand must be printed, only print the information relevant to that command. This commit also removes the complete options list from the first line of the subcommand usage string. Instead, individual options are documented in the detailed description following the general usage line. Signed-off-by: Tim Henigan <tim.henigan@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'pb/maint-use-custom-perl'Junio C Hamano2009-11-224-4/+5
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * pb/maint-use-custom-perl: Make sure $PERL_PATH is defined when the test suite is run.
| * | | | | Make sure $PERL_PATH is defined when the test suite is run.Philippe Bruhat (BooK)2009-11-174-4/+5
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some test scripts run Perl scripts as if they were git-* scripts, and thus need to use the same perl that will be put in the shebang line of git*.perl commands. $PERL_PATH therefore needs to be used instead of a bare "perl". The tests can fail if another perl is found in $PATH before the one defined in $PERL_PATH. Example test failure caused by this: the perl defined in $PERL_PATH has Error.pm installed, and therefore the Git.pm's Makefile.PL doesn't install the private copy. The perl from $PATH doesn't have Error.pm installed, and all git*.perl scripts invoked during the test will fail loading Error.pm. Makefile patch by Jeff King <peff@peff.net>. Signed-off-by: Philippe Bruhat (BooK) <book@cpan.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'mm/config-pathname-tilde-expand'Junio C Hamano2009-11-225-37/+69
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * mm/config-pathname-tilde-expand: Documentation: avoid xmlto input error expand_user_path: expand ~ to $HOME, not to the actual homedir. Expand ~ and ~user in core.excludesfile, commit.template
| * | | | | Documentation: avoid xmlto input errorJunio C Hamano2009-11-211-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do not write literal "~/" or "~user" but use "{tilde}/" and "{tilde}user"; otherwise the text between them gets enclosed in "<subscript>...</subscript>". Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | expand_user_path: expand ~ to $HOME, not to the actual homedir.Matthieu Moy2009-11-192-8/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 395de250d (Expand ~ and ~user in core.excludesfile, commit.template), we introduced the mechanism. But expanding ~ using getpw is not what people overriding $HOME would usually expect. In particular, git looks for the user's .gitconfig using $HOME, so it's better to be consistent. Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | Expand ~ and ~user in core.excludesfile, commit.templateMatthieu Moy2009-11-175-37/+63
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These config variables are parsed to substitute ~ and ~user with getpw entries. user_path() refactored into new function expand_user_path(), to allow dynamically allocating the return buffer. Original patch by Karl Chen, modified by Matthieu Moy, and further amended by Junio C Hamano. Signed-off-by: Karl Chen <quarl@quarl.org> Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'bc/grep-i-F'Junio C Hamano2009-11-224-6/+27
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * bc/grep-i-F: grep: Allow case insensitive search of fixed-strings
| * | | | | grep: Allow case insensitive search of fixed-stringsBrian Collins2009-11-164-6/+27
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | "git grep" currently an error when you combine the -F and -i flags. This isn't in line with how GNU grep handles it. This patch allows the simultaneous use of those flags. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Brian Collins <bricollins@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
* | | | | Merge branch 'jk/maint-break-rename-reduce-memory'Junio C Hamano2009-11-222-3/+10
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * jk/maint-break-rename-reduce-memory: diffcore-rename: reduce memory footprint by freeing blob data early diffcore-break: save cnt_data for other phases diffcore-break: free filespec data as we go
| * | | | | diffcore-rename: reduce memory footprint by freeing blob data earlyJunio C Hamano2009-11-201-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After running one round of estimate_similarity(), filespecs on either side will have populated their cnt_data fields, and we do not need the blob text anymore. We used to retain the blob data to optimize for smaller projects (not freeing the blob data here would mean that the final output phase would not have to re-read it), but we are efficient enough without such optimization for smaller projects anyway, and freeing memory early will help larger projects. Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | diffcore-break: save cnt_data for other phasesJeff King2009-11-161-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The "break" phase works by counting changes between two blobs with the same path. We do this by splitting the file into chunks (or lines for text oriented files) and then keeping a count of chunk hashes. The "rename" phase counts changes between blobs at two different paths. However, it uses the exact same set of chunk hashes (which are immutable for a given sha1). The rename phase can therefore use the same hash data as break. Unfortunately, we were throwing this data away after computing it in the break phase. This patch instead attaches it to the filespec and lets it live through the rename phase, working under the assumption that most of the time that breaks are being computed, renames will be too. We only do this optimization for files which have actually been broken, as those ones will be candidates for rename detection (and it is a time-space tradeoff, so we don't want to waste space keeping useless data). Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
| * | | | | diffcore-break: free filespec data as we goJeff King2009-11-161-0/+4
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As we look at each changed file and consider breaking it, we load the blob data and make a decision about whether to break, which is independent of any other blobs that might have changed. However, we keep the data in memory while we consider breaking all of the other files. Which means that both versions of every file you are diffing are in memory at the same time. This patch instead frees the blob data as we finish with each file pair, leading to much lower memory usage. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>