Fix the "fossil all ui" command so that it works on Windows. But also
comment out some very confused logic in process_on_web_page() that is
associated with "--baseurl" option. This logic needs to be fixed prior
to merging with trunk.
check-in: da1c769c user: drh tags: all-ui

New /file page that works like /artifact except takes a filename as an
argument instead of a SHA1 hash of an artifact, and resolves to the most
recent version of any file with that name.
check-in: d95f712f user: drh tags: trunk

Avoid comparing a variable to NULL after the memory it is pointing to has been
freed. This is harmless, as implemented, but it is technically undefined
behavior in C. (This is a bug in the specification of the C language, imho.)
check-in: 4e126233 user: drh tags: trunk

Correct issue with open/closed tags by changing the closed column to a quasi-aggregate query, i.e. one which is a function of the argument to GROUP BY and not anything which varies within the group. This gives consistent results with the baseline branch ls command, but it introduces a MAJOR performance regression. Listing closed tags goes from 0.033s in the baseline to 1.882s, i.e. it takes 56 times longer.
Leaf
check-in: b302f893 user: andygoth tags: andygoth-branch-list

Begin work merging new_brlist_page() into brlist_page().
Annoyance: The new open/closed checkboxes don't quite work the way I want
them to work. Deselecting both has the effect of selecting both. This makes
sense in that if neither the open nor closed query parameters are given,
everything should be displayed, rather than nothing. Yet, the user interface
would be nicer if deselecting the only selected checkbox causes the other
checkbox to be selected. This can't be done with straight HTML because
deselecting the checkbox removes it from the query string, and the server does
not know which checkbox was deselected so it cannot force the other one to
become selected. As far as I know, JavaScript is required.
Bug: Non-aggregate HAVING clause expressions are evaluated on an arbitrarily
chosen row within each group. This breaks closed and open filtering for the
command-line branch command and the new checkboxes. But shouldn't this also
break non-aggregate result expressions?
Wish: Filter on normal/hidden branches too.
Wish: If a merged-to branch is hidden, don't show it in the resolution column,
instead show something else. The latest merged-to? The earliest merged-to?
Wish: Branch name filters, just like on the timeline page.
check-in: a6a44820 user: andygoth tags: andygoth-branch-list

Fix revert -r option to mark a reverted file as edited if the reverted-to version does not exactly match the checkout version, even if the file size is equal
check-in: f9080683 user: andygoth tags: trunk

Make changing to a symlink take priority over all other change types. This might also be a solution to the problem fixed by the previous commit, but it also avoids having a file that becomes a symlink (with target string length not equal to former file size) being marked as an ordinary edit.
check-in: f10a284a user: andygoth tags: trunk

Don't rely on vfile.islink to tell whether or not a file is currently a symlink for the purpose of avoiding calling file_contains_merge_marker(). It is possible for a file to have become a symlink since the last commit. If the link target's string length is not equal to the former file size, vfile_check_signature() will treat it as a normal change and not mark it as chnged==8 (SYMLINK), so execution can fall through to the undesirable call to file_contains_merge_marker().
check-in: 43140feb user: andygoth tags: trunk

Fix timeline -n 0 to display an unlimited number of lines (rather than zero) to match documentation. Correct timeline -n for negative N documentation to match actual behavior. Limit compute_ancestors() and compute_descendants() on the assumption that there is no more than one entry per line.
check-in: def9af43 user: andygoth tags: trunk

Make artifact|whatis page use local time to match the timeline. Otherwise clicking on date/time links finds the wrong check-in in the timeline. May wish to convert other calls to datetime() to use local time.
check-in: e7192bb9 user: andygoth tags: trunk

The 'ignore-glob' setting should not be used for build output files; otherwise, 'extras' command is unable to see them and 'clean' command is unable to remove then. Also, the 'add' command should already ignore files matching the 'clean-glob', there is no need to duplicate its contents in 'ignore-glob'.
Remark (JN): "fossil clean -x" could be your friend here, it makes life a lot easier.
check-in: dc9ac1d7 user: mistachkin tags: trunk

Make "fossil extra" work as expected in fossil repository: not mentioning build-artifacts any more. This makes sure that files resulting from a build cannot be accidently "fossil add"-ed any more.
check-in: 6ef3a2a4 user: jan.nijtmans tags: trunk

Integrate andygoth-crlf. This renames CRNL to CRLF throughout Fossil. crnl-glob is renamed to crlf-glob, but crnl-glob is retained as a compatibility alias.
check-in: 87320cf4 user: andygoth tags: trunk

