Fossil Wrapper

Check-in [1626c88f0a]
Login

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

Overview
Comment:`timeline' output is now strictly one line per checkin, even if `-showfiles' is specified.
Timelines: family | ancestors | descendants | both | dresden
Files: files | file ages | folders
SHA1: 1626c88f0afa1b7d6731ccf941924154b1f88da9
User & Date: j 2013-07-24 16:43:41
Context
2013-07-24
17:04
undo recently introduced bug and adjusted corrsponding comments a bit. check-in: 7e0ed090e2 user: j tags: dresden
16:43
`timeline' output is now strictly one line per checkin, even if `-showfiles' is specified. check-in: 1626c88f0a user: j tags: dresden
14:27
redefinition of some aliases. check-in: 7b6a25c3b1 user: j tags: dresden
Changes
Hide Diffs Unified Diffs Show Whitespace Changes Patch

Changes to fsl.

386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
...
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
...
425
426
427
428
429
430
431

432
433
434
435
436
437
438
439
440
441
442
443
444
...
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
            set record "[string trimright ${record}]${line}"

            incr i
            set line [lindex $records $i]
            set line [string trimright $line]
         }
      }
      set record "[string trimright $record] \n"

      # temporary patch (better strategy needed, probably). eliminate
      # a blank in the used `regsub' pattern, which is assumed(!) to be caused by
      # `fossil' treating `-' as word boundary (there might be other instances,
      # actually, in the commit message itself):
      regsub -all {([[:alnum:]])- ([[:alnum:]])} $record \\1-\\2 record

................................................................................
}

proc reformTimeline {records revnums} {
# --------------------------------------------------------
# expected input: list of timeline entries as provided by
# `unwrapTimeline', i.e. either "date lines" or "commit"
# lines containing the whole commit including the commit
# message.
#
# output: a list of newline terminated lines where the user/tags
# information is appended to the line containing the time and SHA1 
# hash and the commit message is put on the following line(s) using an 
# indent string `indent' and a line length `maxlen'.
# --------------------------------------------------------

................................................................................
   set out {}
   set buf ""
   set usertag ""
   set rgxdate {^=== [0-9-]+ ===$}
   set rgxtime {^\d\d:\d\d:\d\d}
   set rgxrev {\[([a-f\d]{10})([^\]]*)\]}
   set rgxuser {\(user: .*\)}


   set maxrev [dict size $revnums]

   foreach record $records {
      # temporarily get rid of the record/line terminating newline:
      set record "[string trimright $record]"

      if {[regexp $rgxdate $record]} {
         # the `date' information is extracted and then prepended to the suitable checkins
         set date [regsub {(=== )(.*)( ===)} $record {\2}]
      } elseif {[regexp $rgxrev $record]} {
         # this line contains the checkin message:
         regexp $rgxtime $record time
................................................................................
               set line $indent$word
               set len [string length $line]
               if {$wrdcnt < $wrdnum} {
                  set isAppended 1
               } else {set isAppended 0} ;#since the loop stops _now_...
            }
         }
         if {$isAppended == 0} {lappend out $line\n}
      } else {
         # should be a file status line as delivered by `-showfiles' (since
         # it is neither matching `rgxdate' nor `rgxrev') and is passed 
         # through as is.
         lappend out \n$record
      }
   }
   return [lappend out \n]
}

proc computeRevnums {params} {
#-----------------------------------------------------------------------







|







 







|







 







>




<
<







 







|


|
|
|







386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
...
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
...
425
426
427
428
429
430
431
432
433
434
435
436


437
438
439
440
441
442
443
...
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
            set record "[string trimright ${record}]${line}"

            incr i
            set line [lindex $records $i]
            set line [string trimright $line]
         }
      }
      set record "[string trimright $record]"

      # temporary patch (better strategy needed, probably). eliminate
      # a blank in the used `regsub' pattern, which is assumed(!) to be caused by
      # `fossil' treating `-' as word boundary (there might be other instances,
      # actually, in the commit message itself):
      regsub -all {([[:alnum:]])- ([[:alnum:]])} $record \\1-\\2 record

................................................................................
}

proc reformTimeline {records revnums} {
# --------------------------------------------------------
# expected input: list of timeline entries as provided by
# `unwrapTimeline', i.e. either "date lines" or "commit"
# lines containing the whole commit including the commit
# message possibly followed by file status lines (if `-showfiles' is used).
#
# output: a list of newline terminated lines where the user/tags
# information is appended to the line containing the time and SHA1 
# hash and the commit message is put on the following line(s) using an 
# indent string `indent' and a line length `maxlen'.
# --------------------------------------------------------

................................................................................
   set out {}
   set buf ""
   set usertag ""
   set rgxdate {^=== [0-9-]+ ===$}
   set rgxtime {^\d\d:\d\d:\d\d}
   set rgxrev {\[([a-f\d]{10})([^\]]*)\]}
   set rgxuser {\(user: .*\)}
   #set rgxstat {  ( (MERGED_WITH|ADDED|EDITED|DELETED|MISSING) [[:alnum:]]+)}

   set maxrev [dict size $revnums]

   foreach record $records {



      if {[regexp $rgxdate $record]} {
         # the `date' information is extracted and then prepended to the suitable checkins
         set date [regsub {(=== )(.*)( ===)} $record {\2}]
      } elseif {[regexp $rgxrev $record]} {
         # this line contains the checkin message:
         regexp $rgxtime $record time
................................................................................
               set line $indent$word
               set len [string length $line]
               if {$wrdcnt < $wrdnum} {
                  set isAppended 1
               } else {set isAppended 0} ;#since the loop stops _now_...
            }
         }
         if {$isAppended == 0} {lappend out $line}
      } else {
         # should be a file status line as delivered by `-showfiles' (since
         # it is neither matching `rgxdate' nor `rgxrev'). append after
         # stripping white space and separate by appending a full stop.
         lappend out " [string trim $record]."
      }
   }
   return [lappend out \n]
}

proc computeRevnums {params} {
#-----------------------------------------------------------------------