Commit Graph

28004 Commits

Author SHA1 Message Date
Jakub Narebski
5fb3cf2317 gitweb: Highlight matched part of project description when searching projects
Use esc_html_match_hl() from earlier commit to mark match in the
_whole_ description when searching projects.

Currently, with this commit, when searching projects there is always
shown full description of a project, and not a shortened one (like for
ordinary projects list view), even if the match is on project name and
not project description.  Because we always show full description of a
project, and not possibly shortened name, there is no need for having
full description on mouseover via title attribute.

Showing full description when there is match on it is useful to avoid
situation where match is in shortened, invisible part.  On the other
hand that makes project search different than projects list view; also
there can be problems with overly-long project descriptions.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-26 22:02:57 -08:00
Jakub Narebski
07a40062ae gitweb: Highlight matched part of project name when searching projects
Use esc_html_match_hl() introduced in previous commit to escape HTML
and mark match, using span element with 'match' class.  Currently only
the 'path' part (i.e. the project name) is highlighted; match might be
on the project description.  Highlighting match in description is left
for next commit.

The code makes use of the fact that defined $search_regexp means that
there was search going on.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-26 22:02:56 -08:00
Jakub Narebski
337da8d2b0 gitweb: Introduce esc_html_match_hl and esc_html_hl_regions
The esc_html_match_hl() subroutine added in this commit will be used
to highlight *all* matches of given regexp, using 'match' class.
Ultimately it is to be used in all match highlighting, starting
with project search, which does not have it yet.

It uses the esc_html_hl_regions() subroutine, which is meant to
highlight in a given string a list of regions (given as a list of
[ beg, end ] pairs of positions in string), using HTML <span> element
with given class.  It could probably be used in other places that
do highlighting of part of ready line, like highlighting of changes
in a diff (diff refinement highlighting).

Implementation and enhancement notes:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Currently esc_html_hl_regions() subroutine doesn't accept any
  parameters, like esc_html() does.  We might want for example to
  pass  nbsp=>1  to it.

  It can easily be done with the following code:

    my %opts = grep { ref($_) ne "ARRAY" } @sel;
    @sel     = grep { ref($_) eq "ARRAY" } @sel;

  This allow adding parameters after or before regions, e.g.:

    esc_html_hl_regions("foo bar", "mark", [ 0, 3 ], -nbsp => 1);

* esc_html_hl_regions() escapes like esc_html(); if we wanted to
  highlight with esc_path(), we could pass subroutine reference
  to now named esc_gen_hl_regions().

    esc_html_hl_regions("foo bar", "mark", \&esc_path, [ 0, 3 ]);

  Note that this way we can handle -nbsp=>1 case automatically,
  e.g.

    esc_html_hl_regions("foo bar", "mark",
                        sub { esc_html(@_, -nbsp=>1) },
                        [ 0, 3 ]);

* Alternate solution for highlighting region of a string would be to
  use the idea that strings are to be HTML-escaped, and references to
  scalars are HTML (like in the idea for generic committags).

  This would require modifying gitweb code or esc_html to get list of
  fragments, e.g.:

    esc_html(\'<span class="mark">', 'foo', \'</span>', ' bar',
             { -nbsp => 1 });

  or

    esc_html([\'<span class="mark">', 'foo', \'</span>', ' bar'],
             -nbsp=>1);

  esc_html_match_hl() could be then simple wrapper around "match
  formatter", e.g.

    esc_html([ render_match_hl($str, $regexp) ], -nbsp=>1);

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-26 22:02:54 -08:00
Jakub Narebski
07b257f940 gitweb: Faster project search
Before searching by some field the information we search for must be
filled in, but we do not have to fill other fields that are not
involved in the search.

To be able to request filling only specified fields,
fill_project_list_info() was enhanced in previous commit to take
additional parameters which specify part of projects info to fill.
This way we can limit doing expensive calculations (like running
git-for-each-ref to get 'age' / "Last changed" info) to doing those
only for projects which we will show as search results.

This commit actually uses this interface, changing gitweb code from
the following behavior

  fill all project info on all projects
  search projects

to behaving like this pseudocode

  fill search fields on all projects
  search projects
  fill all project info on search results

With this commit the number of git commands used to generate search
results is 2*<matched projects> + 1, and depends on number of matched
projects rather than number of all projects (all repositories).

Note: this is 'git for-each-ref' to find last activity, and 'git config'
for each project, and 'git --version' once.

Example performance improvements, for search that selects 2
repositories out of 12 in total:

* Before (warm cache):
  "This page took 0.867151 seconds  and 27 git commands to generate."

* After (warm cache):
  "This page took 0.673643 seconds  and 5 git commands to generate."

