Commit Graph

848 Commits

Author SHA1 Message Date
Lars Hjemli
31e1f9af1d Merge branch 'jh/graph'
* jh/graph:
  ui-log: Move 'Age' column when commit graph is present
  ui-log: Line-wrap long commit subjects when showmsg is enabled
  ui-log: Colorize commit graph
  ui-log: Implement support for commit graphs
  ui-log: Change display of full commit messages (and notes)

Conflicts:
	cgit.css
2011-02-19 14:01:59 +01:00
Lars Hjemli
e66a16cebc Merge branch 'lh/improve-range-search'
* lh/improve-range-search:
  html.c: use '+' to escape spaces in urls
  ui-log.c: improve handling of range-search argument
  Add vector utility functions
2011-02-19 14:00:59 +01:00
Lars Hjemli
286c4c0a1d Use GIT-1.7.4
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2011-02-19 13:55:43 +01:00
Johan Herland
682adbc0ca scan_path(): Improve handling of inaccessible directories
When scanning a tree containing inaccessible directories (e.g. '.ssh'
directories in users' homedirs, or repos with explicitly restricted access),
scan_path() currently causes three lines of "Permissions denied" errors to be
printed to the CGI error log per inaccessible directory:

  Error checking path /home/foo/.ssh: Permission denied (13)
  Error checking path /home/foo/.ssh/.git: Permission denied (13)
  Error opening directory /home/foo/.ssh: Permission denied (13)

This is a side-effect of calling is_git_dir(path) and
is_git_dir(fmt("%s/.git", path) _before_ we try to opendir(path).

By placing the opendir(path) before the two is_git_dir() calls, we reduce the
noise to a single line per inaccessible directory:

  Error opening directory /home/foo/.ssh: Permission denied (13)

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Lars Hjemli <larsh@prediktor.no>
2010-11-16 09:03:43 +01:00
Johan Herland
c2bfd40f8a ui-log: Move 'Age' column when commit graph is present
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>
2010-11-16 08:18:37 +01:00
Johan Herland
ad230267f8 ui-log: Line-wrap long commit subjects when showmsg is enabled
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>
2010-11-16 08:18:37 +01:00
Johan Herland
268b34af23 ui-log: Colorize commit graph
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>
2010-11-16 08:18:37 +01:00
Johan Herland
9a8d39c668 ui-log: Implement support for commit graphs
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>
2010-11-16 08:18:36 +01:00
Johan Herland
5a36c2a291 ui-log: Change display of full commit messages (and notes)
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>
2010-11-16 08:18:36 +01:00
Johan Herland
17596459fe ui-stats: Remove unnecessary #include
<string-list.h> is already #included from cgit.h

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-16 06:56:54 +01:00
Lars Hjemli
7618cac1ee Merge branch 'tz/make-improvements' 2010-11-10 00:28:56 +01:00
Lars Hjemli
c2680325f6 html.c: use '+' to escape spaces in urls
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-10 00:22:41 +01:00
Johan Herland
52558a6d39 ui-log: Prevent crash when given empty range search
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-10 00:22:41 +01:00
Lars Hjemli
a3c3c04bdf ui-log.c: improve handling of range-search argument
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-10 00:22:41 +01:00
Lars Hjemli
958a95b378 Add vector utility functions
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-10 00:22:41 +01:00
Lars Hjemli
53f487dd71 Makefile: avoid spurious rebuilds of git sources due to sudo make
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-10 00:20:50 +01:00
Johan Herland
1415f3f3e0 ui-log: Fix filecount/linecount when path limit is in effect
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>
2010-11-09 16:37:39 +01:00
Felix Hanley
e0c6f23789 Add strict-export option
This option is used to specify a filename which needs to be present in
the repositories found during `scan-path` processing. By setting this
option to 'git-daemon-export-ok', only repositories explicitly marked
for git daemon export will be included in the cgit configuration.

Signed-off-by: Felix Hanley <felix@seconddrawer.com.au>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-08 19:41:13 +01:00
Kamil Kaminski
49d09d4fd1 Fix a typo in README, s/ExecCGI/+ExecCGI
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-08 19:30:03 +01:00
Lars Hjemli
cda1b78ff7 Append path and branch to atom feed title
Currently all atom feeds for a repository get the same title but they
are actually unique per path and per branch.

Signed-off-by: Chris Mayo <aklhfex@gmail.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-07 16:35:54 +01:00
Chris Mayo
eca95229ac Use committer date for atom feed entry updated element
Committer date reflects the most recent change and is used for ordering
the log page (author date is still available in published element of the
feed entry).

Signed-off-by: Chris Mayo <aklhfex@gmail.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-07 16:33:41 +01:00
Lars Hjemli
69f705cf57 Merge branch 'stable'
Conflicts:
	scan-tree.c

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-07 16:25:23 +01:00
Dean Scarff
aabc70f74b Use absolute path for scanned repo readme
repo.readme is transformed to an absolute path when read from the config,
so add_repo needs to add "README.html" with the repository path too.

Signed-off-by: Dean Scarff <dos@scarff.id.au>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-07 16:21:59 +01:00
Lars Hjemli
5807fb79fa Makefile: add -MP option
Work around errors `make` gives when header files are removed without
the Makefile being updated.

Signed-off-by: Lynn Lin <Lynn.Lin@emc.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-11-07 16:13:49 +01:00
Lars Hjemli
d41b2ddcb3 Merge branch 'stable'
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-27 08:20:42 +02:00
Lars Hjemli
af492114cc CGIT 0.8.3.4
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-27 08:00:47 +02:00
Lars Hjemli
82a883ede7 Use GIT-1.7.3
This fixes http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2010-2542.

Noticed-by: Silvio Cesare <silvio.cesare@gmail.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-27 07:58:13 +02:00
Lars Hjemli
9043b46f85 Merge branch 'stable' 2010-09-19 20:58:15 +02:00
Aaron Griffin
aaa3f78542 RSS items should always use UTC times
The format uses a 'Z' suffix, which indicates no TZ offset.
Thus we should not respect the local-time config setting here.

Signed-off-by: Aaron Griffin <agriffin@datalogics.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-19 20:57:30 +02:00
Todd Zullinger
66df113457 Use example.com in documentation, per RFC 2606
Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-19 19:12:51 +02:00
Todd Zullinger
d7765df117 cgit.css: Add syntax highlighting entries
Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-19 19:12:51 +02:00
Todd Zullinger
6d10c13058 Install filter scripts
The syntax-highlighting.sh script is quite useful without any changes.
Installing it by default makes it easier to use and package.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-19 19:11:45 +02:00
Todd Zullinger
0c3130de96 Add Makefile targets to install/uninstall docs
Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-19 19:11:45 +02:00
Todd Zullinger
679f7ef4f3 Generalize doc generation
This borrows from the git Documentation/Makefile.  The goal is to make
it easier to add new man pages and other documentation as well as to
prevent make from re-generating the documentation needlessly.

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-19 19:11:45 +02:00
Lars Hjemli
a9d6e6e695 Merge branch 'ml/bugfix' 2010-09-19 19:00:05 +02:00
Lars Hjemli
536c7a1eb2 Merge branch 'lh/section-from-path'
Conflicts:
	scan-tree.c
2010-09-19 18:46:17 +02:00
Lars Hjemli
e76a1ea427 Merge branch 'lh/readme' 2010-09-19 18:43:58 +02:00
Lars Hjemli
857696dd3d Use GIT-1.7.3
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-19 14:00:57 +02:00
Mark Lodato
d187b98557 prefer html_raw() to write()
To make the code more consistent, and to not rely on the implementation
of html(), always use html_raw(...) instead of write(htmlfd, ...).

Signed-off-by: Mark Lodato <lodatom@gmail.com>
2010-09-04 14:30:10 -04:00
Mark Lodato
25e8ba1996 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>
2010-09-04 14:09:24 -04:00
Mark Lodato
e4ddc8f72b fix errors in printf-style format strings
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>
2010-09-04 11:35:38 -04:00
Mark Lodato
a4c58d92bf use __attribute__ to catch printf format mistakes
Use "__attribute__((format (printf,N,M)))", as is done in git, do catch
mistakes in printf-style format strings.

Signed-off-by: Mark Lodato <lodatom@gmail.com>
2010-09-04 11:11:40 -04:00
Lars Hjemli
bf8293d319 Merge branch 'stable' 2010-09-01 12:32:57 +00:00
Lars Hjemli
ba1769cb64 ui-snapshot: actually compress zip archives
Since cgit linked with git-1.6.0 all zip archives has been uncompressed.
This patch fixes the issue by specifying Z_DEFAULT_COMPRESSION.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-09-01 12:32:19 +00:00
Lars Hjemli
6940b23b9e Merge branch 'stable' 2010-08-29 17:40:51 +02:00
Mark Lodato
48434780ca html: fix strcpy bug in convert_query_hexchar
The source and destination strings in strcpy() may not overlap.
Instead, use memmove(), which allows overlap.  This fixes test t0104,
where 'url=foo%2bbar/tree' was being parsed improperly.

Signed-off-by: Mark Lodato <lodatom@gmail.com>
2010-08-29 17:27:40 +02:00
Mark Lodato
c94414a4c8 t0108-patch: add 'tests_done' to end
Signed-off-by: Mark Lodato <lodatom@gmail.com>
2010-08-29 17:27:40 +02:00
Lars Hjemli
797110e39d Add support for 'section-from-path' option
This option can be used to autogenerate section names during scan-path
processing.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-08-22 13:35:56 +02:00
Lars Hjemli
515edb0da3 Add support for "readme" option
The value of this option is used as the default value for repo.readme.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-08-22 13:35:47 +02:00
Lars Hjemli
6d7552bc07 Use GIT-1.7.2.2
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
2010-08-22 13:29:57 +02:00