Integrate andygoth-changes for broader testing and comment. This change should be fully backward-compatible, unless of course a script depends on the help text never changing or new options never being added. All existing options and defaults should work identically to before. I had planned to update the ls command to use the same backend as changes/status, but that work will have to wait until we decide if the ls options should be redesigned. The SCAN_MTIME, SCAN_SIZE, C_MTIME, and C_SIZE flags are currently unused and can be removed, but their presence harms nothing, and they should be useful for a basis for an updated ls command, though they may need modification to address confusion between commit time, on-disk mtime, checked-in size, and on-disk size.
check-in: 7c8cc2ad user: andygoth tags: trunk

Correct SQL syntax error on "fossil changes -merge" which is not supposed to display any files yet still tries to run the file query even though it says only "ORDER BY pathname" with no SELECT
check-in: 61da7752 user: andygoth tags: andygoth-changes

More reliably work around the problem experienced by the previous commit. Not sure if this is the right long-term solution since we seem to have an architectural problem: at least one of Fossil's custom SQL functions can change the schema (in this case, by creating a temporary table), thereby invalidating a prepared statement while it is running. See the comment in checkin.c for a bit more information. Of course, there are rearrangements that avoid the issue, but it is certainly a trap for the unwary.
check-in: 5258a43d user: andygoth tags: andygoth-changes

Begin expanding status_report() to support being the backend for the ls command. The work is not yet complete. First we must debug a mysterious abort in SQLite. Test case: run "./fossil changes -differ" with at least one changed file.
check-in: 9d5de8d7 user: andygoth tags: andygoth-changes

Add more comments. Replace the changesOnly field with the knowledge that --classify and --no-classify are the only table-driven options specific to the changes command. Correctly ignore --header and -v|verbose when running the status command so their use triggers an error. Add the --differ option which combines the default list of changes (sans --merge) with --extra, i.e. all files that differ from the checked-out baseline version.
check-in: d1214f37 user: andygoth tags: andygoth-changes

Fold print_changes() into status_cmd() (formerly changes_cmd()). Remove C_SHA1SUM, C_HEADER, and C_VERBOSE flags which are no longer needed for communicating options to print_changes(). Move locate_unmanaged_files() closer to the top of the file so status_cmd() can call it. Implement C_UNMODIFIED and C_EXTRA in status_report(). Document the fact that the changes and status commands take optional path arguments. Let changes and status commands accept --case-sensitive (was already done), --dotfiles, and --ignore for the benefit of --extras. Incorporate search for extra files into status_cmd().
check-in: f15d20e3 user: andygoth tags: andygoth-changes

Adjust the way --changed is implemented. Improve documentation. Avoid saying
EDITED for files with other types of changes if those change types were not
selected for display.
check-in: 2408fd1c user: andygoth tags: andygoth-changes

Have makeheaders ignore completely anonymous enums so they can be used within a single source file, useful for value autoincrementing. Update documentation accordingly. Write more about makeheaders's limitations discovered while researching this issue. Remove unnecessary explicit links to makeheaders.html in said file so it can be renamed without consequence. Ensure href attributes are surrounded by quotes. Add missing </html> to end of makeheaders.html.
check-in: 4dcfbc1c user: andygoth tags: trunk