Now imagine that they are 5 repositories out of 5000, and cold or
trashed cache case.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-23 12:53:03 -08:00
Jakub Narebski
2e3291ae1d gitweb: Option for filling only specified info in fill_project_list_info
Enhance fill_project_list_info() subroutine to accept optional
parameters that specify which fields in project information needs to
be filled.  If none are specified then fill_project_list_info()
behaves as it used to, and ensure that all project info is filled.

This is in preparation of future lazy filling of project info in
project search and pagination of sorted list of projects.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-23 12:52:16 -08:00
Jakub Narebski
14b289bdf7 gitweb: Refactor checking if part of project info need filling
Extract the check if given keys (given parts) of project info needs to
be filled into project_info_needs_filling() subroutine.  It is for now
a thin wrapper around "!exists $project_info->{$key}".

Note that !defined was replaced by more correct !exists.

While at it uniquify treating of all project info, adding checks for
'age' field before running git_get_last_activity(), and also checking
for all keys filled in code protected by conditional, and not only
one.

The code now looks like this

  foreach my $project (@$project_list) {
  	if (given keys need to be filled) {
  		fill given keys
  	}
  	...
  }

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-23 12:49:37 -08:00
Junio C Hamano
b0d66b5110 Sync with maint 2012-02-16 14:27:20 -08:00
Junio C Hamano
d1ba7a4cb7 Update draft release notes to 1.7.9.2
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-16 14:26:32 -08:00
Junio C Hamano
147d071816 Merge branch 'jc/checkout-out-of-unborn' into maint
* jc/checkout-out-of-unborn:
  git checkout -b: allow switching out of an unborn branch
2012-02-16 14:18:06 -08:00
Junio C Hamano
57d6b07f6b Merge branch 'jc/maint-mailmap-output' into maint
* jc/maint-mailmap-output:
  mailmap: always return a plain mail address from map_user()
2012-02-16 14:18:03 -08:00
Junio C Hamano
f3f3c4dec6 Merge branch 'jk/prompt-fallback-to-tty' into maint
* jk/prompt-fallback-to-tty:
  prompt: fall back to terminal if askpass fails
  prompt: clean up strbuf usage
2012-02-16 14:18:00 -08:00
Junio C Hamano
35c60a0807 Merge branch 'jn/gitweb-search-utf-8' into maint
* jn/gitweb-search-utf-8:
  gitweb: Allow UTF-8 encoded CGI query parameters and path_info
2012-02-16 14:17:58 -08:00
Junio C Hamano
6c63ab3ca7 Merge branch 'jc/maint-commit-ignore-i-t-a' into maint
* jc/maint-commit-ignore-i-t-a:
  commit: ignore intent-to-add entries instead of refusing

Conflicts:
	cache-tree.c
2012-02-16 14:08:00 -08:00
Junio C Hamano
c6a4e3f7a7 Merge branch 'mm/empty-loose-error-message' into maint
* mm/empty-loose-error-message:
  fsck: give accurate error message on empty loose object files
2012-02-16 14:00:25 -08:00
Junio C Hamano
f342afafce Merge branch 'nk/ctype-for-perf' into maint
* nk/ctype-for-perf:
  ctype: implement islower/isupper macro
  ctype.c only wants git-compat-util.h
2012-02-16 14:00:16 -08:00
Junio C Hamano
e6d88ca87c Merge branch 'jx/i18n-more-marking' into maint
* jx/i18n-more-marking:
  i18n: format_tracking_info "Your branch is behind" message
  i18n: git-commit whence_s "merge/cherry-pick" message
