aboutsummaryrefslogtreecommitdiffstats
path: root/ui-log.c
Commit message (Collapse)AuthorAgeLines
* Do not load user or system gitconfig and gitattributesGravatar Jason A. Donenfeld2013-04-09-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While doing any kind of git loading, unset HOME variables and set NOSYSTEM variables so that cgit does not load any settings that a user may have set for his own /usr/bin/git usage. This fixes a fatal error introduced with git 1.8, whereupon git would fatally exit when failing to access particular files. The result of this is that only repo-local configuration files are accessed: zx2c4@thinkpad ~/Projects/cgit $ HOME=/root QUERY_STRING="url=foo/log" CGIT_CONFIG=tests/trash/cgitrc strace -e access ./cgit >/dev/null access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) access("repos/foo/.git/objects", X_OK) = 0 access("repos/foo/.git/refs", X_OK) = 0 access("repos/foo/.git/config", R_OK) = 0 access("repos/foo/.git/config", R_OK) = 0 access("repos/foo/.git/objects/b3/bafdbf0183f4897ef8b1319cb8c490ed54717e", F_OK) = 0 access("repos/foo/.git/objects/b3/bafdbf0183f4897ef8b1319cb8c490ed54717e", F_OK) = 0 access("repos/foo/.git/objects/b3/bafdbf0183f4897ef8b1319cb8c490ed54717e", F_OK) = 0 access("repos/foo/.git/objects/b3/bafdbf0183f4897ef8b1319cb8c490ed54717e", F_OK) = 0 +++ exited with 0 +++ Reported-by: Ferry Huberts <ferry.huberts@pelagic.nl> Tested-by: Jason A. Donenfeld <Jason@zx2c4.com> Tested-by: Ferry Huberts <ferry.huberts@pelagic.nl> Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* use struct strbuf instead of static buffersGravatar John Keeping2013-04-08-11/+22
| | | | | | | | | | | | | | | | | | | 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>
* Always #include corresponding .h in .c filesGravatar John Keeping2013-04-08-0/+1
| | | | | | | | | | | | 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>
* Update git to v1.8.2.1Gravatar John Keeping2013-04-08-3/+3
| | | | | | | | | | | This requires a small change to how we handle notes, but otherwise just works. Note that we can't use anything from v1.8.0 until v1.8.2.1 because some of the symbols that we need for graph drawing were made private in v1.8.0 and this was not reverted until v1.8.2.1. Signed-off-by: John Keeping <john@keeping.me.uk>
* Convert pager navigation into a unordered listGravatar Lukas Fleischer2013-03-21-3/+6
| | | | | | | | | | 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>
* Fix colspan valuesGravatar Lukas Fleischer2013-03-21-7/+7
| | | | | | | This fixes a couple of minor oversights in previous commits and adjusts all cells using colspan to use the correct width. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* Mark several functions/variables staticGravatar Lukas Fleischer2013-03-05-3/+3
| | | | | | Spotted by parsing the output of `gcc -Wmissing-prototypes [...]`. Signed-off-by: Lukas Fleischer <cgit@cryptocrack.de>
* ui-log: Add "commit-sort" option for controlling commit orderingGravatar Tobias Bieniek2012-10-17-1/+9
| | | | | | | This makes it possible to use strict commit date ordering or strict topological ordering by passing the corresponding flags to "git log". Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
* Merge branch 'stable'Gravatar Lars Hjemli2012-01-04-0/+3
|\
| * ui-log.c: do not show remote heads if enable-remote-branches=0Gravatar Georg Müller2012-01-04-0/+3
| | | | | | | | | | If remote branches are not enabled, the branches are still listed in the log view. This patch removes them if enable-remote-branches=0.
* | Merge branch 'stable'Gravatar Lars Hjemli2011-06-02-9/+0
|\ \ | |/
| * ui-log.c: do not link from age columnGravatar Lars Hjemli2011-06-02-9/+0
| | | | | | | | | | | | | | The link url wasn't properly escaped, and since the link was identical to the one used on the commit message it didn't serve any special purpose. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | make enable-log-linecount independent of -filecountGravatar Julius Plenz2011-03-26-15/+14
|/ | | | | | | | | You should be able to independently switch file and line count on and off. This patch makes the code work like the documentation suggests: no dependency for line counts to be displayed only when file counts are. Signed-off-by: Julius Plenz <plenz@cis.fu-berlin.de> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-log: Move 'Age' column when commit graph is presentGravatar Johan Herland2010-11-16-12/+30
| | | | | | | | When the commit graph is present, we prefer to draw it along the left edge, and moving the 'Age' column to the right of the 'Author' column, like in gitk. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-log: Line-wrap long commit subjects when showmsg is enabledGravatar Johan Herland2010-11-16-5/+30
| | | | | | | | | | | | | | When showmsg is disabled ui-log truncates long commit subjects. This is good. However, the same is not desirable when showmsg is enabled, since you then end up with a truncated commit subject followed by the rest of the commit message below. Instead, when showmsg is enabled (and we're using all this space to display the entire commit message, anyway), line-wrap the commit subject instead of truncating it. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-log: Colorize commit graphGravatar Johan Herland2010-11-16-0/+19
| | | | | | | | | | | | | Use the existing coloring logic in Git's graph code to color the lines between commits in the commit graph. Whereas Git normally uses ANSI color escapes to produce colors, we here use graph_set_column_colors() to replace those with HTML color escapes, that embed the graph lines in <span> tags that apply the desired color using CSS. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-log: Implement support for commit graphsGravatar Johan Herland2010-11-16-21/+82
| | | | | | | | | | | | | | | | Teach CGit to print an ASCII art commit graph to the left of the commit message, similar to 'git log --graph'. The graph adds extra lines (table rows) to the log when needed to add/remove/shuffle edges in the graph. When 'showmsg' is enabled, the graph is automatically padded to account for the extra lines added by the commit message/notes. This feature is controlled by a new config variable: "enable-commit-graph" (disabled by default), and individual repos can control it by setting "repo.enable-commit-graph". Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-log: Change display of full commit messages (and notes)Gravatar Johan Herland2010-11-16-13/+17
| | | | | | | | | | | | | | | | | | | | | | | When showmsg is enabled, ui-log (in addition to the table row containing the details of the current commit) adds a second table row containing the remainder of the commit message, and yet another table row containing the commit notes (if any). The vertical margins between commit subject, commit message and commit notes are controlled by CSS. In preparation for the commit graph (which will be printed to the left of the commit message/notes) we need to eliminate these vertical margins (as they would produce ugly gaps in the commit graph) and instead achieve them by adding newlines to the commit message/notes. Furthermore, we can no longer print the "Notes:" header in the "Age" column, since the graph will be drawn between the "Age" column and the "Commit message" column. This patch therefore prepares the commit message and commit notes in a single buffer (properly formatting the notes using the NOTES_SHOW_HEADER and NOTES_INDENT flags to format_note()), and then prints the entire buffer into a single table row. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-log.c: improve handling of range-search argumentGravatar Lars Hjemli2010-11-10-11/+60
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-log: Prevent crash when given empty range searchGravatar Johan Herland2010-11-10-1/+1
| | | | | Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-log: Fix filecount/linecount when path limit is in effectGravatar Johan Herland2010-11-10-1/+1
| | | | | | | | | | | | | | | | | | | | | | | When using ui-log with path limits, the listing of commits enables parent rewriting in Git's internal log machinery. This did not work well together with cgit_diff_commit() which is used to generate the filecount and linecount numbers for each commit in the log view. cgit_diff_commit() would operate without any path limits, and would therefore process the full diff between the commits shown (which, because of parent rewriting, is not the same as processing the diff for the commit itself). Additionally, the bottom commit in the log view would (again, because of parent rewriting) have zero parents, causing us to process the entire diff between the empty tree and that commit. Since path limits were not in effect, this would (in large projects) reports thousands of files and millions of lines changed in that bottom commit. This patch fixes the issue by applying the same path limit to cgit_diff_commit() as is applied to the rest of the log view. The result is that the filecount/linecount now only reflects the diff as it pertains to the given path limit. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* fix errors in printf-style format stringsGravatar Mark Lodato2010-09-05-2/+1
| | | | | | | | | | | | | | | | | There were many places where the arguments to a printf-like function did not match the format string. Mostly, these were a missing 'l' flag, but there were three exceptions: - In ui-stats.c, a size_t argument must be printed. C99 has the "%zu" flag for this purpose, but not all compilers support this. Therefore, we mimic what git does - use a NO_C99_FORMAT Makefile variable. - In ui-stats.c, cgit_print_error() was called with a pointer instead of a character. - In ui-log.c, the "columns" argument was never used. Signed-off-by: Mark Lodato <lodatom@gmail.com>
* Use GIT-1.7.2.2Gravatar Lars Hjemli2010-08-22-1/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* ui-log: Display git notes when presentGravatar Jeff Smith2010-08-04-0/+12
| | | | | Signed-off-by: Jeff Smith <whydoubt@yahoo.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'jh/ignorews'Gravatar Lars Hjemli2010-07-18-1/+2
|\
| * Add URL parameter 'ignorews' for optionally ignoring whitespace in diffsGravatar Johan Herland2010-07-18-1/+2
| | | | | | | | | | | | | | | | The new ctx.qry.ignorews variable is passed via cgit_diff_files() and cgit_diff_tree() to Git's diff machinery. This is equivalent to passing --ignore-all-space to 'git diff'. Signed-off-by: Johan Herland <johan@herland.net>
* | Merge branch 'lh/range-search'Gravatar Lars Hjemli2010-06-22-4/+7
|\ \ | |/ |/|
| * ui-log.c: allow commit range as search expressionGravatar Lars Hjemli2010-06-19-4/+7
| | | | | | | | | | Inspired-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | Add URL parameter 'context' for changing the number of context lines in diffsGravatar Johan Herland2010-06-19-1/+1
| | | | | | | | | | | | | | | | The new ctx.qry.context variable is picked up by cgit_print_diff(), and passed via cgit_diff_files() to Git's diff machinery. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | ui-log: Preserve path limit in outgoing linksGravatar Johan Herland2010-06-19-12/+15
| | | | | | | | | | | | | | | | This allows navigation through the 'log' page/command without losing the active path limit. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* | ui-commit: Preserve path limit in links to commit pageGravatar Johan Herland2010-06-19-2/+2
|/ | | | | | | | | | | This includes adding a path argument to cgit_commit_link() and updating all its callers. The callers from within the commit page (i.e. the "commit", "unidiff"/"side-by-side diff" and "parent" links) all preserve the path limit of the current commit page. All other callers pass NULL (i.e. no path limit). Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add possibility to switch between unidiff and side-by-side-diff.Gravatar Ragnar Ouchterlony2009-09-17-2/+2
| | | | | | | | | | | | | | | | A new config option side-by-side-diffs added, defaulting to 0, meaning unidiff. Also a query option (ss) is used toggle this. In the commit page you can switch between the two diff formats by clicking on the link on the "commit"-row, to the right of (patch). In the diff page you can switch by using the link at the start of the page. All commit-links and diff-links will remember the choice. Signed-off-by: Ragnar Ouchterlony <ragnar@lysator.liu.se> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Use GIT-1.6.4.3Gravatar Lars Hjemli2009-09-14-1/+1
| | | | Signed-off-by: Lars Hjemli <larsh@slackbox.hjemli.net>
* ui-log.c: handle lightweight tags when printing commit decorationsGravatar Lars Hjemli2009-08-17-0/+4
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Handle binary files in diffsGravatar Lars Hjemli2009-01-31-1/+6
| | | | | | | This teaches all diff-related operations (i.e. ui-log, ui-diff and ui-patch) how to handle binary files. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Change toggle to more meaningful termGravatar Justin Waters2009-01-11-1/+2
| | | | | | | | In the log interface, there is a toggle link at the top, but it isn't clear what's being toggled. I've changed it to "Expand" and "Collapse" to make it clear that you are getting more and less information, respectively. Signed-off-by: Justin Waters <justin.waters@timesys.com>
* ui-log: show name-decorations in log outputGravatar Lars Hjemli2009-01-11-0/+35
| | | | | | | Commits are now decorated with a clickable 'label' for each ref pointing at it, similar to how gitweb and gitk displays commit decorations. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Merge branch 'full-log'Gravatar Lars Hjemli2008-12-06-7/+28
|\ | | | | | | | | | | Conflicts: cgit.c cgit.h
| * ui-log: use css to make full-log prettierGravatar Lars Hjemli2008-11-30-8/+6
| | | | | | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-log: (ab)use extra columns for commit message when showmsg=1Gravatar Lars Hjemli2008-11-30-6/+7
| | | | | | | | | | | | | | | | If the commit message has extra long lines it's better to use the author/ files/lines columns to show those lines than to push the columns of screen and force the users to hscroll. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
| * ui-log: add support for showing the full commit messageGravatar Lars Hjemli2008-11-30-5/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* | ui-log: try to disambiguate ref namesGravatar Lars Hjemli2008-12-04-2/+15
|/ | | | | | | | | | | | | | The 'h' querystring parameter in cgit is normally used to specify a branch (i.e. a ref below refs/heads/), but if a repository contains a tag with the same name as a branch the output from ui-log would use the tag as start-revision. This patch tries to fix the issue by checking if the specified ref is valid as a branch name; if so, the full refname is used in the call to setup_revisions(). Noticed-by: Takamori Yamaguchi <akschar@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Use GIT-1.6.0.2Gravatar Lars Hjemli2008-10-06-4/+2
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Make a few more columns in repolist and log view clickableGravatar Lars Hjemli2008-04-15-0/+5
| | | | | | Less mouse movement is nice. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Make branches, tags and log play better together in the summary viewGravatar Lars Hjemli2008-04-15-16/+26
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Add ui-shared.hGravatar Lars Hjemli2008-03-25-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>
* Introduce html.hGravatar Lars Hjemli2008-03-18-0/+1
| | | | | | | | 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>
* Move cgit_repo into cgit_contextGravatar Lars Hjemli2008-02-16-5/+5
| | | | | | | | 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>
* Introduce struct cgit_contextGravatar Lars Hjemli2008-02-16-10/+10
| | | | | | | | | This struct will hold all the cgit runtime information currently found in a multitude of global variables. The first cleanup removes all querystring-related variables. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
* Fix html error detected by test-suiteGravatar Lars Hjemli2007-11-11-1/+1
| | | | Signed-off-by: Lars Hjemli <hjemli@gmail.com>