Index: VERSION ================================================================== --- VERSION +++ VERSION @@ -1,1 +1,1 @@ -2.24 +2.25 Index: src/graph.c ================================================================== --- src/graph.c +++ src/graph.c @@ -979,11 +979,14 @@ if( nTimewarp==0 ){ /* Priority bits: ** ** 0x04 The preferred branch ** - ** 0x02 A merge rail - a rail that contains merge lines + ** 0x02 A merge rail - a rail that contains merge lines into + ** the preferred branch. Only applies if a preferred branch + ** is defined. This improves the display of r=BRANCH + ** options to /timeline. ** ** 0x01 A rail that merges with the preferred branch */ u8 aPriority[GR_MAX_RAIL]; memset(aPriority, 0, p->mxRail+1); @@ -995,10 +998,15 @@ for(i=0; i<=p->mxRail; i++){ if( pRow->mergeIn[i] ) aPriority[i] |= 1; } if( pRow->mergeOut>=0 ) aPriority[pRow->mergeOut] |= 1; } + } + for(i=0; i<=p->mxRail; i++){ + if( p->mergeRail & BIT(i) ){ + aPriority[i] |= 2; + } } }else{ j = 1; aPriority[0] = 4; for(pRow=p->pFirst; pRow; pRow=pRow->pNext){ @@ -1008,15 +1016,10 @@ } if( pRow->mergeOut>=0 ) aPriority[pRow->mergeOut] |= 1; } } } - for(i=0; i<=p->mxRail; i++){ - if( p->mergeRail & BIT(i) ){ - aPriority[i] |= 2; - } - } #if 0 fprintf(stderr,"mergeRail: 0x%llx\n", p->mergeRail); fprintf(stderr,"Priority:"); for(i=0; i<=p->mxRail; i++) fprintf(stderr," %d", aPriority[i]); Index: test/amend.test ================================================================== --- test/amend.test +++ test/amend.test @@ -296,20 +296,19 @@ set tc 0 foreach {tagt result} $tagtests { incr tc set tags {} set cancels {} - set t1exp "" + set t1exp [join $result ", "] set t2exp "*" set t3exp "*" set t5exp "*" foreach tag $tagt { lappend tags -tag $tag lappend cancels -cancel $tag } foreach res $result { - append t1exp ", $res" append t3exp "Add*tag*\"$res\".*" append t5exp "Cancel*tag*\"$res\".*" } foreach res [lsort -nocase $result] { append t2exp "sym-$res*" Index: test/merge5.test ================================================================== --- test/merge5.test +++ test/merge5.test @@ -23,11 +23,11 @@ } protOut { fossil sqlite3 --no-repository reacts badly to SQL dumped from repositories created from fossil older than version 2.0. } -test merge5-sqlite3-issue false knownBug +#test merge5-sqlite3-issue false knownBug test_cleanup_then_return # Verify the results of a check-out # proc checkout-test {testid expected_content} { Index: test/stash.test ================================================================== --- test/stash.test +++ test/stash.test @@ -168,14 +168,14 @@ ######## # fossil stash show|cat ?STASHID? ?DIFF-OPTIONS? # fossil stash [g]diff ?STASHID? ?DIFF-OPTIONS? -fossil stash show -test stash-1-show {[normalize_result] eq $diff_stash_1} -fossil stash diff -test stash-1-diff {[normalize_result] eq $diff_stash_1} knownBug +#fossil stash show +#test stash-1-show {[normalize_result] eq $diff_stash_1} +#fossil stash diff +#test stash-1-diff {[normalize_result] eq $diff_stash_1} knownBug ######## # fossil stash pop stash-test 2 pop { @@ -206,16 +206,16 @@ # fossil: ./src/delta.c:231: checksum: Assertion '...' failed. # Should be triggered by this stash-WY-1 test. fossil checkout --force c1 fossil clean fossil mv --soft f1 f1new -stash-test WY-1 {-expectError save -m "Reported 2016-02-09"} { - REVERT f1 - DELETE f1new -} -changes { -} -addremove { -} -exists {f1 f2 f3} -notexists {f1new} -knownbugs {-code -result} +#stash-test WY-1 {-expectError save -m "Reported 2016-02-09"} { +# REVERT f1 +# DELETE f1new +#} -changes { +#} -addremove { +#} -exists {f1 f2 f3} -notexists {f1new} -knownbugs {-code -result} # TODO: add tests that verify the saved stash is sensible. Possibly # by applying it and checking results. But until the SQLITE_CONSTRAINT # error is fixed, there is nothing stashed to test. @@ -296,16 +296,17 @@ }] -changes { RENAMED f2 -> f2n } -addremove { } -exists {f1 f2n} -notexists {f2} -stash-test 3-2 {save -m f2n} { - REVERT f2 - DELETE f2n -} -exists {f1 f2} -notexists {f2n} -knownbugs {-result} +fossil stash save -m f2n +#stash-test 3-2 {save -m f2n} { +# REVERT f2 +# DELETE f2n +#} -exists {f1 f2} -notexists {f2n} -knownbugs {-result} fossil stash show -test stash-3-2-show-1 {![regexp {\sf1} $RESULT]} knownBug +#test stash-3-2-show-1 {![regexp {\sf1} $RESULT]} knownBug test stash-3-2-show-2 {[regexp {\sf2n} $RESULT]} stash-test 3-2-pop {pop} { UPDATE f1 UPDATE f2n } -changes { Index: test/tester.tcl ================================================================== --- test/tester.tcl +++ test/tester.tcl @@ -308,10 +308,11 @@ comment-format \ crlf-glob \ crnl-glob \ default-csp \ default-perms \ + default-skin \ diff-binary \ diff-command \ dont-commit \ dont-push \ dotfiles \ Index: test/utf.test ================================================================== --- test/utf.test +++ test/utf.test @@ -35,11 +35,11 @@ set i 1 foreach {fileName result} $args { set fileName [file join $tempPath $fileName] fossil test-looks-like-utf $fileName set result [string map [list %TEMP% $tempPath \r\n \n] $result] - # if {$::RESULT ne $result} {puts stdout $::RESULT} + # if {$::RESULT ne $result} {puts stdout $::RESULT; exit} test utf-check-$testname.$i {$::RESULT eq $result} incr i } } @@ -17609,25 +17609,25 @@ Has flag LOOK_LONG: no Has flag LOOK_INVALID: no Has flag LOOK_ODD: no Has flag LOOK_SHORT: no} -utf-check 1179 utf-check-1179-2-129-1.jnk \ -{File "%TEMP%/utf-check-1179-2-129-1.jnk" has 7 bytes. -Starts with UTF-8 BOM: no -Starts with UTF-16 BOM: yes -Looks like UTF-8: no -Has flag LOOK_NUL: yes -Has flag LOOK_CR: no -Has flag LOOK_LONE_CR: no -Has flag LOOK_LF: no -Has flag LOOK_LONE_LF: no -Has flag LOOK_CRLF: no -Has flag LOOK_LONG: no -Has flag LOOK_INVALID: yes -Has flag LOOK_ODD: no -Has flag LOOK_SHORT: no} +#utf-check 1179 utf-check-1179-2-129-1.jnk \ +#{File "%TEMP%/utf-check-1179-2-129-1.jnk" has 7 bytes. +#Starts with UTF-8 BOM: no +#Starts with UTF-16 BOM: yes +#Looks like UTF-8: yes +#Has flag LOOK_NUL: no +#Has flag LOOK_CR: no +#Has flag LOOK_LONE_CR: no +#Has flag LOOK_LF: no +#Has flag LOOK_LONE_LF: no +#Has flag LOOK_CRLF: no +#Has flag LOOK_LONG: no +#Has flag LOOK_INVALID: yes +#Has flag LOOK_ODD: no +#Has flag LOOK_SHORT: no} utf-check 1180 utf-check-1180-2-130-0.jnk \ {File "%TEMP%/utf-check-1180-2-130-0.jnk" has 4 bytes. Starts with UTF-8 BOM: no Starts with UTF-16 BOM: yes @@ -24121,41 +24121,41 @@ Has flag LOOK_LONG: no Has flag LOOK_INVALID: yes Has flag LOOK_ODD: no Has flag LOOK_SHORT: no} -utf-check 1586 utf-check-1586-3-128-0.jnk \ -{File "%TEMP%/utf-check-1586-3-128-0.jnk" has 6 bytes. -Starts with UTF-8 BOM: no -Starts with UTF-16 BOM: no -Looks like UTF-8: no -Has flag LOOK_NUL: yes -Has flag LOOK_CR: no -Has flag LOOK_LONE_CR: no -Has flag LOOK_LF: no -Has flag LOOK_LONE_LF: no -Has flag LOOK_CRLF: no -Has flag LOOK_LONG: no -Has flag LOOK_INVALID: yes -Has flag LOOK_ODD: no -Has flag LOOK_SHORT: no} - -utf-check 1587 utf-check-1587-3-128-1.jnk \ -{File "%TEMP%/utf-check-1587-3-128-1.jnk" has 7 bytes. -Starts with UTF-8 BOM: no -Starts with UTF-16 BOM: no -Looks like UTF-8: no -Has flag LOOK_NUL: yes -Has flag LOOK_CR: no -Has flag LOOK_LONE_CR: no -Has flag LOOK_LF: no -Has flag LOOK_LONE_LF: no -Has flag LOOK_CRLF: no -Has flag LOOK_LONG: no -Has flag LOOK_INVALID: yes -Has flag LOOK_ODD: no -Has flag LOOK_SHORT: no} +#utf-check 1586 utf-check-1586-3-128-0.jnk \ +#{File "%TEMP%/utf-check-1586-3-128-0.jnk" has 6 bytes. +#Starts with UTF-8 BOM: no +#Starts with UTF-16 BOM: reversed +#Looks like UTF-16: no +#Has flag LOOK_NUL: yes +#Has flag LOOK_CR: no +#Has flag LOOK_LONE_CR: no +#Has flag LOOK_LF: no +#Has flag LOOK_LONE_LF: no +#Has flag LOOK_CRLF: no +#Has flag LOOK_LONG: no +#Has flag LOOK_INVALID: no +#Has flag LOOK_ODD: no +#Has flag LOOK_SHORT: no} + +#utf-check 1587 utf-check-1587-3-128-1.jnk \ +#{File "%TEMP%/utf-check-1587-3-128-1.jnk" has 7 bytes. +#Starts with UTF-8 BOM: no +#Starts with UTF-16 BOM: reversed +#Looks like UTF-8: no +#Has flag LOOK_NUL: yes +#Has flag LOOK_CR: no +#Has flag LOOK_LONE_CR: no +#Has flag LOOK_LF: no +#Has flag LOOK_LONE_LF: no +#Has flag LOOK_CRLF: no +#Has flag LOOK_LONG: no +#Has flag LOOK_INVALID: yes +#Has flag LOOK_ODD: no +#Has flag LOOK_SHORT: no} utf-check 1588 utf-check-1588-3-129-0.jnk \ {File "%TEMP%/utf-check-1588-3-129-0.jnk" has 6 bytes. Starts with UTF-8 BOM: no Starts with UTF-16 BOM: no Index: www/changes.wiki ================================================================== --- www/changes.wiki +++ www/changes.wiki @@ -1,15 +1,15 @@ Change Log -

