summaryrefslogtreecommitdiffstatshomepage
path: root/ui-repolist.c (unfollow)
Commit message (Collapse)AuthorLines
2009-08-18Add and use a common readfile() functionLars Hjemli-9/+10
This function is used to read the full content of a textfile into a newly allocated buffer (with zerotermination). It replaces the earlier readfile() in scan-tree.c (which was rather error-prone[1]), and is reused by read_agefile() in ui-repolist.c. 1: No checks for EINTR and EAGAIN, fixed-size buffer Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-18truncate buffer before reading empty filesSimon Arlott-0/+1
If readfile() reads an empty file, fgets() won't truncate the buffer and it'll still contain the contents of the previously read file. [lh: fixed similar issue in ui-repolist.c] Signed-off-by: Simon Arlott <simon@fire.lp0.eu> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2009-08-09Add 'about-filter' and 'repo.about-filter' optionsLars Hjemli-2/+7
These options can be used to execute a filter command on each about-page, both top-level and for each repository (repo.about-filter can be used to override the current about-filter). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-12-05ui-repolist: avoid build warning for strcasestr(3)Lars Hjemli-0/+4
The non-standard function strcasestr is only defined if _GNU_SOURCE has also been defined. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-11-29ui-log: add support for showing the full commit messageLars Hjemli-1/+1
Some users prefer to see the full message, so to make these users happy the new querystring parameter "showmsg" can be used to print the full commit message per log entry. A link is provided in the log heading to make this function accessible, and all links and forms tries to preserve the users preference. Note: the new link is not displayed on the summary page since the point of the summary page is to be a summary, but it is still obeyed if specified manually. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-11-29ui-repolist: implement lazy caching of repo->mtimeLars Hjemli-4/+12
When sorting the list of repositories by their last modification time, cgit would (in the worst case) invoke fstat(3) four times and open(3) twice for each callback from qsort(3). This obviously scales very badly. Now, the calculated modtime for each repo is saved in repo->mtime, thus keeping the number of stat/open invocations identical for sorted and unsorted repo-listings. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-11-29ui-repolist: sort null values lastLars Hjemli-2/+2
When sorting on e.g. owner, it's not interesting to get all repos without owner at the top of the list. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-11-29ui-repolist: add support for sorting any columnLars Hjemli-9/+83
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-11-29ui-repolist: extract get_repo_modtime() from print_modtime()Lars Hjemli-27/+19
The new function is then used by both print_modtime() and cgit_reposort_modtime(). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-11-29Add support for sorting by Age in the repolistBenjamin Close-3/+36
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-11-14ui-repolist: handle empty agefilesLars Hjemli-1/+2
When the agefile was empty the old code would happily reuse the static buffer filled by a previous call to read_agefile(). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-10-05ui-repolist + ui-shared: Use cgit_summary_link()Lars Hjemli-6/+2
This makes is possible to use cgit with repository urls containing special url characters like '#' and '?'. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-09-15ui-repolist: enable filtering of repos by pathLars Hjemli-1/+10
If a repo url is specified but no exact match is found in the list of repos the url will now be used as a prefix-filter. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-05-03Add a pager on the repolistLars Hjemli-1/+18
This enables a pager on the repolist which restricts the number of entries displayed per page, controlled by the new option `max-repo-count` (default value 50). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-29Prepare for 'about site' page / add 'root-readme' option to cgitrcLars Hjemli-0/+6
The new option names a file which will be included on a new page, next to the current 'index' page. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-29Move included header-file out of repolist tableLars Hjemli-6/+3
When the 'index-header' option is specified in cgitrc we used to print the included file content inside the repolist table, which is bad style. This commit makes the included file be printed before the table. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-14Make a few more columns in repolist and log view clickableLars Hjemli-0/+2
Less mouse movement is nice. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-13Make repository search case insensitiveLars Hjemli-4/+4
This reuses the strcasestr() compiled or linked by libgit.a to implement a case insensitive variation of the repository search. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-13Implement minimal freetext search in the repolistLars Hjemli-12/+37
This makes the repolist much more usable when there's a lot of repositories registered in cgitrc. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-04-13More layout fixesLars Hjemli-1/+1
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-24Add ui-shared.hLars Hjemli-0/+1
This is finally a proper headerfile for the shared ui-functions which used to reside in cgit.h Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-24Remove obsolete cacheitem parameter to ui-functionsLars Hjemli-1/+1
This parameter hasn't been used for a very long time... Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-24Add struct cgit_page to cgit_contextLars Hjemli-2/+4
This struct is used when generating http headers, and as such is another small step towards the goal of the whole cleanup series; to invoke each page/view function with a function pointer. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-03-18Introduce html.hLars Hjemli-1/+2
All html-functions can be quite easily separated from the rest of cgit, so lets do it; the only issue was html_filemode which uses some git-defined macros so the function is moved into ui-shared.c::cgit_print_filemode(). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-02-16Move cgit_repo into cgit_contextLars Hjemli-15/+15
This removes the global variable which is used to keep track of the currently selected repository, and adds a new variable in the cgit_context structure. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2008-02-16Add all config variables into struct cgit_contextLars Hjemli-9/+9
This removes another big set of global variables, and introduces the cgit_prepare_context() function which populates a context-variable with compile-time default values. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-11-11Fix html error detected by test-suiteLars Hjemli-1/+1
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-11-03Add search parameters to cgit_log_linkLars Hjemli-1/+2
This makes the [prev] and [next] links work correctly on search results. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-06-29Add ofs argument to cgit_log_link and use it in ui-log.cLars Hjemli-1/+1
This fixes a bug in the prev/next links on the log page: when on the default branch the links to prev/next page would contain h=(null). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-06-19Add setting to enable/disable extra links on index pageLars Hjemli-12/+23
The summary/log/tree links displayed for each repository on the index page lost some of their purpose when the header menu was added, so this commit introduces the parameter 'enable-index-links' which must be set to 1 to enable these links. Suggested-by: Kristian Høgsberg <krh@bitplanet.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-06-18Change S/L/T to summary/log/treeLars Hjemli-4/+4
In yet another attempt at better usability, the cryptic S/L/T links are changed to show their full name. Suggested-by: Kristian Høgsberg <krh@bitplanet.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-06-18Change "files" to "tree"Lars Hjemli-1/+1
This renames the menu link and the shortcut on the repo index page from the strange "files" to the more gittish "tree". Suggested-by: Kristian Høgsberg <krh@bitplanet.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-06-17Add git_log_link() and fix bug in generic repolink functionLars Hjemli-3/+1
The generic repolink function compared head with cgit_query_head, which almost always would be the same pointer. The test now compares with repo.defbranch, which is the wanted behavour. Bug discovered while adding cgit_log_link(), so this commit also contain that change. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-06-17Add and use cgit_tree_link()Lars Hjemli-19/+16
This creates a new function used to generate links to 'tree' page and uses the function everywhere a link to the 'tree' page is generated. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-23Remove unused variable from ui-repolist.c:read_agefile()Lars Hjemli-1/+0
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-22Show time since last change on index pageLars Hjemli-1/+39
When creating the index page, an optional file can be scanned per repository to obtain a timestamp for last modification within the repo. If such a file cannot be found, st_mtime for repo.defbranch is used instead. This information is then printed in a new column, "Idle", using the new function cgit_print_age(). The new parameter "repo.agefile" can be used to specify (globally) a relative path to scan (default value is "info/web/last-modified"). The content of the "last-modified" file can be generated by the post-receive hook with a command like this: git-for-each-ref --format="%(committerdate)" --sort=-committerdate \ --count=1 > $GIT_DIR/info/web/last-modified Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-21Make frontpage friendlierLars Hjemli-13/+11
This is an attempt to make the index page more usable by changing how repo groups and repo links are displayed. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-19Teach cgit howto include an external file on index page.Lars Hjemli-0/+5
The new parameter index-header can be used to name an external file which will be included verbatim at the top of the index page. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-18Don't highlight repogroup headingsLars Hjemli-1/+1
Specify class='nohover' to avoid highlighting this row. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-18Teach cgit how to group repositories by categoryLars Hjemli-0/+10
The new parameter 'repo.group' is used to set the repository group for the following repositores. Whenever this parameter changes value, a subheading is generated in the index page (printing the current value of repo.group). Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-16Restrict length of repo description on repolist pageLars Hjemli-1/+1
If any repo has a very long description, all repos suffer since the repo-links in the right-most column gets pushed out of sight. Fix it by introducing max-repodesc-length parameter in cgitrc, and default to 60 chars. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-05-16Add C D L and T links to index pageLars Hjemli-1/+15
These are of course Commit, Diff, Log and Tree pages, all accessed w.o. specifying refname or sha1. Sadly, the layout is neither pretty nor accessible. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-02-21Layout updateLars Hjemli-1/+0
2007-02-04Read repo-info from /etc/cgitrcLars Hjemli-31/+8
This makes cgit read all repo-info from the configfile, instead of scanning for possible git-dirs below a common root path. This is primarily done to get better security (separate physical path from logical repo-name). In /etc/cgitrc each repo is registered with the following keys: repo.url repo.name repo.path repo.desc repo.owner Note: *Required keys are repo.url and repo.path, all others are optional *Each occurrence of repo.url starts a new repository registration *Default value for repo.name is taken from repo.url *The value of repo.url cannot contain characters with special meaning for urls (i.e. one of /?%&), while repo.name can contain anything. Example: repo.url=cgit-pub repo.name=cgit/public repo.path=/pub/git/cgit repo.desc=My public cgit repo repo.owner=Lars Hjemli repo.url=cgit-priv repo.name=cgit/private repo.path=/home/larsh/src/cgit/.git repo.desc=My private cgit repo repo.owner=Lars Hjemli Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2007-01-28Cleanup table listingsLars Hjemli-1/+1
Make the output for <table class='list'> a bit nicer Signed-off-by: Lars Hjemli <larsh@slaptop.hjemli.net>
2006-12-28Add generic support for search box in page headerLars Hjemli-1/+1
This adds the ability to show a search box in any pageheader with correct href and hidden form data, but does not enable the box on any pages. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-22Minor style fixesLars Hjemli-2/+5
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2006-12-11Move functions for repolist output into ui-repolist.cLars Hjemli-0/+60
Signed-off-by: Lars Hjemli <hjemli@gmail.com>