summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2007-11-11--pretty=format: parse commit message only onceLibravatar René Scharfe1-42/+82
As Jeff King pointed out, some placeholder expansions are related to each other: the steps to calculate one go most of the way towards calculating the other, too. This patch makes format_commit_message() parse the commit message only once, remembering the position of each item. This speeds up handling of format strings containing multiple placeholders from the set %s, %a*, %c*, %e, %b. Here are the timings for the git version in next. The first one is to estimate the overhead of the caching, the second one is taken from http://svn.tue.mpg.de/tentakel/trunk/tentakel/Makefile as an example of a format string found in the wild. The times are the fastest of three consecutive runs in each case: $ time git log --pretty=format:%e >/dev/null real 0m0.381s user 0m0.340s sys 0m0.024s $ time git log --pretty=format:"* %cd %cn%n%n%s%n%b" >/dev/null real 0m0.623s user 0m0.556s sys 0m0.052s And here the times with this patch: $ time git log --pretty=format:%e >/dev/null real 0m0.385s user 0m0.332s sys 0m0.040s $ time git log --pretty=format:"* %cd %cn%n%n%s%n%b" >/dev/null real 0m0.563s user 0m0.504s sys 0m0.048s Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-09--pretty=format: on-demand format expansionLibravatar René Scharfe3-123/+180
Some of the --pretty=format placeholders expansions are expensive to calculate. This is made worse by the current code's use of interpolate(), which requires _all_ placeholders are to be prepared up front. One way to speed this up is to check which placeholders are present in the format string and to prepare only the expansions that are needed. That still leaves the allocation overhead of interpolate(). Another way is to use a callback based approach together with the strbuf library to keep allocations to a minimum and avoid string copies. That's what this patch does. It introduces a new strbuf function, strbuf_expand(). The function takes a format string, list of placeholder strings, a user supplied function 'fn', and an opaque pointer 'context' to tell 'fn' what thingy to operate on. The function 'fn' is expected to accept a strbuf, a parsed placeholder string and the 'context' pointer, and append the interpolated value for the 'context' thingy, according to the format specified by the placeholder. Thanks to Pierre Habouzit for his suggestion to use strchrnul() and the code surrounding its callsite. And thanks to Junio for most of this commit message. :) Here my measurements of most of Paul Mackerras' test cases that highlighted the performance problem (best of three runs): (master) $ time git log --pretty=oneline >/dev/null real 0m0.390s user 0m0.340s sys 0m0.040s (master) $ time git log --pretty=raw >/dev/null real 0m0.434s user 0m0.408s sys 0m0.016s (master) $ time git log --pretty="format:%H {%P} %ct" >/dev/null real 0m1.347s user 0m0.080s sys 0m1.256s (interp_find_active -- Dscho) $ time ./git log --pretty="format:%H {%P} %ct" >/dev/null real 0m0.694s user 0m0.020s sys 0m0.672s (strbuf_expand -- this patch) $ time ./git log --pretty="format:%H {%P} %ct" >/dev/null real 0m0.395s user 0m0.352s sys 0m0.028s Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-09Add strchrnul()Libravatar René Scharfe4-6/+28
As suggested by Pierre Habouzit, add strchrnul(). It's a useful GNU extension and can simplify string parser code. There are several places in git that can be converted to strchrnul(); as a trivial example, this patch introduces its usage to builtin-fetch--tool.c. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-09Update draft release notes for 1.5.4Libravatar Junio C Hamano1-2/+24
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-09Merge branch 'maint'Libravatar Junio C Hamano11-46/+68
* maint: Start preparing for 1.5.3.6 git-send-email: Change the prompt for the subject of the initial message. SubmittingPatches: improve the 'Patch:' section of the checklist instaweb: Minor cleanups and fixes for potential problems stop t1400 hiding errors in tests Makefile: add missing dependency on wt-status.h refresh_index_quietly(): express "optional" nature of index writing better Fix sed string regex escaping in module_name. Avoid a few unportable, needlessly nested "...`...". git-mailsplit: with maildirs not only process cur/, but also new/ Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-09git-bisect.sh: Fix sed script to work with AIX and BSD sed.Libravatar Ralf Wildenhues1-1/+2
\n is not portable in a s/// replacement string, only in the regex part. backslash-newline helps. Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-09Start preparing for 1.5.3.6Libravatar Junio C Hamano2-1/+22
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-09git-send-email: Change the prompt for the subject of the initial message.Libravatar Benoit Sigoure1-1/+1
I never understood what this prompt was asking for until I read the actual source code. I think this wording is much more understandable. Signed-off-by: Benoit Sigoure <tsuna@lrde.epita.fr> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08SubmittingPatches: improve the 'Patch:' section of the checklistLibravatar Sergei Organov1-5/+4
There were 2 items "send patch to..." but having different set of addresses to send patch to. Merge them together and move the resulting item to the end of checklist. Signed-off-by: Sergei Organov <osv@javad.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08instaweb: Minor cleanups and fixes for potential problemsLibravatar Jonas Fonseca1-9/+8
Fix path quoting and test of empty values that some shells do not like. Remove duplicate check and setting of $browser. Signed-off-by: Jonas Fonseca <fonseca@diku.dk> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08stop t1400 hiding errors in testsLibravatar Alex Riesen1-1/+1
The last rm in the test was lacking an "&&" before it, which caused the errors in the commands be silently hidden. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08Makefile: add missing dependency on wt-status.hLibravatar Junio C Hamano1-0/+1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08refresh_index_quietly(): express "optional" nature of index writing betterLibravatar Junio C Hamano1-9/+5
The point of the part of the code this patch touches is that if we modified the active_cache, we try to write it out and make it the index file for later users to use by calling "commit_locked_index", but we do not really care about the failure from this sequence because it is done purely as an optimization. The original code called three functions primarily for their side effects but as condition of an if statement, which is admittedly a bad style. Incidentally, it squelches an "empty if body" warning from gcc. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08Fix sed string regex escaping in module_name.Libravatar Ralf Wildenhues1-1/+1
When escaping a string to be used as a sed regex, it is important to only escape active characters. Escaping other characters is undefined according to POSIX, and in practice leads to issues with extensions such as GNU sed's \+. Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08Avoid a few unportable, needlessly nested "...`...".Libravatar Ralf Wildenhues2-4/+4
Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08Style: place opening brace of a function definition at column 1Libravatar Junio C Hamano8-10/+20
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08contrib/hooks/post-receive-email: remove cruft, $committer is not usedLibravatar Gerrit Pape1-4/+0
Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08hooks--update: decline deleting tags or branches by default, add config optionsLibravatar Gerrit Pape1-2/+31
Decline deleting tags or branches through git push <remote> :<ref> by default, support config options hooks.allowdeletetag, hooks.allowdeletebranch to override this per repository. Before this patch the update hook interpreted deleting a tag, no matter if annotated or not, through git push <remote> :<tag> as unannotated tag, and declined it by default, but with an unappropriate error message: $ git push origin :atag deleting 'refs/tags/atag' *** The un-annotated tag, atag, is not allowed in this repository *** Use 'git tag [ -a | -s ]' for tags you want to propagate. ng refs/tags/atag hook declined error: hooks/update exited with error code 1 error: hook declined to update refs/tags/atag error: failed to push to 'monolith:/git/qm/test-repo' Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08hooks--update: fix test for properly set up project description fileLibravatar Gerrit Pape1-2/+2
The update hook template intends to abort if the project description file hasn't been adjusted or is empty. This patch fixes the check for 'being adjusted'. Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-08git-mailsplit: with maildirs not only process cur/, but also new/Libravatar Gerrit Pape1-16/+22
When saving patches to a maildir with e.g. mutt, the files are put into the new/ subdirectory of the maildir, not cur/. This makes git-am state "Nothing to do.". This patch lets git-mailsplit additional check new/ after reading cur/. This was reported by Joey Hess through http://bugs.debian.org/447396 Signed-off-by: Gerrit Pape <pape@smarden.org> Acked-by: Jeff King <peff@peff.net> Acked-by: Alex Riesen <raa.lkml@gmail.com> Acked-by: Fernando J. Pereda <ferdy@gentoo.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07Merge branch 'jc/clean-config'Libravatar Junio C Hamano4-9/+22
* jc/clean-config: clean: require -f to do damage by default
2007-11-07Merge branch 'gp/reset-q'Libravatar Junio C Hamano2-6/+15
* gp/reset-q: git-reset: add -q option to operate quietly
2007-11-07Merge branch 'ds/maint-deflatebound'Libravatar Junio C Hamano4-1/+28
* ds/maint-deflatebound: Improve accuracy of check for presence of deflateBound.
2007-11-07Merge branch 'cp/p4'Libravatar Junio C Hamano1-4/+89
* cp/p4: git-p4: Detect changes to executable bit and include them in p4 submit. git-p4: Add a helper function to parse the full git diff-tree output.
2007-11-07Merge branch 'maint'Libravatar Junio C Hamano3-2/+114
* maint: Add Documentation/CodingGuidelines When exec() fails include the failing command in the error message RelNotes-1.5.3.5: fix another typo
2007-11-07Merge branch 'mh/work-tree'Libravatar Junio C Hamano6-14/+20
* mh/work-tree: Make git-blame fail when working tree is needed and we're not in one Don't always require working tree for git-rm Use setup_work_tree() in builtin-ls-files.c Refactor working tree setup
2007-11-07Small code readability improvement in show_reference() in builtin-tag.cLibravatar Mike Hommey1-7/+6
Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07send-email: apply --suppress-from to S-o-b and cc-cmdLibravatar Uwe Kleine-König2-4/+4
Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com> Cc: Ryan Anderson <ryan@michonline.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07Fix minor nits in configure.acLibravatar Ralf Wildenhues1-3/+3
Avoid "test -o" as it is only XSI not POSIX, and not portable. Avoid exit(3) in test programs in favor of return, to accommodate for newer Autoconf not providing a declaration for exit. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07Deprecate git-lost-foundLibravatar Johannes Schindelin3-0/+9
"git fsck" learnt the option "--lost-found" in v1.5.3-rc0~5, to make "git lost-found" obsolete. It is time to deprecate "git lost-found". Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07Improve accuracy of check for presence of deflateBound.Libravatar David Symonds4-1/+28
ZLIB_VERNUM isn't defined in some zlib versions, so this patch does a proper linking test in autoconf to see whether deflateBound exists in zlib. Also, setting NO_DEFLATE_BOUND will also work for folk not using autoconf. Signed-off-by: David Symonds <dsymonds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07Add Documentation/CodingGuidelinesLibravatar Johannes Schindelin1-0/+112
Even if our code is quite a good documentation for our coding style, some people seem to prefer a document describing it. The part about the shell scripts is clearly just copied from one of Junio's helpful mails, and some parts were added from comments by Junio, Andreas Ericsson and Robin Rosenberg. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07contrib/hooks/post-receive-email: make subject prefix configurableLibravatar Gerrit Pape1-3/+5
Email subjects are prefixed with "[SCM] " by default, make this optionally configurable through the hooks.emailprefix config option. Suggested by martin f krafft through http://bugs.debian.org/428418 Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07contrib/hooks/post-receive-email: reformat to wrap comments at 76 charsLibravatar Gerrit Pape1-92/+107
Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07contrib/hooks/post-receive-email: fix typoLibravatar Gerrit Pape1-1/+1
Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07restore fetching with thin-pack capabilityLibravatar Nicolas Pitre1-2/+2
Broken since commit fa74052922cf39e5a39ad7178d1b13c2da9b4519. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07When exec() fails include the failing command in the error messageLibravatar Ask Bjørn Hansen1-1/+1
git-svn occasionally fails with no details as to what went wrong - this should help debug those situations. Signed-off-by: Ask Bjørn Hansen <ask@develooper.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-07RelNotes-1.5.3.5: fix another typoLibravatar David D Kilzer1-1/+1
Signed-off-by: David D Kilzer <ddkilzer@kilzer.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-06git-reset: add -q option to operate quietlyLibravatar Gerrit Pape2-6/+15
Many git commands have a -q option to suppress output to stdout, let's have it for git-reset too. This was asked for by Joey Hess through http://bugs.debian.org/444933 Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-05Make git-blame fail when working tree is needed and we're not in oneLibravatar Mike Hommey1-0/+1
Signed-off-by: Mike Hommey <mh@glandium.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-05Don't always require working tree for git-rmLibravatar Mike Hommey2-1/+4
This allows to do git rm --cached -r directory, instead of git ls-files -z directory | git update-index --remove -z --stdin. This can be particularly useful for git-filter-branch users. Signed-off-by: Mike Hommey <mh@glandium.org> Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-05Use setup_work_tree() in builtin-ls-files.cLibravatar Mike Hommey1-5/+2
Signed-off-by: Mike Hommey <mh@glandium.org> Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-05Refactor working tree setupLibravatar Mike Hommey3-8/+13
Create a setup_work_tree() that can be used from any command requiring a working tree conditionally. Signed-off-by: Mike Hommey <mh@glandium.org> Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-05Merge branch 'maint'Libravatar Junio C Hamano7-9/+108
* maint: Remove a couple of duplicated include grep with unmerged index git-daemon: fix remote port number in log entry git-svn: t9114: verify merge commit message in test git-svn: fix dcommit clobbering when committing a series of diffs
2007-11-05Fix comment in strbuf.h to use correct name strbuf_avail()Libravatar Steffen Prohaska1-4/+4
Signed-off-by: Steffen Prohaska <prohaska@zib.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-05Remove a couple of duplicated includeLibravatar Marco Costalba2-2/+0
Signed-off-by: Marco Costalba <mcostalba@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-05grep with unmerged indexLibravatar Junio C Hamano1-1/+1
We called flush_grep() every time we saw an unmerged entry in the index. If we happen to find an unmerged entry before we saw more than two paths, we incorrectly declared that the user had too many non-paths options in front. Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-05Merge branch 'gp/maint-diffdoc' into maintLibravatar Junio C Hamano2-9/+13
* gp/maint-diffdoc: git-diff.txt: add section "output format" describing the diff formats
2007-11-05Some better parse-options documentation.Libravatar Pierre Habouzit1-2/+35
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2007-11-05git-daemon: fix remote port number in log entryLibravatar Gerrit Pape1-2/+2
The port number in struct sockaddr_in needs to be converted from network byte order to host byte order (on some architectures). Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>