Mercurial > kallithea
view .travis.yml @ 6476:8b7c0ef62427
search: make "repository:" condition work case-insensitively as expected
Before this revision, "repository:" condition at searching for "Commit
messages" never shows revisions in a repository, of which name uses
upper case letter.
Using ID for "repository" of CHGSETS_SCHEMA preserves case of
repository name at indexing. On the other hand, search condition
itself is forcibly lowered before parsing.
- files in repository "FOO" is indexed as "FOO" in "repository" field
- "repository:FOO" condition is treated as "repository:foo:
Then, indexing search itself is executed case-sensitively. Therefore,
"repository:FOO" condition never show revisions in repository "FOO".
But just making "repository" of CHGSETS_SCHEMA case-insensitive isn't
reasonable enough, because it breaks assumptions below, if there is
case-insensitive name collision between repositories, even though
Kallithea itself can manage such repositories at same time.
- combination of "raw_id" (= revision hash ID) and "repository" is
unique between all known revisions under Kallithea
CHGSETS_SCHEMA assumes this.
This unique-ness is required by Whoosh library to determine
whether index table should be updated or not for that repository.
- searching in a repository shows only revisions in that repository
Before this revision, this filtering is achieve by "repository:"
condition with case-preserved repository name from requested URL.
To make "repository:" search condition work case-insensitively as
expected (without any violation of assumptions above), this revision
does:
- make "repository" of CHGSETS_SCHEMA case-insensitive by
"analyzer=ICASEIDANALYZER"
- introduce "repository_rawname" into SCHEMA and CHGSETS_SCHEMA, to
ensure assumptions described above, by preserving case of
repository name
"repository_rawname" of SCHEMA uses not ID but TEXT, because the
former disable "positions" feature, which is required for
highlight-ing file content (see previous revision for detail).
This revision requires full re-building index tables, because indexing
schemas are changed.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Mon, 23 Jan 2017 02:17:38 +0900 |
parents | e285bb7abb28 |
children |
line wrap: on
line source
language: python python: - "2.6" - "2.7" env: - TEST_DB=sqlite:////tmp/kallithea_test.sqlite - TEST_DB=mysql://root@127.0.0.1/kallithea_test - TEST_DB=postgresql://postgres@127.0.0.1/kallithea_test services: - mysql - postgresql # command to install dependencies before_script: - mysql -e 'create database kallithea_test;' - psql -c 'create database kallithea_test;' -U postgres - git --version before_install: - sudo apt-get remove git - sudo add-apt-repository ppa:pdoes/ppa -y - sudo apt-get update -y - sudo apt-get install git -y install: - pip install mysql-python psycopg2 mock unittest2 - pip install . --use-mirrors # command to run tests script: nosetests notifications: email: - ci@kallithea-scm.org irc: "irc.freenode.org#kallithea" branches: only: - master