2012-02-16 13:59:53 -08:00
Zbigniew Jędrzejewski-Szmek
68e4b552a1 man: rearrange git synopsis to fit in 80 lines
The line was extended in 2dd8c3 ('git: add --info-path and --man-path
options'), and the formatted man output stopped fitting into the 80
column window.

Signed-off-by: Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-16 13:01:31 -08:00
Ralf Thielow
a7fab08b6e completion: --list option for git-branch
Signed-off-by: Ralf Thielow <ralf.thielow@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-16 12:33:50 -08:00
Junio C Hamano
5639786f30 Merge branch 'rt/completion-branch-edit-desc' into maint
* rt/completion-branch-edit-desc:
  completion: --edit-description option for git-branch
2012-02-16 12:33:46 -08:00
Junio C Hamano
0364bb135e Merge branch 'jk/git-dir-lookup'
* jk/git-dir-lookup:
  standardize and improve lookup rules for external local repos
2012-02-14 12:57:18 -08:00
Junio C Hamano
10439fc0ef Merge branch 'jk/grep-binary-attribute'
* jk/grep-binary-attribute:
  grep: pre-load userdiff drivers when threaded
  grep: load file data after checking binary-ness
  grep: respect diff attributes for binary-ness
  grep: cache userdiff_driver in grep_source
  grep: drop grep_buffer's "name" parameter
  convert git-grep to use grep_source interface
  grep: refactor the concept of "grep source" into an object
  grep: move sha1-reading mutex into low-level code
  grep: make locking flag global
2012-02-14 12:57:18 -08:00
Junio C Hamano
84f3d6458b Merge branch 'nd/pack-objects-parseopt'
* nd/pack-objects-parseopt:
  pack-objects: convert to use parse_options()
  pack-objects: remove bogus comment
  pack-objects: do not accept "--index-version=version,"
2012-02-14 12:57:18 -08:00
Junio C Hamano
15c540fde9 Merge branch 'dp/i18n-libcharset'
* dp/i18n-libcharset:
  Makefile: introduce CHARSET_LIB to link with -lcharset
2012-02-14 12:57:18 -08:00
Junio C Hamano
d31f3785dc Merge branch 'mh/war-on-extra-refs'
* mh/war-on-extra-refs:
  refs: remove the extra_refs API
  clone: do not add alternate references to extra_refs
  everything_local(): mark alternate refs as complete
  fetch-pack.c: inline insert_alternate_refs()
  fetch-pack.c: rename some parameters from "path" to "refname"
  clone.c: move more code into the "if (refs)" conditional
  t5700: document a failure of alternates to affect fetch
2012-02-14 12:57:18 -08:00
Junio C Hamano
3c1e0d6a79 Merge branch 'lt/pull-no-edit'
* lt/pull-no-edit:
  "git pull" doesn't know "--edit"
2012-02-14 12:57:17 -08:00
Junio C Hamano
a49060324a Merge branch 'bl/gitweb-project-filter'
* bl/gitweb-project-filter:
  gitweb: Harden and improve $project_filter page title
2012-02-14 12:57:17 -08:00
Junio C Hamano
746b6fb968 Merge branch 'jn/ancient-meld-support'
* jn/ancient-meld-support:
  mergetools/meld: Use --help output to detect --output support
2012-02-14 12:57:17 -08:00
Junio C Hamano
63d37c3062 Merge branch 'jk/userdiff-config-simplify'
* jk/userdiff-config-simplify:
  drop odd return value semantics from userdiff_config
2012-02-14 12:57:17 -08:00
Junio C Hamano
5f90b6fa0f Sync with 1.7.9.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-14 09:56:23 -08:00
Junio C Hamano
90020e3bcd Git 1.7.9.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-14 09:53:38 -08:00
Junio C Hamano
a95750c4e8 Merge branch 'jk/maint-tag-show-fixes' into maint
* jk/maint-tag-show-fixes:
  tag: do not show non-tag contents with "-n"
  tag: die when listing missing or corrupt objects
  tag: fix output of "tag -n" when errors occur

Conflicts:
	t/t7004-tag.sh
2012-02-13 23:31:27 -08:00
Junio C Hamano
801b28a34a Merge branch 'bw/inet-pton-ntop-compat' into maint
* bw/inet-pton-ntop-compat:
  Drop system includes from inet_pton/inet_ntop compatibility wrappers
2012-02-13 23:26:31 -08:00
Junio C Hamano
1dcfa8de7c Merge branch 'mp/make-cleanse-x-for-exe' into maint
* mp/make-cleanse-x-for-exe:
  Explicitly set X to avoid potential build breakage
2012-02-13 23:26:25 -08:00
Junio C Hamano
42e283a1bf Merge branch 'jn/merge-no-edit-fix' into maint
* jn/merge-no-edit-fix:
  merge: do not launch an editor on "--no-edit $tag"
2012-02-13 23:24:02 -08:00
Junio C Hamano
6f5e880c68 Sync with maint
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-13 11:48:00 -08:00
Junio C Hamano
58d4203aa6 Update draft release notes to 1.7.9.1
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-13 11:46:47 -08:00
Junio C Hamano
4daf6fc837 Merge branch 'js/add-e-submodule-fix' into maint
* js/add-e-submodule-fix:
  add -e: do not show difference in a submodule that is merely dirty
2012-02-13 11:42:18 -08:00
Junio C Hamano
87cb3b82a4 Merge branch 'jc/parse-date-raw' into maint
* jc/parse-date-raw:
  parse_date(): '@' prefix forces git-timestamp
  parse_date(): allow ancient git-timestamp
2012-02-13 11:42:15 -08:00
Junio C Hamano
5a62b531ae Merge branch 'jc/merge-ff-only-stronger-than-signed-merge' into maint
* jc/merge-ff-only-stronger-than-signed-merge:
  merge: do not create a signed tag merge under --ff-only option
2012-02-13 11:42:11 -08:00
Junio C Hamano
8eb865ba8a Merge branch 'jc/branch-desc-typoavoidance' into maint
* jc/branch-desc-typoavoidance:
  branch --edit-description: protect against mistyped branch name
  tests: add write_script helper function
2012-02-13 11:42:07 -08:00
Junio C Hamano
a78f5582fc Merge branch 'jn/rpm-spec' into maint
* jn/rpm-spec:
  git.spec: Workaround localized messages not put in any RPM
2012-02-13 11:42:04 -08:00
Ævar Arnfjörð Bjarmason
1f5ad6b1a7 t: use sane_unset instead of unset
Change several tests to use the sane_unset function introduced in
v1.7.3.1-35-g00648ba instead of the built-in unset function.

This fixes a failure I was having on t9130-git-svn-authors-file.sh on
Solaris, and prevents several other issues from occurring.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-13 02:29:15 -08:00
Ævar Arnfjörð Bjarmason
d24fbca7a5 Remove Git's support for smoke testing
I'm no longer running the Git smoke testing service at
smoke.git.nix.is due to Smolder being a fragile piece of software not
having time to follow through on making it easy for third parties to
run and submit their own smoke tests.

So remove the support in Git for sending smoke tests to
smoke.git.nix.is, it's still easy to modify the test suite to submit
smokes somewhere else.

This reverts the following commits:

    Revert "t/README: Add SMOKE_{COMMENT,TAGS}= to smoke_report target" -- e38efac87d
    Revert "t/README: Document the Smoke testing" -- d15e9ebc5c
    Revert "t/Makefile: Create test-results dir for smoke target" -- 617344d77b
    Revert "tests: Infrastructure for Git smoke testing" -- b6b84d1b74

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-13 02:29:07 -08:00
Ævar Arnfjörð Bjarmason
6d62c983f7 Makefile: Change the default compiler from "gcc" to "cc"
Ever since the very first commit to git.git we've been setting CC to
"gcc". Presumably this is behavior that Linus copied from the Linux
Makefile.

However unlike Linux Git is written in ANSI C and supports a multitude
of compilers, including Clang, Sun Studio, xlc etc. On my Linux box
"cc" is a symlink to clang, and on a Solaris box I have access to "cc"
is Sun Studio's CC.

Both of these are perfectly capable of compiling Git, and it's
annoying to have to specify CC=cc on the command-line when compiling
Git when that's the default behavior of most other portable programs.

So change the default to "cc". Users who want to compile with GCC can
still add "CC=gcc" to the make(1) command-line, but those users who
don't have GCC as their "cc" will see expected behavior, and as a
bonus we'll be more likely to smoke out new compilation warnings from
our distributors since they'll me using a more varied set of compilers
by default.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-13 02:28:54 -08:00
Дилян Палаузов
b5225286b2 Makefile: introduce CHARSET_LIB to link with -lcharset
On some systems, the function locale_charset() may not be exported from
libiconv but is available from libcharset, and we need -lcharset when
linking.

Introduce a make variable CHARSET_LIB that can be set to -lcharsetlib
on such systems.  Also autodetect this in the configure script by first
looking for the symbol in libiconv, and then libcharset.

Signed-off-by: Дилян Палаузов <dilyan.palauzov@aegee.org>
2012-02-13 00:11:01 -08:00
Junio C Hamano
624d3519c9 Update draft release notes to 1.7.10
Again this round mostly consists of fixes for 1.7.9 in preparation for
merging these topics down to maint for 1.7.9.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-02-12 22:58:36 -08:00
Junio C Hamano
aa47ec99d1 Merge branch 'jc/checkout-out-of-unborn'
* jc/checkout-out-of-unborn:
  git checkout -b: allow switching out of an unborn branch
2012-02-12 22:43:45 -08:00
Junio C Hamano
b95ffc143f Merge branch 'jc/maint-mailmap-output'
* jc/maint-mailmap-output:
  mailmap: always return a plain mail address from map_user()
2012-02-12 22:43:39 -08:00
Junio C Hamano
974e978b09 Merge branch 'jk/prompt-fallback-to-tty'
* jk/prompt-fallback-to-tty:
  prompt: fall back to terminal if askpass fails
  prompt: clean up strbuf usage
2012-02-12 22:43:34 -08:00
Junio C Hamano
d1168b9033 Merge branch 'jn/gitweb-search-utf-8'
* jn/gitweb-search-utf-8:
  gitweb: Allow UTF-8 encoded CGI query parameters and path_info

Conflicts:
	gitweb/gitweb.perl
2012-02-12 22:43:24 -08:00