summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2012-05-24Avoid sorting if references are added to ref_cache in orderLibravatar Michael Haggerty1-0/+6
The old code allowed many references to be efficiently added to a single directory, because it just appended the references to the containing directory unsorted without doing any searching (and therefore without requiring any intermediate sorting). But the old code was inefficient when a large number of subdirectories were added to a directory, because the directory always had to be searched to see if the new subdirectory already existed, and this search required the directory to be sorted first. The same was repeated for every new subdirectory, so the time scaled like O(N^2), where N is the number of subdirectories within a single directory. In practice, references are often added to the ref_cache in lexicographic order, for example when reading the packed-refs file. So build some intelligence into add_entry_to_dir() to optimize for the case of references and/or subdirectories being added in lexicographic order: if the existing entries were already sorted, and the new entry comes after the last existing entry, then adjust ref_dir::sorted to reflect the fact that the ref_dir is still sorted. Thanks to Peff for pointing out the performance regression that inspired this change. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10do_for_each_ref(): only iterate over the subtree that was requestedLibravatar Michael Haggerty1-7/+28
If the base argument has a "/" chararacter, then only iterate over the reference subdir whose name is the part up to the last "/". Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10refs: store references hierarchicallyLibravatar Michael Haggerty2-49/+232
Store references hierarchically in a tree that matches the pseudo-directory structure of the reference names. Add a new kind of ref_entry (with flag REF_DIR) to represent a whole subdirectory of references. Sort ref_dirs one subdirectory at a time. NOTE: the dirs can now be sorted as a side-effect of other function calls. Therefore, it would be problematic to do something from a each_ref_fn callback that could provoke the sorting of a directory that is currently being iterated over (i.e., the directory containing the entry that is being processed or any of its parents). This is a bit far-fetched, because a directory is always sorted just before being iterated over. Therefore, read-only accesses cannot trigger the sorting of a directory whose iteration has already started. But if a callback function would add a reference to a parent directory of the reference in the iteration, then try to resolve a reference under that directory, a re-sort could be triggered and cause the iteration to work incorrectly. Nevertheless...add a comment in refs.h warning against modifications during iteration. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10sort_ref_dir(): simplify logicLibravatar Michael Haggerty1-10/+11
Use the more usual indexing idiom for clarity. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10refs.c: rename ref_array -> ref_dirLibravatar Michael Haggerty1-98/+97
This purely textual change is in preparation for storing references hierarchically, when the old ref_array structure will represent one "directory" of references. Rename functions that deal with this structure analogously, and also rename the structure's "refs" member to "entries". Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10struct ref_entry: nest the value part in a unionLibravatar Michael Haggerty1-13/+19
This change is obviously silly by itself, but it is a step towards adding a second member to the union. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10check_refname_component(): return 0 for zero-length componentsLibravatar Michael Haggerty1-2/+2
Return 0 (instead of -1) for zero-length components. Move the interpretation of zero-length components as illegal to check_refname_format(). This will make it easier to extend check_refname_format() to also check whether directory names are valid. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10free_ref_entry(): new functionLibravatar Michael Haggerty1-2/+7
Add a function free_ref_entry(). This function will become nontrivial when ref_entry (soon) becomes polymorphic. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10names_conflict(): simplify implementationLibravatar Michael Haggerty1-25/+37
Save a bunch of lines of code and a couple of strlen() calls. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10repack_without_ref(): reimplement using do_for_each_ref_in_array()Libravatar Michael Haggerty1-33/+61
It costs a bit of boilerplate, but it means that the function can be ignorant of how cached refs are stored. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10do_for_each_ref_in_arrays(): new functionLibravatar Michael Haggerty1-29/+53
Extract function do_for_each_ref_in_arrays() from do_for_each_ref(). The new function will be a useful building block for storing refs hierarchically. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10do_for_each_ref_in_array(): new functionLibravatar Michael Haggerty1-10/+23
Extract function do_for_each_ref_in_array() from do_for_each_ref(). The new function will be a useful building block for storing refs hierarchically. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10refs: manage current_ref within do_one_ref()Libravatar Michael Haggerty1-6/+7
Set and clear current_ref within do_one_ref() instead of setting it here and leaving it to somebody else to clear it. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10refs.c: reorder definitions more logicallyLibravatar Michael Haggerty1-253/+256
Reorder definitions in file: first check_refname_format() and helper functions, then the functions for managing the ref_entry and ref_array data structures, then ref_cache, then the more "business-logicky" stuff. No code is changed. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-06Git 1.7.10Libravatar Junio C Hamano3-11/+19
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-06spec: add missing build dependencyLibravatar Felipe Contreras1-0/+1
Otherwise: /usr/bin/perl Makefile.PL PREFIX='/opt/git' INSTALL_BASE='' Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: ...) at Makefile.PL line 1. BEGIN failed--compilation aborted at Makefile.PL line 1. make[1]: *** [perl.mak] Error 2 make: *** [perl/perl.mak] Error 2 Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-03Git 1.7.10-rc4Libravatar Junio C Hamano2-8/+8
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-02Merge branch 'pt/gitk'Libravatar Junio C Hamano1-1/+2
* pt/gitk: gitk: fix setting font display with new tabbed dialog layout. gitk: fix tabbed preferences construction when using tcl 8.4
2012-04-02Sync with 1.7.9.6Libravatar Junio C Hamano3-6/+17
2012-04-02Git 1.7.9.6Libravatar Junio C Hamano4-4/+18
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-02Merge branch 'jc/maint-merge-autoedit' into maintLibravatar Junio C Hamano2-3/+40
* jc/maint-merge-autoedit: merge: backport GIT_MERGE_AUTOEDIT support
2012-04-02gitk: fix setting font display with new tabbed dialog layout.Libravatar Pat Thoyts1-1/+1
The changes to the dialog window tree broke the preview of the selected font on the button. This corrects that issue. Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-02gitk: fix tabbed preferences construction when using tcl 8.4Libravatar Pat Thoyts1-0/+1
In 8.5 the incr command creates the target variable if it does not exist but in 8.4 using incr on a non-existing variable raises an error. Ensure we have created our counter variable when creating the tabbed dialog for non-themed preferences. Reported-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-02Merge git://github.com/git-l10n/git-poLibravatar Junio C Hamano4-19/+7103
Portuguese Portuguese translations from Marco Sousa via Jiang Xin * 'master' of git://github.com/git-l10n/git-po: l10n: Add the Dutch translation team and initialize nl.po l10n: Inital Portuguese Portugal language (pt_PT) l10n: Improve zh_CN translation for Git 1.7.10-rc3
2012-04-02l10n: Add the Dutch translation team and initialize nl.poLibravatar Vincent van Ravesteijn2-0/+3497
Signed-off-by: Vincent van Ravesteijn <vfr@lyx.org>
2012-04-02l10n: Inital Portuguese Portugal language (pt_PT)Libravatar Marco Sousa2-0/+3587
Signed-off-by: Marco Sousa <marcomsousa@gmail.com>
2012-03-30Merge branch 'maint'Libravatar Junio C Hamano1-1/+3
* maint: string-list: document that string_list_insert() inserts unique strings
2012-03-30string-list: document that string_list_insert() inserts unique stringsLibravatar Heiko Voigt1-1/+3
Signed-off-by: Heiko Voigt <hvoigt@hvoigt.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-30l10n: Improve zh_CN translation for Git 1.7.10-rc3Libravatar Jiang Xin1-19/+19
Improvements of zh_CN translations: - Update translation for msg "Changes not staged for commit:". - Remove unnecessary leading spaces for some messages. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2012-03-28config: remove useless assignmentLibravatar René Scharfe1-2/+0
v1.7.9-8-g270a344 (config: stop using config_exclusive_filename) replaced config_exclusive_filename with given_config_file. In one case this resulted in a self-assignment, which is reported by clang as a warning. Remove the useless code. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-28Git 1.7.10-rc3Libravatar Junio C Hamano2-11/+11
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-28correct a few doubled-word nits in comments and documentationLibravatar Jim Meyering4-4/+4
Found by running this command: $ git ls-files -z|xargs -0 perl -0777 -n \ -e 'while (/\b(then?|[iao]n|i[fst]|but|f?or|at|and|[dt]o)\s+\1\b/gims)' \ -e ' {' \ -e ' $n = ($` =~ tr/\n/\n/ + 1);' \ -e ' ($v = $&) =~ s/\n/\\n/g;' \ -e ' print "$ARGV:$n:$v\n";' \ -e ' }' Why not just git grep -E ...? That wouldn't work then the doubled words are separated by a newline. This is derived from a Makefile syntax-check rule in gnulib's maint.mk: http://git.sv.gnu.org/cgit/gnulib.git/tree/top/maint.mk Signed-off-by: Jim Meyering <meyering@redhat.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-28correct spelling: an URL -> a URLLibravatar Jim Meyering8-9/+9
Signed-off-by: Jim Meyering <meyering@redhat.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-27l10n updates for Git 1.7.10-rc1Libravatar Junio C Hamano4-292/+310
* 'master' of git://github.com/git-l10n/git-po: Add url of Swedish l10n team in TEAMS file l10n: Review zh_CN translation for Git 1.7.10-rc1 Update Swedish translation (724t0f0u). l10n: Update zh_CN translation for Git 1.7.10-rc1 l10n: Update git.pot (1 new message)
2012-03-27tests: unset COLUMNS inherited from environmentLibravatar Zbigniew Jędrzejewski-Szmek1-1/+1
$COLUMNS must be unset to not interfere with the tests. The tests already ignore the terminal size because output is redirected to a file, but COLUMNS overrides terminal size detection and changes the test output away from the standard 80. Reported-by: Jeff King <peff@peff.net> Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-27Add url of Swedish l10n team in TEAMS fileLibravatar Jiang Xin1-0/+1
Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2012-03-27l10n: Review zh_CN translation for Git 1.7.10-rc1Libravatar Jiang Xin1-250/+252
Overall review of the zh_CN translation: - Distinguish the translations of index and stage, though they are the same thing. - Many other fixes, e.g., add the lost periods at the end of translated sentences. Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
2012-03-27Update Swedish translation (724t0f0u).Libravatar Peter Krefting1-18/+23
- Update for 1.7.10-rc1. - Add a missing -e when generaring the "Untracked files" message. - Fixed some wordings after playing with the localized version.
2012-03-26Update draft release notes to 1.7.10Libravatar Junio C Hamano1-21/+7
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-26Sync with 1.7.9.5Libravatar Junio C Hamano4-3/+38
2012-03-26Git 1.7.9.5Libravatar Junio C Hamano4-3/+27
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-26Merge branch 'jn/maint-fast-import-empty-ls' into maintLibravatar Junio C Hamano2-0/+43
* jn/maint-fast-import-empty-ls: fast-import: don't allow 'ls' of path with empty components fast-import: leakfix for 'ls' of dirty trees
2012-03-26Merge branch 'ph/rerere-doc' into maintLibravatar Junio C Hamano1-7/+12
* ph/rerere-doc: rerere: Document 'rerere remaining'
2012-03-26Merge branch 'ms/maint-config-error-at-eol-linecount' into maintLibravatar Junio C Hamano2-4/+40
* ms/maint-config-error-at-eol-linecount: config: report errors at the EOL with correct line number
2012-03-26grep doc: add --break / --heading / -W to synopsisLibravatar Mark Lodato1-0/+2
All of the other options were included in the synopsis, so it makes sense to include these as well. Signed-off-by: Mark Lodato <lodatom@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-26Documentation: improve description of GIT_EDITOR and preference orderLibravatar Rodrigo Silva (MestreLion)1-0/+6
Previously GIT_EDITOR was not listed in git(1) "Environment Variables" section, which could be very confusing to users. Include it in "other" subsection along with a link to git-var(1), since that is the page that fully describes all places where editor can be set and also their preference order. Also, git-var(1) did not say that hardcoded fallback 'vi' may have been changed at build time. A user could be puzzled if 'nano' pops up even when none of the mentioned environment vars or config.editor are set. Clarify this. Ideally, the build system should be changed to reflect the chosen fallback editor when creating the man pages. Not sure if that is even possible though. Signed-off-by: Rodrigo Silva (MestreLion) <linux@rodrigosilva.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-26documentation: fix alphabetic ordered list for git-rebase man pageLibravatar Nelson Benitez Leon1-2/+5
An alphabetic ordered list (a.) is converted to numerical in the man page (1.) so context comments naming 'a' were confusing, fix that by not using ordered list notation for 'a' anb 'b' items. Signed-off-by: Nelson Benitez Leon <nelsonjesus.benitez@seap.minhap.es> Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-24Merge gitk changes from Paul Mackerras at git://ozlabs.org/~paulus/gitkLibravatar Junio C Hamano1-130/+282
* git://ozlabs.org/~paulus/gitk: gitk: Teach gitk to respect log.showroot gitk: Add menu items for comparing a commit with the marked commit gitk: Speed up resolution of short SHA1 ids gitk: Use symbolic font names "sans" and "monospace" when available gitk: Skip over AUTHOR/COMMIT_DATE when searching all fields gitk: Make "git describe" output clickable, too gitk: Fix the display of files when filtered by path gitk: Use a tabbed dialog to edit preferences gitk: Use "gitk: repo-top-level-dir" as window title
2012-03-24gitk: Teach gitk to respect log.showrootLibravatar Marcus Karlsson1-1/+9
In early days, all projects managed by git (except for git itself) had the product of a fairly mature development history in their first commit, and it was deemed unnecessary clutter to show additions of these thousands of paths as a patch. "git log" learned to show the patch for the initial commit without requiring --root command line option at 0f03ca9 (config option log.showroot to show the diff of root commits, 2006-11-23). Teach gitk to respect log.showroot. [paulus@samba.org: Cleaned up the Tcl a bit, use --bool on the git config call] Signed-off-by: Marcus Karlsson <mk@acc.umu.se> Signed-off-by: Paul Mackerras <paulus@samba.org>
2012-03-23Git 1.7.10-rc2Libravatar Junio C Hamano2-2/+18
Signed-off-by: Junio C Hamano <gitster@pobox.com>