aboutsummaryrefslogtreecommitdiffstats
path: root/ui-repolist.c
Commit message (Expand)AuthorAgeFilesLines
* Remove redundant includes•••These are all included in git-compat-util.h (when necessary), which we include in cgit.h. Signed-off-by: John Keeping <john@keeping.me.uk> John Keeping2015-08-131-1/+0
* log: allow users to follow a file•••Teach the "log" UI to behave in the same way as "git log --follow", when given a suitable instruction by the user. The default behaviour remains to show the log without following renames, but the follow behaviour can be activated by following a link in the page header. Follow is not the default because outputting merges in follow mode is tricky ("git log --follow" will not show merges). We also disable the graph in follow mode because the commit graph is not simplified so we end up with frequent gaps in the graph and many lines that do not connect with any commits we're actually showing. We also teach the "diff" and "commit" UIs to respect the follow flag on URLs, causing the single-file version of these UIs to detect renames. This feature is needed only for commits that rename the path we're interested in. For commits before the file has been renamed (i.e. that appear later in the log list) we change the file path in the links from the log to point to the old name; this means that links to commits always limit by the path known to that commit. If we didn't do this we would need to walk down the log diff'ing every commit whenever we want to show a commit. The drawback is that the "Log" link in the top bar of such a page links to the log limited by the old name, so it will only show pre-rename commits. I consider this a reasonable trade-off since the "Back" button still works and the log matches the path displayed in the top bar. Since following renames requires running diff on every commit we consider, I've added a knob to the configuration file to globally enable/disable this feature. Note that we may consider a large number of commits the revision walking machinery no longer performs any path limitation so we have to examine every commit until we find a page full of commits that affect the target path or something related to it. Suggested-by: RenĂ© Neumann <necoro@necoro.eu> Signed-off-by: John Keeping <john@keeping.me.uk> John Keeping2015-08-121-1/+1
* ui-repolist: make sortcolumn definitions 'static const'•••These are not used outside this file and are not declared; they are also never modified. Signed-off-by: John Keeping <john@keeping.me.uk> John Keeping2015-03-091-2/+2
* Avoid non-ANSI function declarations•••Sparse says things like: warning: non-ANSI function declaration of function 'calc_ttl' Signed-off-by: John Keeping <john@keeping.me.uk> John Keeping2015-03-091-3/+3
* Make root handling sane again.Jason A. Donenfeld2015-03-031-1/+1
* ui-shared: Add current url helper function.Jason A. Donenfeld2015-03-031-2/+2
* ui-repolist: use ctx.qry.url instead of rooturl, in case we're filteringJason A. Donenfeld2015-03-031-2/+2
* ui-repolist: use correct owner query linkJason A. Donenfeld2015-03-031-1/+1
* Add repo.hide and repo.ignore•••These options can be used to hide a repository from the index or completely ignore a repository, respectively. They are particularly useful when used in combination with scan-path. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de> Lukas Fleischer2015-01-291-0/+2
* repolist: add owner-filter•••This allows custom links to be used for repository owners by configuring a filter to be applied in the "Owner" column in the repository list. Chris Burroughs2014-12-231-7/+13
* git: update to v2.2.1•••Update to git version v2.2.1, including API changes. Signed-off-by: Christian Hesse <mail@eworm.de> Christian Hesse2014-12-231-3/+4
* git: update for git 2.0•••prefixcmp() and suffixcmp() have been remove, functionality is now provided by starts_with() and ends_with(). Retrurn values have been changed, so instead of just renaming we have to fix logic. Everything else looks just fine. Christian Hesse2014-06-281-1/+1
* repolist: make owner clickable to search•••Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Jason A. Donenfeld2014-01-171-0/+6
* Switch to exclusively using global ctx•••Drop the context parameter from the following functions (and all static helpers used by them) and use the global context instead: * cgit_print_http_headers() * cgit_print_docstart() * cgit_print_pageheader() Remove context parameter from all commands Drop the context parameter from the following functions (and all static helpers used by them) and use the global context instead: * cgit_get_cmd() * All cgit command functions. * cgit_clone_info() * cgit_clone_objects() * cgit_clone_head() * cgit_print_plain() * cgit_show_stats() In initialization routines, use the global context variable instead of passing a pointer around locally. Remove callback data parameter for cache slots This is no longer needed since the context is always read from the global context variable. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de> Lukas Fleischer2014-01-171-3/+3
* filter: return on null filter from open and close•••So that we don't have to include the if(filter) open_filter(filter) block everywhere, we introduce the guard in the function itself. This should simplify quite a bit of code. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Jason A. Donenfeld2014-01-141-4/+2
* ui-repolist: HTML-escape cgit_rooturl() response•••This is for consistency with other callers. The value returned from cgit_rooturl is not guaranteed to be HTML-safe. Signed-off-by: John Keeping <john@keeping.me.uk> John Keeping2014-01-121-1/+3
* filter: pass extra arguments via cgit_open_filter•••This avoids poking into the filter data structure at various points in the code. We rely on the fact that the number of arguments is fixed based on the filter type (set in cgit_new_filter) and that the call sites all know which filter type they're using. Signed-off-by: John Keeping <john@keeping.me.uk> John Keeping2014-01-121-7/+3
* Update copyright information•••* Name "cgit Development Team" as copyright holder to avoid listing every single developer. * Update copyright ranges. Signed-off-by: Lukas Fleischer <cgit@crytocrack.de> Lukas Fleischer2014-01-081-2/+1
* ui-summary: Pass filename to about-filter•••This gives the about-filter API the same semantics as source-filter, where the filter receives the filename so it can decide what to do next with it. While we're at it, plug a memory leak. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Jason A. Donenfeld2013-05-251-2/+6
* use struct strbuf instead of static buffers•••Use "struct strbuf" from Git to remove the limit on file path length. Notes on scan-tree: This is slightly involved since I decided to pass the strbuf into add_repo() and modify if whenever a new file name is required, which should avoid any extra allocations within that function. The pattern there is to append the filename, use it and then reset the buffer to its original length (retaining a trailing '/'). Notes on ui-snapshot: Since write_archive modifies the argv array passed to it we copy the argv_array values into a new array of char* and then free the original argv_array structure and the new array without worrying about what the values now look like. Signed-off-by: John Keeping <john@keeping.me.uk> John Keeping2013-04-081-12/+16
* Always #include corresponding .h in .c files•••While doing this, remove declarations from header files where the corresponding definition is declared "static" in order to avoid build errors. Also re-order existing headers in ui-*.c so that the file-specific header always comes immediately after "cgit.h", helping with future consistency. Signed-off-by: John Keeping <john@keeping.me.uk> John Keeping2013-04-081-0/+1
* Convert pager navigation into a unordered list•••It is common practice and semantically appropriate to use unordered lists for long navigation lists. This also fixes the layout of very long pager navigations in Webkit-based browsers. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de> Lukas Fleischer2013-03-201-2/+4
* Mark several functions/variables static•••Spotted by parsing the output of `gcc -Wmissing-prototypes [...]`. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de> Lukas Fleischer2013-03-041-7/+7
* White space around control verbs.•••Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Jason A. Donenfeld2013-03-041-2/+2
* Fix several whitespace errors•••* Remove whitespace at the end of lines. * Replace space indentation by tabs. * Add whitespace before/after several operators ("+", "-", "*", ...) * Add whitespace to assignments ("foo = bar;"). * Fix whitespace in parameter lists ("foobar(foo, bar, 42)"). Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de> Lukas Fleischer2013-03-041-3/+3
* Make "owner" column on index page configurable•••This is not really needed for personal sites where all repos belong to the same person. Since it is pretty useful for shared sites however, it should be configurable. Signed-off-by: Florian Pritz <bluewind@xinu.at> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Florian Pritz2013-02-011-7/+12
* ui-repolist: Add "section-sort" flag to control section sorting.•••Flag which, when set to "1", will sort the sections on the repository listing by name. Set this flag to "0" if the order in the cgitrc file should be preserved. Default value: "1". Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Tobias Bieniek2012-10-171-1/+1
* ui: Remember to print ampersand as proper html entities.William Bell2012-10-171-1/+1
* ui-repolist: Rename section-sort to repository-sort.•••Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com> Jason A. Donenfeld2012-10-161-1/+1
* ui-repolist: do not use agefile if it's date could not be parsed•••Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl> Ferry Huberts2012-10-091-2/+4
* ui-repolist: Bold the currently viewed page.•••Signed-off-by: Jamie Couture <jamie.couture@gmail.com> Jamie Couture2012-10-081-4/+7
* Update copyright headers to have latest dates.Jason A. Donenfeld2012-07-121-0/+1
* ui-repolist: Case insensitive sorting and age sort•••Add two options, one for doing the ordinary name sorts in a case-insensitive manner, and another for choosing to sort repos in each section by age instead of by name. Jason A. Donenfeld2012-07-121-4/+18
* Merge branch 'jp/defbranch'Lars Hjemli2012-03-181-1/+2
|\
| * ui-repolist.c: fallback to "master" if no default branch is specified•••When looking for the modtime of a repo we used to rely on repo.defbranch having a value. This is no longer true so this patch provides a default value when needed. Signed-off-by: Lars Hjemli <hjemli@gmail.com> Lars Hjemli2011-07-191-1/+2
* | Merge branch 'stable'Lars Hjemli2012-01-031-3/+3
|\ \ | |/ |/|
| * Add sort parameter to pager of repo list•••When the repolist is paged, the page-links are missing the sort parameter, causing the initial page to be custom sorted, but any clicked page will then be with the default sort order again. Tobias Grimm2012-01-031-3/+3
* | cgit.c: always setup cgit repo environment variables•••When cgit learned to setup environment variables for certain repo settings before invoking a filter process, the setup occurred inside cgit_open_filter(). This patch moves the setup out of cgit_open_filter() and into prepare_repo_cmd() to prepare for additional uses of these variables. Reviewed-by: Ferry Huberts <mailings@hupie.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com> Lars Hjemli2011-06-131-1/+1
* | ui_repolist: get modtime from packed-refs as fallback•••When no modtime could be determined then as a final fallback try to get it from the packed-refs. This will show an idle time when a repository has been packed with all refs in the packed-refs. Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl> Signed-off-by: Lars Hjemli <hjemli@gmail.com> Ferry Huberts2011-05-301-3/+12
* | Merge branch 'fh/filter-api'•••Conflicts: cgit.c Lars Hjemli2011-05-231-1/+1
|\ \ | |/ |/|
| * cgit_open_filter: also take the repo as a parameter•••To prepare for handing repo configuration to the filter script that is executed. Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl> Signed-off-by: Lars Hjemli <hjemli@gmail.com> Ferry Huberts2011-03-261-1/+1
* | ui-repolist.c: do not return random/stale data from read_agefile•••When git/date.c:parse_date() cannot parse its input it returns -1. But read_agefile() checks if the result is different from zero, essentialy returning random data from the date buffer when parsing fails. This patch fixes the issue by verifying that the result from parse_date() is positive. Noticed-by: Julius Plenz <plenz@cis.fu-berlin.de> Signed-off-by: Lars Hjemli <hjemli@gmail.com> Lars Hjemli2011-05-231-1/+1
|/
* ui-repolist: fix redefinition of _XOPEN_SOURCE•••Previously, ui-repolist.c set _GNU_SOURCE and then included a standard library before including <git-compat-util.h>. This was a problem, because <git-compat-util.h> redefined _XOPEN_SOURCE, which is set automatically by glibc when _GNU_SOURCE is set. However, <git-compat-util.h> already sets _GNU_SOURCE and includes both <string.h> and <time.h>, so there is no need to define _GNU_SOURCE or include either header within ui-repolist.c. Signed-off-by: Mark Lodato <lodatom@gmail.com> Mark Lodato2010-09-041-6/+0
* Fix repolist search links with virtual root•••Signed-off-by: Geoff Johnstone <geoff.johnstone@googlemail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com> Geoff Johnstone2009-09-201-1/+1
* ui-repolist: handle empty sections similar to NULL sections•••Signed-off-by: Lars Hjemli <hjemli@gmail.com> Lars Hjemli2009-08-241-7/+11
* ui-repolist.c: sort by section name, repo name as default•••When no sorting is requested by the client, cgit will now sort by section name followed by repo name. This allows repos to be registered/ discovered independently of their display order. Signed-off-by: Lars Hjemli <hjemli@gmail.com> Lars Hjemli2009-08-241-0/+15
* Introduce 'section' as canonical spelling for 'repo.group'•••The 'repo.' prefix should be reserved for repo-specific options, but the option 'repo.group' must still be honored to stay backwards compatible. Signed-off-by: Lars Hjemli <hjemli@gmail.com> Lars Hjemli2009-08-241-9/+9
* Add and use a common readfile() function•••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> Lars Hjemli2009-08-181-9/+10
* Merge branch 'stable'Lars Hjemli2009-08-181-0/+1
|\
| * truncate buffer before reading empty files•••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> Simon Arlott2009-08-181-0/+1