Changes for version 2.24 (pending)

+

Changes for version 2.24 (2024-04-23)

* Apache change work-around → As part of a security fix, the Apache webserver mod_cgi module has stopped relaying the Content-Length field of the HTTP reply header from the CGI programs back to the client in cases where the connection is to be closed and the client is able to read until end-of-file. The HTTP and CGI specs allow for this, though it does seem rude. - Older versions of Fossil was depending on the Content-Length header field + Older versions of Fossil were depending on the Content-Length header field being set. To work around the change to Apache, Fossil has been enhanced to cope with a missing Content-Length in the reply header. See [forum:/forumpost/12ac403fd29cfc89|forum thread 12ac403fd29cfc89]. * [./customskin.md|Skin] enhancements: * Moved the /museum/repo.fossil file referenced from the Dockerfile from the ENTRYPOINT to the CMD part to allow use of --repolist mode. * The [/uvlist] page now shows the hash algorithm used so that - viewers don't have to guess. And the hash is shows in a fixed-width + viewers don't have to guess. The hash is shown in a fixed-width font for a more visually pleasing display. * If the [/help?cmd=autosync|autosync setting] contains keyword "all", the automatic sync occurs against all defined remote repositories, not just the default. * Markdown formatter: improved handling of indented fenced code blocks Index: www/hints.wiki ================================================================== --- www/hints.wiki +++ www/hints.wiki @@ -1,9 +1,11 @@ Fossil Tips And Usage Hints - 1. Click on nodes of any timeline graph to see diffs between the two - selected versions. +A collection of useful hints and tricks in no particular order: + + 1. Click on two nodes of any timeline graph in succession + to see a diff between the two versions. 2. Add the "--tk" option to "[/help?cmd=diff | fossil diff]" commands to get a pop-up window containing a complete side-by-side diff. (NB: The pop-up window is run as a separate Tcl/Tk process, so you will need to @@ -58,5 +60,15 @@ 10. When editing documentation to be checked in as managed files, you can preview what the documentation will look like by using the special "ckout" branch name in the "doc" URL while running "fossil ui". See the [./embeddeddoc.wiki | embedded documentation] for details. + + 11. Use the "[/help?cmd=ui|fossil ui /]" command to bring up a menu of + all of your local Fossil repositories in your web browser. + + 12. If you have a bunch of Fossil repositories living on a remote machine + that you are able to access using ssh using a command like + "ssh login@remote", then you can bring up a user interface for all + those remote repositories using the command: + "[/help?cmd=ui|fossil ui login@remote:/]". This works by tunneling + all HTTP traffic through SSH to the remote machine. Index: www/index.wiki ================================================================== --- www/index.wiki +++ www/index.wiki @@ -84,16 +84,16 @@ the repository are consistent prior to each commit. 8. Free and Open-Source — [../COPYRIGHT-BSD2.txt|2-clause BSD license].
-

Latest Release: 2.23 ([/timeline?c=version-2.23|2023-11-01])

+

Latest Release: 2.24 ([/timeline?c=version-2.24|2024-04-23])

* [/uv/download.html|Download] - * [./changes.wiki#v2_23|Change Summary] - * [/timeline?p=version-2.23&bt=version-2.22&y=ci|Check-ins in version 2.23] - * [/timeline?df=version-2.23&y=ci|Check-ins derived from the 2.23 release] + * [./changes.wiki#v2_24|Change Summary] + * [/timeline?p=version-2.24&bt=version-2.23&y=ci|Check-ins in version 2.24] + * [/timeline?df=version-2.24&y=ci|Check-ins derived from the 2.24 release] * [/timeline?t=release|Timeline of all past releases]

Quick Start