CVSTrac Legacy Code

Timeline
Login

Timeline

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

200 most recent check-ins using file howitworks.html version cfd0d04667

2022-09-16
19:10
update for some git diff changes (Leaf check-in: e66a083f85 user: cpb tags: trunk)
2019-01-20
21:34
Statically link against a recent version of SQLite. (check-in: e4587a17aa user: drh tags: trunk)
2016-07-18
19:27
slightly cleaner (check-in: 3625b606ff user: cpb tags: trunk)
19:22
block PROXY param. See https://httpoxy.org/ (check-in: 5124b0f577 user: cpb tags: trunk)
2015-06-17
13:04
We need to use the "full" commit id for the base too. (check-in: 6de5916d35 user: root tags: trunk)
2015-06-04
18:55
Need to prefix filenames with the module for browse to work correctly. Fortunately, we can strip it. (check-in: 0b1a22dfae user: cpb tags: trunk)
2015-05-25
16:12
Initial support for multiple GIT modules in a single GitTrac instance (i.e. conceptually similar to multiple CVS modules in a single CvsTrac). (check-in: 8c72a44f1e user: cpb tags: trunk)
2015-03-05
17:30
It appears that Firefox recently triggered a bug in our CSS. (check-in: 360a8812cf user: root tags: trunk)
2011-11-29
14:50
Apparently, nobody has combined an inspection on a branch commit with an RSS feed (check-in: 303444c716 user: cpb tags: trunk)
2011-09-14
12:47
If the user.passwd field is "any" then allow login with any password. (check-in: f81e205041 user: drh tags: trunk)
2011-09-13
22:02
Improvements to the homepage. (check-in: 2832e0a44b user: drh tags: trunk)
21:59
Add the www/index.html document. (check-in: 2845a5cc32 user: drh tags: trunk)
21:48
Add the "directory:" and "project:" lines to the CGI invocation file to allow operation from a chroot CGI without access to a shell. (check-in: 27a4d13d4f user: drh tags: trunk)
2011-02-18
13:43
(#823) MAX() isn't a good function to use on numeric values stored as text. "Force" fields to numbers first. (check-in: d199007454 user: cpb tags: trunk)
2010-11-26
15:55
(#822) add a secondary sort by date as default. Adding a "Sort by date"/"Sort by Relevance" toggle should be trivial from here. (check-in: d339dba99a user: cpb tags: trunk)
2009-12-23
14:03
check for valid ticket and cn before trying to output anything (check-in: 7b0e1f76c7 user: cpb tags: trunk)
14:03
oops... make sure it's a valid ticket number (check-in: 79dd28a1ad user: cpb tags: trunk)
2009-12-09
15:42
minor fixups to the RSS HTML, cleans up inspections a touch (check-in: d3b0aa6518 user: cpb tags: trunk)
2009-12-06
15:57
(#789) searching on a ticket or checking number in the appropriate format will take the user directly to the appropriate page. Implemented =is_ticket()= and =is_chng()= functions to simplify the process and use them in /cvstrac/format.c as well. (check-in: 167d2fdefd user: cpb tags: trunk)
2009-10-24
11:23
(#810) identify milestones in the ticket history (check-in: c0f2ef4f33 user: cpb tags: trunk)
2009-06-19
13:56
(#802) oops, we don't use that yet, if ever. (check-in: 4277e77c9b user: cpb tags: trunk)
2009-06-04
16:42
(#800) end transaction when no GIT repo defined (check-in: 0991d26569 user: cpb tags: trunk)
2009-05-15
21:59
(#39) diff coloring using DIVs and stylesheets classes =diffx= where =x= is *h*eader, *c*hunk, *t*ext, *a*dded, *r*emoved (check-in: 864223dd4b user: ono tags: trunk)
13:55
(#797) make sure we get latest change date relative to specified directory (check-in: 1bdc8232d2 user: ono tags: trunk)
12:32
*: Download tarball is now directory browse action, rather than separate link *: Tarball now contains version and subdirectory only if necessary *: Determines modification date using filechng table *: Subversion now fixed for UNIX environment, also supports pure =tar=, =tar.gz= and =tar.bz2= *: GIT implementation using =git archive= (check-in: 8c8238f05e user: ono tags: trunk)
2009-05-14
12:25
(#799) properly escape %%. (check-in: dab276db97 user: ono tags: trunk)
12:11
(#534, #567) ensure we are not sending Content-Length with value of 0 (zero), that may happen on some actions and confuse browsers. (check-in: 73773e45d3 user: ono tags: trunk)
12:01
(#798) Remove trailing spaces from rlog Author/Committer names, drop Commiter info if is the person as Author. (check-in: e811e9226a user: ono tags: trunk)
11:48
(#797) download current folder as tarball feature, structure for all SCM, Subversion implementation trough =svntar=. (check-in: 0538777a0b user: ono tags: trunk)
11:22
(#740) take the SRCDIR path from the platform.mk file placement, a do not hardcode SRCDIR anymore. (check-in: 586b227c9a user: ono tags: trunk)
2009-03-27
23:53
some style cleanups, get rid of unused variables, etc. (check-in: d8dd0972d4 user: cpb tags: trunk)
13:40
add support for incoming {link:http://trac.edgewall.org/wiki/InterTrac InterTrac} links. This allows Trac sites to reference CVSTrac objects most naturally.

Outgoing InterTrac links _from_ a CVSTrac install can be accomplished with custom markup, as in:

{quote:%x}

which would be referenced via something like:

{quote:{<markup>: ticket:451 #451}} {quote:{trac: wiki:InterTrac InterTrac}}
(check-in: ede2546f24 user: cpb tags: trunk)
2009-03-14
02:07
(#791) fine tune the report RSS output. This makes it reasonably functional, although I'm not entirely happy with how dates are(n't) managed. (check-in: 340df5c3bf user: cpb tags: trunk)
2009-03-13
02:22
(#783) direct inspections to the appropriate positions in chngview from both the timeline, RSS, as well as after sumitting them. (check-in: 3b02e5ca7d user: cpb tags: trunk)
02:00
(#783) when we append to a ticket we get bounced back to the ticket view. Might as well get bounced back to the anchor we just added. (check-in: fb194a19a2 user: cpb tags: trunk)
2009-03-10
03:06
(#791) first stab at a generic report RSS feed. Item titles need some fine tuning and there's no way to determine dates, but otherwise it seems sane. (check-in: afb2fee9b7 user: cpb tags: trunk)
01:19
the dashed-forms of the git commands are now not reliably avaiable. (check-in: ec1de0af03 user: cpb tags: trunk)
2009-03-08
00:14
(#791) allow individual pages to have their own RSS feeds

This means we need to allow generic RSS substitutions in the header. To that end, we add %R for the URL and %F for the title (a distinct feed needs a distinct title).

Figuring out whether a page has its own RSS feed is done by looking for an "RSS" entry in the action bar. The title is built from the project name and the current page title.

Then, to override the default (timeline) RSS feed on any given page, it's just a matter of doing something like:

common_add_action_item(mprintf("tkthistory.rss?tn=%d",tn), "RSS");

and the header output logic will just pick it up. (check-in: c72535f17c user: cpb tags: trunk)

2009-03-07
00:42
(#231) ditch the opaque class names like "border2" and "bkgnd1" and replace with more meaningful class names, and related cleanups. (check-in: 64a9390abe user: cpb tags: trunk)
2009-03-06
03:06
(#177) makes HTML entities _work_ in wiki markup and (maybe) other places

In order to allow it to work in both normal web browsing and the encoding needed for RSS (where we _need_ to encode even entities), I modified htmlize (%h) to take an "allow entities" flag, and added a new %R formatting option which disables this flag. %R is used by the RSS formatter to do the final content generation. This means anywhere wiki content is allowed someone can write é and, apparently, it works.

Keep in mind that I don't normally use anything except ASCII in my day-to-day environment, so someone who cares about this stuff should maybe test it out a bit more than myself. (check-in: 14e235cdd5 user: cpb tags: trunk)

2009-03-02
00:07
(#787) append/add remarks should be hidden for users without ticket write permissions (check-in: 10e5c9bba7 user: cpb tags: trunk)
2009-02-25
02:04
(#786) ensure local attachments links from the {quote:{image:}} tags aren't broken in the RSS feed. This requires adding an appropriate page id to the formatting calls. (check-in: 4149691655 user: cpb tags: trunk)
2009-02-19
03:38
(#783) when dealing with remarks in the timeline, break them out separately and (try to) link directly to a new remark in the ticket. This won't work perfectly when dealing with direct edits to the remark field, but for normal use it should be fine. (check-in: 743d4611de user: cpb tags: trunk)
03:23
(#783) generate the link to appended remarks by targetting what should be the anchor. Doing so from the timeline will be a little more complicated. (check-in: 52ecfd6559 user: cpb tags: trunk)
02:59
(#783) when appending a ticket comment, write an HTML anchor based on the change time so we can find it later. (check-in: 7c22978975 user: cpb tags: trunk)
02:33
(#781) don't run the external diff filter if the output is supposed to be _raw_ (check-in: 488fc0db1e user: cpb tags: trunk)
2009-01-17
16:31
(#777) an index on filechng(vers) speeds the update quite a bit for larger projects. (check-in: c6b04561ea user: cpb tags: trunk)
2008-12-28
15:03
(#774) make external tools work in reports (check-in: 976179c75a user: cpb tags: trunk)
2008-11-27
17:49
oops, that's supposed to be a call, not output (check-in: d78282a902 user: cpb tags: trunk)
2008-11-14
15:34
(#768) merge [1018] fix printf argument (Leaf check-in: 05b9a75c31 user: cpb tags: release2_0_1)
15:33
(#768) printf argument needs escaping, and it's the wrong one anyways (check-in: d04d9de48b user: cpb tags: trunk)
2008-10-29
18:46
(#766) merge [1016]: handle missing f parameter (check-in: 30138bdb73 user: cpb tags: release2_0_1)
18:45
(#766) handle missing f parameter (check-in: 4b004e65d5 user: cpb tags: trunk)
2008-10-23
16:24
we need to armour the cookie value. Otherwise, it can contain values which aren't legal in a CGI parameter name. (check-in: 89bfff7fd9 user: cpb tags: trunk)
2008-10-21
02:05
add some CSRF (http://en.wikipedia.org/wiki/Cross-site_request_forgery) prevention. It's a little over-engineered in places, but the patch itself is non-intrusive enough that this isn't a huge problem. (check-in: 8a6641cd16 user: cpb tags: trunk)
2008-10-11
01:03
(#764) admin/setup permissions should also imply wiki. (check-in: 48506efca4 user: cpb tags: release2_0_1)
01:02
(#764) _setup_ permissions should also imply wiki permissions. Simplify the Windows condition slightly. (check-in: e1b44eb962 user: cpb tags: trunk)
2008-10-09
22:59
(#764) merge [1010]: don't use CGI output stuff when we don't have a URL. This may not be needed in HEAD, but it certainly won't hurt. (check-in: d0137d8b19 user: cpb tags: trunk)
19:57
(#764) don't try to use CGI methods when there's no URL. (check-in: 1b03bde87f user: cpb tags: release2_0_1)
2008-09-16
15:12
Carriage returns, line feeds and tabs in the command line may make the Windows command line incomplete. (check-in: 79df195944 user: ono tags: trunk)
15:10
(#118) %c using owner when no contact specified was broken by 1.111 commit. (check-in: 5e407f9cfd user: ono tags: trunk)
14:23
(#762) fix order of month/date in output. (check-in: bf7c25aa02 user: cpb tags: trunk)
2008-09-15
14:40
Update MinGW makefiles so they work fine with latest code. (check-in: c0b4bd2396 user: ono tags: trunk)
14:36
(#761) correct project name to correct case for case-insensitive Windows (check-in: 3fa5c26da1 user: ono tags: trunk)
13:12
In order to actually _apply_ a patchset, you really want to have the relative name in the context section. Some versions of patch don't seem to want to pick it up from Index. This is fine for shallow projects (i.e. all files in one directory) but it doesn't work for deep projects. So change the rcsdiff command line so we get full relative pathnames in the patch. (check-in: 88cdf75093 user: cpb tags: trunk)
2008-06-30
21:31
(#759) when putting the id in the hidden field for deletion, use the right formatting (%h vs %t). (check-in: f6072b91dd user: cpb tags: trunk)
2008-06-08
15:11
(#758) patch from filodej to implement external filters for GIT diffs. Remove the File List interface for GIT since it's not applicable. (check-in: 1a7ca06e2b user: cpb tags: trunk)
2008-04-17
01:43
(#742) allow the report editor to enter a wiki description. An abbreviated version gets shown in the report list. It _doesn't_ get shown in embedded reports. This may or may not be desirable, depending on the context of the embedding. (check-in: ff060f9fec user: cpb tags: trunk)
01:20
(#749) a few formatting tweaks (check-in: 8b996f3a7f user: cpb tags: trunk)
2008-04-16
02:10
#749, #742: database schema changes, related UI changes *: add a "reason" field to the WIKI table to describe a change, add the corresponding text field to the wikiedit page and display the field in various places. Probably could be done in more places. *: add a "comment" field to the INSPECT table to hold wiki markup. Some more work needs to be done in here. *: add a "description" field to the REPORTFMT table to hold a wiki description of a report. No UI element yet, just a placeholder in the database. (check-in: 3a6b72e203 user: cpb tags: trunk)
2008-04-12
01:23
(#231) have a go at eliminating the use of

It was mostly in error output, so added a error class to the CSS and updated all the code. Mind you, error output really should be standardized in a single function somewhere.

Only one left in the table stuff in /cvstrac/view.c (check-in: f18b4a5e70 user: cpb tags: trunk)

00:44
(#751) add a "safe ticket editting mode" similar to Trac's which _should_ prevent users from blindly stomping on each others changes.

Basically, when a user starts editting a ticket (or appending a remark), the last "changetime" is embedded in the form. At submit time, CVSTrac checks to ensure that changetime is still good and refuses to proceed. The user still has all the change visible and can copy them elsewhere, but can't "finish" the change. A "force" checkbox might be useful here?

By default, this is disabled. (check-in: 6e09701d50 user: cpb tags: trunk)

2008-04-11
12:07
using the history entry date works better if we actually do use it. (check-in: 35f37e602d user: cpb tags: trunk)
2008-04-10
00:54
(#750) if we can't map a tag to a previous tag like the history suggests we should, just go with the date of the current history entry rather than dropping the tag entirely. (check-in: b7bf9a9b1b user: cpb tags: trunk)
00:50
(#744) use =strcasecmp()= and =strncasecmp()= (both POSIX standard calls) rather than the now non-public SQLite versions. (check-in: 989410317a user: cpb tags: trunk)
2008-02-18
11:25
Forgot why we did that. Comment it so I remember next time (check-in: 2fae12040f user: cpb tags: trunk)
2008-01-01
00:16
(#738) output the resulting row count at the end of the report (check-in: cdccd40b7a user: cpb tags: trunk)
2007-12-19
22:36
(#734) explicitly check for IIS before trying to work around a bunch of IIS bugs. Note that we expose the g.isIIS even on non-Windows O/S. This won't affect performance, but makes the code clearer in places. (check-in: 4148655620 user: cpb tags: trunk)
02:23
(#733) fix header ordering here, too (check-in: fa9ba6c33a user: cpb tags: trunk)
00:05
(#733) fix header ordering so browse.h is last (check-in: 18d8927ccc user: cpb tags: trunk)
00:04
(#734) SCRIPT_NAME _can_ be undefined in some servers (check-in: c173f68b1f user: cpb tags: trunk)
2007-12-16
22:45
(#732) always display ticket numbers with a 'hash' (check-in: b42dfa7be8 user: cpb tags: trunk)
2007-11-07
12:41
Removing empty #729 (check-in: b64cd9f684 user: ono tags: trunk)
10:37
Allow specifying current document URL (without base) with %D in the template, so we can make links to other project same page using: http://www.tracker.com/cvstrac/OtherProject/%D (check-in: 222d4659c2 user: ono tags: trunk)
10:34
More HTML compatibility fixes #729: * common_add_nad_item, common_add_action_item shall not be escaped with entities (rollback) * some ijected URL parts needs to be formatted with %d * fixed empty for checkings list * fixed </diff> ->
(check-in: 18ca2d3ccc user: ono tags: trunk)
2007-11-06
15:33
Making HTML markup W3C compatible (#729) * removing duplicate timeline ID * escaping ampersands * moving

tags inside forms * changing hspace into margin * changing wrap="type" into class wraptype (this may be problematic) * adding DocType ... still we got Content-Type missing and warning with lists +

at Wiki

(check-in: 91b1f86d45 user: ono tags: trunk)
13:11
Make sure APPNAME has extension where it is needed (Windows). (check-in: 53e774e724 user: ono tags: trunk)
13:10
Ignore local Makefile file. (check-in: 4b81abaa48 user: ono tags: trunk)
11:59
Microsoft IIS REQUEST_URI was adding "?" (question mark) regardless of QUERY_STRING emptiness (check-in: b4e3746bf2 user: ono tags: trunk)
2007-11-05
17:10
Finalizing #624 - Windows support: * CVSTrac is checking now for IIS and applying fixes relatively * on IIS we force absolute redirects to fix cookie and other problems * more commens for Windows dependent code (check-in: a66aacaf70 user: ono tags: trunk)
2007-11-03
02:03
Ignore autogenerated files. (check-in: 9067d5512b user: ono tags: trunk)
02:00
Final Windows MinGW port: * pieces of code that are Windows specific marked with CVSTRAC_WINDOWS defines * variables that are different on UNIX and Windows using OS_VAL(unix,win) macro * added password synchronization option to Windows * moved away "mingw" -> "win32" + "win32-mingw.mk" (check-in: f28ae72ed6 user: ono tags: trunk)
01:32
Turn static functions into macros that are changed into -1 for unsupported functions. (check-in: f6e3aafae1 user: ono tags: trunk)
00:35
More clean CSS + HTML, as in #716 (check-in: 107a2091b9 user: ono tags: trunk)
2007-11-02
18:59
UNIX header wrappers for Windows updated with English comments. (check-in: 34c2ea4b76 user: ono tags: trunk)
2007-10-31
17:08
Defines CVSTRAC_WINDOWS and OS_VAL macro which is used to relatively choose UNIX or Windows value (check-in: 2d113d00c1 user: ono tags: trunk)
17:07
Sed on Windows doesn't like empty line -> thinks it is some invalid command (check-in: 96d2697f8d user: ono tags: trunk)
17:06
MinGW (GCC on Windows) makefiles and UNIX wrappers (check-in: 2c3a25dfac user: ono tags: trunk)
2007-10-21
15:54
(#724) more options for custom markup output handling *: add some documentation about markup output filtering *: add "trusted" options for program markups. No HTML filtering is done on their output. It's assumed that the markups aren't going to allow dangerous constructs through. *: Obviously, only external programs are able to do filtering so we don't have trusted versions of non-program markups. (check-in: 11e1e514fb user: cpb tags: trunk)
15:18
(#725) use =sqlite3_free()= rather than =free()= on SQLite 3 functions returning memory strings. (check-in: 6d28375067 user: cpb tags: trunk)
15:15
fix warning: =zAuthor= cannot be NULL (check-in: 5ee8d689ea user: cpb tags: trunk)
2007-09-24
12:28
(#720) works better without the typo (check-in: 0d0e041f9b user: cpb tags: trunk)
2007-09-22
22:13
(#720) fix ETag

*: entity tag is a =quoted-string=, and hence needs quotes *: Vary:* SHOULD be included when dealing with server-negotiated responses (check-in: 74510a0008 user: cpb tags: trunk)

2007-08-23
12:04
(#715) don't show extra fields with missing/empty descriptions

*: This should catch both "NULL" descriptions and zero-length strings. *: Additionally, tighten up the setup page to always remove the old description before changing anything and check the new description before setting anything. (check-in: 163a463930 user: cpb tags: trunk)

2007-08-22
23:34
(#713) remove stray quote from HTML tag (check-in: 9436a91fe5 user: cpb tags: trunk)
23:33
(#714) ticket titles aren't wiki formatted, but still need HTML armouring (check-in: 62b933f534 user: cpb tags: trunk)
00:40
(#712) tighten up error handling in initial =svnlook youngest= call. (check-in: 66e15036ad user: cpb tags: trunk)
2007-08-15
01:16
(#711) fix missing paren (check-in: 8dc1a58111 user: cpb tags: trunk)
2007-08-09
12:12
(#710) fix unclosed <form>

Break the two separate conditions into separate <form> areas and loosen up the condition which create the setup_user link. (check-in: d25d699321 user: cpb tags: trunk)

2007-06-29
01:01
rather than just selecting a few headers to export as HTTP_ environment variables, automatically pass them all through. This makes them available to scripts and is useful for debugging (via /test). (check-in: f56db0291a user: cpb tags: trunk)
2007-06-28
02:05
(#704) merge [957]: drop dupe (check-in: 11fadfdedc user: cpb tags: release2_0_1)
02:03
(#704) drop duplicate (check-in: b50c1a2805 user: cpb tags: trunk)
01:20
(#703) not the correct format for maxSummaryLength limit hit (check-in: 84f15b24ee user: cpb tags: trunk)
2007-06-27
10:41
(#702) merge [954]: typo fix (check-in: b4c4ed509c user: cpb tags: release2_0_1)
10:37
(#702) fix typo (check-in: 4e214dd311 user: cpb tags: trunk)
02:00
revert color scheme to something closer to CVSTrac original. (check-in: 510cae25fb user: cpb tags: trunk)
02:00
(#231) added a fairly clean alternate CVSTrac stylesheet. (check-in: 9beb81dfdd user: cpb tags: trunk)
01:38
Subdirectory for stylesheets. Add the =cvstrac-plus.css= stylesheet. (check-in: fa506e13d2 user: cpb tags: trunk)
2007-06-24
01:12
In chngview, output a table of related check-ins extracted from the commit message. This is makes merges much more explicit (i.e. [553]). While you can follow a link, following each link in a complex merge to get an overview is rather annoying. (check-in: 2da55ff6be user: cpb tags: trunk)
00:23
(#476) handle GIT merges, kinda

CVSTrac doesn't really have a way to track proper merges (which basically implies multiple CHNG.prevvers entries) but we _can_ reference merge source check-ins in the commit message. It's still not as easy as I'd like to follow GIT development, but this makes it clearer what things are merges and what commits are being pulled into the merge.

*: we need to ingest the whole commit tree as we check refs, and we need to do it such that roots get the lowest CN numbers and are databased before anything which relies on them. This means making =git_ingest_commit_tree()= truly recursive. *: drop the temporary =ci= table, since we now need to do it all in one pass *: add a function to convert multiple parents into a merge list and update the check-in comment with something like "Merged [n1], [n2], ..." *: in order to _display_ merges, we need to use =git-diff= rather than =git-diff-tree=. *: add =pxHistoryReconstructPrep= and =pxHistoryRescanPrep= callbacks to =g.scm= so we can "do things" to SCM-specific tables and whatnot before a history reconstruct or rescan. In the case of GIT, a reconstruct requires removing all the refs milestones. Other SCMs may have similar requirements.

This doesn't break database compatibility, but you _will_ have to do a reconstruct if you want to see merges properly. Unfortunately, a reconstruct may alter check-in numbers and break links in wiki text or manually created ticket cross-references. (check-in: 3219fa7f89 user: cpb tags: trunk)

2007-06-23
17:56
(#476) when diffing trees for output, expand the full commit ids. (check-in: 599c8f5f73 user: cpb tags: trunk)
2007-06-21
01:24
(#696) =git-cvsimport= doesn't deal with some of the cvs import tags all that well. The result is GIT refs which point to _empty_ commits. Well, CVSTrac assumes non-empty commits, so thigs throws things off. The main problem is that we end up trying to process these empty commits _each_ history update, and we create new commits _each_ history update, one for each of these kinds of tags. This slows things down tremendously, as you can imagine, and artificially increments the check-in counter.

The fix is to detect the missing FILECHNG records and ensure we create the refs milestone anyways. Once we've got the refs milestone with an proper object reference, we'll never try to update those refs again. (check-in: 7e9b7e50b0 user: cpb tags: trunk)

2007-06-15
18:27
(#696, #698) where feasible, create an index on =chng(branch,directory)=. This makes the GIT history update run approximately 10x faster. (check-in: 0997ecb8f2 user: cpb tags: trunk)
2007-06-09
03:18
move [Directory] to action menu (check-in: 7ea8580ba8 user: cpb tags: trunk)
03:03
(#698) clean up GIT refs milestone stuff

Basically, we drop the TAGS and HEADS tables entirely and exploit the fact that GIT doesn't make _any_ use of the CHNG.branch and CHNG.directory fields. CHNG.branch is meaningless since branches aren't static and a single commit might belong to any number of branches. CHNG.directory is also meaningless because GIT operates on the entire tree in a single commit. So for GIT milestones, CHNG.branch=refs/* and CHNG.directory=object.

This allows us to completely drop a couple tables (which may break reports) and simplifies a lot of queries and stuff. Because we've got other places to put things, the milestone message can also be shortened.

To upgrade an existing database, something like:

DROP TABLE heads; DROP TABLE tags; DELETE FROM chng WHERE milestone>0 AND message LIKE '%(%, commit %';

before any GIT history update will be fine.

As an added bonus, we're no longer looking directly at files in the GIT repository. We just use command-line tools. So we're probably a lot more resiliant to changes in repository layouts. (check-in: 89dfc6a081 user: cpb tags: trunk)

02:53
(#698) don't make missing directories links (check-in: 38b204cede user: cpb tags: trunk)
2007-06-08
00:37
(#696) more refs/heads/tags fixes *: typo in the =git-for-each-ref= format appended a '2' to everything *: fix some indentation/formatting problems *: _delete_ refs which are no longer in use. Strictly speaking, this isn't necessary since it might be useful historical information. But who knows if the objects are still there, too? Unreacheable objects might get pruned when the refs all disappear. (check-in: 8cf381f2b3 user: cpb tags: trunk)
2007-06-07
00:49
(#697) die with an error if the SQLite3 version switches from 3.3.7 to higher without a rebuild (check-in: f279bd8e70 user: cpb tags: trunk)
2007-06-06
01:35
(#696) the culprit was actually =git_update_refs()=. We ran through the entire refs list rather than just the ones which changed. No big deal, except for each one in the list the REPLACE a milestone _into the chng_ table. At 20000 records without transactions, that's not so quick.

Use another temp table to help prune the list down to the bare minimum. There's room for other improvements, too. (check-in: a00e3770a4 user: cpb tags: trunk)

2007-06-05
23:25
(#696) rewrite the =git_read_refs()= to use =git-for-each-ref=. It's definitely cleaner, and hopefully a bit faster. (check-in: fa022e3e89 user: cpb tags: trunk)
2007-06-04
03:04
Don't include a separate "Committer:" line in the message if the committer is the same as the author. It just clutters things up without adding useful information. (check-in: b6de7ac1bf user: cpb tags: trunk)
2007-06-03
19:41
just use the leading 8 chars for a printable version (check-in: 61ec7231db user: cpb tags: trunk)
2007-05-26
00:41
(#694) check for NULL username (CLI only) (check-in: fe3f704fab user: cpb tags: release2_0_1)
2007-05-16
00:58
(#200) add a (untested) Solaris/GCC Makefile (check-in: 5dc0637a72 user: cpb tags: trunk)
2007-05-08
17:47
Do a unified diff rather that a context diff when showing differences. (check-in: 3aaf997162 user: root tags: trunk)
2007-04-23
10:31
(#689) allow titles to be greater than 70 chars via (undocumented) max_ticket_summary config option (check-in: 02100e90c3 user: cpb tags: trunk)
2007-02-12
19:38
(#637) =chng= and =inspect= records are viewable by people with wiki read permissions, not checkout. Missed that in the report authorizer. (check-in: 964cc7c3cb user: cpb tags: trunk)
2007-02-11
10:22
Add the "attachdump.c" utility program used to upgrade a database from version 1.2.1 to 2.0.x. See http://www.sqlite.org/cvstrac/tktview?tn=2208 (check-in: 31f4ba3575 user: drh tags: trunk)
2007-01-31
23:46
(#575) merge [929] (check-in: 2127ee2006 user: cpb tags: release2_0_1)
23:39
(#575) sqlite3_value_text() _may_ be doing an encoding conversion (check-in: 63baec75b8 user: cpb tags: trunk)
18:18
merge [927] (check-in: 8f0d9c687f user: chorlya tags: release2_0_1)
18:15
[795] needlessly changed query string parameter name from =nxp= to =cnxp= and broken captcha redirection after successful test. Ticket #617 (check-in: a8c87cb5e6 user: chorlya tags: trunk)
2007-01-30
12:15
(#684) finish up the transaction if no repository (check-in: 15b5925f1a user: cpb tags: trunk)
2007-01-29
21:58
Fix "uninitialized variable" issue as in "if( zTime==0 || (tm = parse_time(zTime))==0 )" the variable "tm" could be never initialized due to (fully valid and ISO C conforming) short-circuiting behaviour in the evaluation of a boolean expression -- i.e. in case zTime==0 (true) the second part of the expression never has to be evaluated as the expression as a whole already is true. (check-in: 377b5272d5 user: rse tags: trunk)
21:48
remove dead code (check-in: 85f584dc9b user: rse tags: trunk)
19:42
bump version in HEAD (check-in: c09eb55627 user: cpb tags: trunk)
2007-01-28
22:50
merge [912] (check-in: 3300d3a592 user: cpb tags: release2_0_1)
22:50
merge [911] (check-in: 2a912ca88a user: cpb tags: release2_0_1)
22:22
fix typo (check-in: 3778709b33 user: rse tags: trunk)
21:56
use strict ISO C prototyping (check-in: 7a5bff40b3 user: rse tags: trunk)
21:54
plug three memory leaks (check-in: 73cbc90531 user: rse tags: trunk)
21:37
FlexeLint correctly complained "format_.c 1338 Warning 673: Possibly inappropriate deallocation (free) for 'modified' data" as the whitespace skipping on zCaption following by a free(zCaption) would lead to a crash.

The obvious and 100% compatible fix would be something like this:

--- format.c 30 Sep 2006 11:01:30 -0000 1.91 +++ format.c 28 Jan 2007 21:33:13 -0000 @@ -1323,8 +1323,9 @@ || (sMarkup.lenType==11 && strncmp(sMarkup.zType,"rightreport",11)==0) || (sMarkup.lenType==10 && strncmp(sMarkup.zType,"leftreport",10)==0) ){ - char *zCaption = mprintf("%.*s", sMarkup.lenArgs, sMarkup.zArgs); + char *zCaption, *zCaptionOrig; char *zAlign = 0; + zCaptionOrig = zCaption = mprintf("%.*s", sMarkup.lenArgs, sMarkup.zArgs); if( sMarkup.lenType==11 ){ zAlign = "align=\"right\""; }else if( sMarkup.lenType==10 ){ @@ -1335,7 +1336,7 @@ embed_view( atoi(sMarkup.zKey), (sMarkup.zArgs==sMarkup.zKey) ? "" : zCaption, zAlign ); - free(zCaption); + free(zCaptionOrig); zText += sMarkup.lenTotal; i = 0; wordStart = lineStart = paraStart = 0;

But the whitespace skipping never can happen as the is_markup() call around the parsing code already skipped all leading whitespaces. Hence we fix the deallocation problem by just removing the unnecessary second whitespace skipping attempt. (check-in: 72db38160a user: rse tags: trunk)

20:45
Fix a deallocation problem by using an allocated string instead of a constant string in the special case. This fixes the FlexeLint error: "inappropriate deallocation (free) for 'constant' data". (check-in: 588dda9ac0 user: rse tags: trunk)
20:41
cleanup code: '-0' is just '0' (detected via FlexeLint) (check-in: 19a97d71ed user: rse tags: trunk)
20:15
Use a more explicit "1+(c!=0?1:0)" instead of the "1+(c!=0)" as arithmetic with embedded boolean expressions is both confusing and partially unportable (AFAIK only "false" is guaranteed to be "0", but "true" is just "not 0" and not exactly "1"). (check-in: dfd27bbe4f user: rse tags: trunk)
18:43
remove useless ('always true') sub-expression as variable 'zName' is ensured to be *not NULL a few lines above (detected by FlexeLint) (check-in: d2651d6f5a user: rse tags: trunk)
18:40
merge [906] (check-in: 9ecc82795e user: cpb tags: release2_0_1)
18:29
Fix compile-time warning: sqlite3_set_authorizer() expects a "void *" pointer and hence under strict compilation the "int" nAuthStack has to be casted from an integer to a pointer type. (check-in: fcd4aa355f user: rse tags: trunk)
2007-01-27
23:30
merge [892] (check-in: e93bdda86d user: cpb tags: release2_0_1)
23:29
merge [896] (check-in: d1886bbe1b user: cpb tags: release2_0_1)
2007-01-22
00:44
use %T, not %h, in URL (check-in: 3d59620c1f user: cpb tags: trunk)
2007-01-21
02:32
merge [901] (check-in: 1b193d05b8 user: cpb tags: release2_0_1)
02:31
we don't really know if the memory for *cgi()* second parameter is static, so we probably shouldn't flag it as static. (check-in: 6d948e7544 user: cpb tags: trunk)
01:24
merge [899] (check-in: e812557377 user: cpb tags: release2_0_1)
01:23
tighten up checks for attachment file args (check-in: 9109b31850 user: cpb tags: trunk)
01:12
merge [897] (check-in: ee022f3ac0 user: cpb tags: release2_0_1)
01:10
only the user and admin can manipulate attachments on a home page. This snuck past me in testing because none of my user names are CamelCase. (check-in: ab5ae5706d user: cpb tags: trunk)
2007-01-20
21:21
Make more/better use of the SQLite authorizer.

Currently, we're using the authorizer to enforce restrictions on report statements. Since, internally, CVSTrac distinguishes between query and execute styles of commands, it makes some sense to add similar authorizer facilities to some of these functions as well.

This patch introduces the concept of an authorizer stack to which we can push and pop from (otherwise, interactions between query and the existing report authorizer are impossible to manage) and uses it in all the query-style functions. As a side-effect we also need to create a separate =db_execute_callback()= function. A define, USE_STRICT_AUTHORIZER, is created to "help" CVSTrac developers avoid using the from query/execute call.

The goals are multiple: to defang potential SQL injections, inadvertant data leaks, and (eventually) privledge escalations such as are currently blocked in reports. Eventually, it may also get used to help enforce protections should we implement embedded scripting. It also introduces a framework for preventing silly mistakes (i.e. CREATE/DROP table outside of schema and history updates, deleting rather than updating things, etc). (check-in: 41fc1c9f55 user: cpb tags: trunk)

2007-01-17
09:34
fix compilation by returning error code for non-void function (check-in: feaa2fc337 user: rse tags: trunk)
2007-01-01
00:51
(#283) add support for multiple modules (or just more complicated repository filters) by allowing regular expressions in the CVS module filters. Note that this is CVS-only. Trying it with Subversion would leave holes in the check-in numbers, and I don't even want to think about what would happen with GIT revision chains... (check-in: c21dbe23fb user: cpb tags: trunk)
2006-12-31
03:23
(#545) At high detail levels, include a list of changed files in check-ins. This is extremely helpful when dealing with larger projects. (check-in: 23b7dc6c45 user: cpb tags: trunk)
2006-12-30
15:22
(#676) add an OpenBSD makefile template, and fix the vanilla BSD makefile. (check-in: a37e5b21ac user: cpb tags: trunk)
2006-12-23
15:38
(#637) when [841] made check-ins viewable to more users, forgot to push that logic to the RSS feed. Fix it so <link> tags are now available for users with *read* rather than *checkin* permissions. (check-in: 675b70e2a9 user: cpb tags: trunk)
2006-12-14
03:38
(#231) make the timeline options fieldsets just a little tighter. (check-in: eccc7cc835 user: cpb tags: trunk)
00:57
a version bump might be helpful (check-in: 31c47f45fb user: cpb tags: release2_0_1)
00:47
merge [874] to 2.0.1 (check-in: a0ef6c9604 user: cpb tags: release2_0_1)
00:45
merge [873] to 2.0.1 (check-in: e992269bdc user: cpb tags: release2_0_1)
00:35
merge [869] to 2.0.1 (check-in: bac1162632 user: cpb tags: release2_0_1)
00:34
merge [868] to 2.0.1 (check-in: d6b1082db7 user: cpb tags: release2_0_1)
00:33
merge [867] to 2.0.1 (check-in: fac18a2afe user: cpb tags: release2_0_1)
00:30
merge [866] to 2.0.1 (check-in: 9f7cd39715 user: cpb tags: release2_0_1)
00:29
merge [865] to 2.0.1 (check-in: bd5adc809b user: cpb tags: release2_0_1)
00:27
merge [864] to 2.0.1 (check-in: e9d8bb1302 user: cpb tags: release2_0_1)
00:24
merge [863] to 2.0.1 (check-in: f0b712f45e user: cpb tags: release2_0_1)
00:24
merge [862] to 2.0.1 (check-in: 31d53a0aca user: cpb tags: release2_0_1)
00:23
merge [861] to 2.0.1 (check-in: a45c117d02 user: cpb tags: release2_0_1)
00:19
merge [858] to 2.0.1 (check-in: 3fe4680f32 user: cpb tags: release2_0_1)
2006-12-03
01:47
(#231) tweak the timeline options. Still getting some glitches, but better. (check-in: 9c16735281 user: cpb tags: trunk)
01:38
tighten up the prefix text field layout (check-in: 4835317c1d user: cpb tags: trunk)
01:33
an empty value string is a legitimate value for most controls (check-in: 37ff227819 user: cpb tags: trunk)
01:29
(#231) fix timeline layout when dt=0. It's not quite as nice as I'd like, but everything fits okay at reasonable font sizes. Also fixes a problem with milestone dividers being blank at dm=1. (check-in: 9f1deea8b3 user: cpb tags: trunk)
2006-11-30
01:13
(#231) drop the =overflow= directives. They were basically doing weird things which would have called for one of those "clearfix" hacks. They were also creating scrollbars where not needed. (check-in: 619f1c82b8 user: cpb tags: trunk)
2006-11-09
02:10
(#670) fix some URL manipulations *: base URL calculations were still kinda broken. We really need to move it into the main area so we have some idea if the project name is in there somewhere. Also, it's a lot easier to just concatenate environment variables like =SCRIPT_NAME= than rip apart the =REQUEST_URI=. This probably needs testing with more web servers. *: fix problem with not having a trailing / after the project name. Basically, because we output relative links, this meant that the browser was sending users to places like http://host/tktview?tn=9 rather than http://host/project/tktview?tn=9. (check-in: cc9d0dd6ff user: cpb tags: trunk)
2006-10-30
21:34
<string.h> is not used required under WIN32. It is also required under Unix to get the prototypes for strlen(3) and others. So, include it unconditionally (it is a standard header anyway) (check-in: 6354360175 user: rse tags: trunk)
21:33
CVSTrac uses crypt(3) and this requires the inclusion of the non-standard header <crypt.h> on at least Linux and Sun Solaris platforms to get the correct prototype (else an implicit prototype is assumed by the compiler). As CVSTrac does not have any Autoconf build environment, we have to use some hard-coded feature tests as a workaround. (check-in: 7a404a1916 user: rse tags: trunk)
21:31
Fix segfaults under 64-bit platforms where sizeof(int) != sizeof(void *), because the variable argument function cgi_optionmenu() expects a null-terminating _pointer_ and passing "0" to such a variable argument function passes an integer (which is usually a smaller integral type than a pointer on 64-bit platforms) and not a pointer on the stack. As a result, the function grabs garbage from the stack and segfaults. (check-in: e52840b8ca user: rse tags: trunk)
00:50
(#668) handle the =SQLITE_FUNCTION= authorizer option. At the moment, there's really no reason to restrict function calls. Tested against SQLite HEAD as of about 15 minutes ago. (check-in: 2d79b6219a user: cpb tags: trunk)
2006-09-30
11:12
GCC 4.2.0 20060923 is correct in stating...
common_.c:399: warning: the address of 'azLink' will always evaluate as 'true' common_.c:415: warning: the address of 'azAction' will always evaluate as 'true'

..for the following code lines...

[...] if( nLink && azLink ){ [...] if( nAction && azAction ){ [...]

...as we have...

static const char *azLink[50]; static const char *azAction[50];

...and ISO-C always implicitly makes the name of the array variable to be a pointer to the array and as the array is a static array it _always_ is a valid pointer and hence always "true" in boolean context.

OTOH we don't need the comparison here at all as the nLink and nAction check is really sufficient to know whether the array contain content. So, remove the warning by removing the useless parts from the boolean expression. (check-in: ad7cff7f48 user: rse tags: trunk)

11:01
Cleanup the CVSTrac sources so they again pass GCC 4.1.1 (and 4.2.0 20060923 except for one special issue) under option set "-O2 -Wall -Wno-long-long -Wpointer-arith -Wcast-align -Winline -Wmissing-prototypes -Wmissing-declarations -Wnested-externs" without any warnings. For the sign and "const" related issues (where usually multiple solutions exists to resolve), I've resolved them by using as less as possible evil "casts". (check-in: 49638d721f user: rse tags: trunk)
2006-09-29
21:02
The logout procedure luckily works, but not really as intended. It has two defects: first the cookie row from the "cookies" table is incorrectly deleted via the name of the cookie instead of the value of the cookie. Second, the usual way to perform a clean logout is not to just re-set the cookie to an invalid value, but to set it to this value with an expiry time in the past. This way the browser really immediately kicks out the cookie from its own database (so people really see that the logout cookie is gone) more or less at the same time CVSTrac removes the cookie from its database. Keep in mind that passing 0 to cgi_set_cookie as the time is NOT the right thing to do here. (check-in: e33c8f18c0 user: rse tags: trunk)