Add BCCFLAGS and XBCC to build system so that programs which run on the build platform (e.g. translate) can have the benefit of CFLAGS, e.g. -ggdb3 for easier debugging in gdb or -std=c89 to flush out C99. Do not update win/* because I don't have the ability to test those changes.
check-in: ad110346 user: andygoth tags: trunk

Demote the rss command to second-tier because it is infrequently used and falls in the saame general category as the server and cgi commands which are already second-tier
check-in: d623a0ad user: andygoth tags: trunk

Add timeline rel query string and change r=TAG to be an alias for t=TAG&rel so that related can be a checkbox and the tag filter text entry can work whether or not related is checked. This addresses issues (2) and (3).
check-in: 90057326 user: andygoth tags: andygoth-timeline-ms

Draw dotted box around entire row of checkout version, not just the check-in comment and descriptive text. In my experience, it's too hard to see the dotted box against a colored background when the checkout version is on a branch. This whole-row behavior matches the version marking option provided by the timeline "m" query string. I considered also increasing the line thickness from 1px to 2px, but I found it to be too distracting. Instead, I added a very faint shadow similar to, but much lighter than, the one used by the "m" version marker.
check-in: e5b53f15 user: andygoth tags: trunk

Rework [98cc8782e1] to more thoroughly ignore empty match tags and patterns so that the "Related" submenu item does not appear due to an empty tag filter text entry adding "t=" to the query string
check-in: 3bcdc077 user: andygoth tags: andygoth-timeline-ms

Merge trunk. Some issues identified by [d4a6d3c1ec] are now improved. (1) is fixed, though clicking/tabbing outside the entry field also triggers a submit which may prove annoying. (2) and (3) are still broken. (4) is better because "With/Without Files" is now a checkbox simply labeled "Files". (5) is closer to being feasible, perhaps if "Tag Filter:" is changed to "Filter:".
check-in: 74fe9587 user: andygoth tags: andygoth-timeline-ms

Use <label> to connect setup checkboxes with their label text so either the checkbox or the label can be clicked on, also makes the checkbox highlight when the mouse hovers on the label
check-in: 9036122d user: andygoth tags: trunk

Implement style_submenu_checkbox(). Change "unhide" to a checkbox so it can be cancelled without editing the URL by hand. Update skins to support use of <label> tag. Remove redundant "if" check in style.c. Checkbox styling can certainly be improved, but this is a start.
check-in: 8d880f0b user: andygoth tags: trunk

Consistently use the count(X) macro in place of sizeof(X)/sizeof(*X) throughout the Fossil core, excluding things that don't use makeheaders. Also use count(X) instead of ArraySize(X) which has the same definition.
check-in: e5b62edb user: andygoth tags: trunk

Integrate andygoth-quote-apostrophe. Needed because single quotes can be used in the tag filter entry, and these single quotes would otherwise be passed through unprotected to the output HTML.
check-in: 68bd2e7b user: andygoth tags: andygoth-timeline-ms

Modify linenoise.c so that it can build with -std=c89. Baseline linenoise.c relied on snprintf(), strdup(), and strcasecmp() which are technically not in C89. Since linenoise.c's only purpose (at present) is to implement the SQLite shell, make use of the SQLite compatibility functions. Following this change, "fossil clean -f && CFLAGS='-std=c89 -Wall' ./configure && make" builds without warnings or errors on gcc 4.4.7 20120313 (Red Hat 4.4.7-3) on CentOS release 6.4 (Final). Unrelated note: discovered during testing that "CFLAGS=-Werror ./configure" fails to add -lm to link step due to conflicting types for built-in function "sin" being regarded as an error.
check-in: 8133501e user: andygoth tags: trunk

Add timeline web UI to set tag filter and match style. Still not 100%. (1) Now that more than one text entry is on the page, pressing enter does not trigger a submit [Firefox ESR 10.0.12], (2) electing "Related" causes Tag Filter to blank, (3) entering a tag filter while "Related" is selected causes "Related" to be deselected, (4) possibly too much clutter, and (5) definitely too much clutter if combined with any future expansions. (1) is due to the lack of a submit button. (2) and (3) are a bad interaction between the t=/r= dichotomy and the design of style_submenu_entry(). (4) maybe could be addressed by changing "Related"/"Branch Only" and "Without Files"/"With Files" to checkbuttons, but style_submenu_checkbox() was never actually implemented. (Probably also want "Unhide" to be a checkbox.) For (5) I have in mind letting the admin define a project-specific list of preset filters.
check-in: d4a6d3c1 user: andygoth tags: andygoth-timeline-ms

Change style_submenu_entry() to allow zero and negative iSize. Zero iSize means display size and length limit are not specified, and negative iSize means no length limit is specified but the display size is set to the absolute value of iSize.
check-in: 2e9ac33a user: andygoth tags: andygoth-timeline-ms

Cherrypick 3 bug-fixes from SQLite trunk, discovered just after the SQLite 3.15 release, among them a fix to VACUUM to prevent it from running out of memory on very large databases
See 34a579141b2c5ac and fef4bb4bd9185ec8f
(most likely, those 3 will be in SQLite 3.15.1, if ever released)
check-in: 360694a7 user: jan.nijtmans tags: branch-1.36

Backout the fusefs change. The correct solution is to run "./configure"
followed by "make clean fossil" in order to rebuild when updating from
historical sources.
check-in: 08f0ac0c user: drh tags: trunk

Now that FuseFS support is conditional, permit config.h to be included so FOSSIL_HAVE_FUSEFS can be correctly included from autoconfig.h to avoid linker failure to find fusefs_cmd.
check-in: a4bb89ba user: andybradford tags: trunk