Fossil SCM

Record fractional seconds for artifact times.

drh 2011-01-07 16:20 trunk
Commit 722d7cac97d5a67c225e97fa0c722d926044a528
+2 -4
--- src/attach.c
+++ src/attach.c
@@ -257,12 +257,11 @@
257257
n = strlen(zComment);
258258
while( n>0 && fossil_isspace(zComment[n-1]) ){ n--; }
259259
if( n>0 ){
260260
blob_appendf(&manifest, "C %F\n", zComment);
261261
}
262
- zDate = db_text(0, "SELECT datetime('now')");
263
- zDate[10] = 'T';
262
+ zDate = date_in_standard_format("now");
264263
blob_appendf(&manifest, "D %s\n", zDate);
265264
blob_appendf(&manifest, "U %F\n", g.zLogin ? g.zLogin : "nobody");
266265
md5sum_blob(&manifest, &cksum);
267266
blob_appendf(&manifest, "Z %b\n", &cksum);
268267
rid = content_put(&manifest, 0, 0, 0);
@@ -337,12 +336,11 @@
337336
if( zFile[i]=='/' || zFile[i]=='\\' ) n = i;
338337
}
339338
zFile += n;
340339
if( zFile[0]==0 ) zFile = "unknown";
341340
blob_appendf(&manifest, "A %F %F\n", zFile, zTarget);
342
- zDate = db_text(0, "SELECT datetime('now')");
343
- zDate[10] = 'T';
341
+ zDate = date_in_standard_format("now");
344342
blob_appendf(&manifest, "D %s\n", zDate);
345343
blob_appendf(&manifest, "U %F\n", g.zLogin ? g.zLogin : "nobody");
346344
md5sum_blob(&manifest, &cksum);
347345
blob_appendf(&manifest, "Z %b\n", &cksum);
348346
rid = content_put(&manifest, 0, 0, 0);
349347
--- src/attach.c
+++ src/attach.c
@@ -257,12 +257,11 @@
257 n = strlen(zComment);
258 while( n>0 && fossil_isspace(zComment[n-1]) ){ n--; }
259 if( n>0 ){
260 blob_appendf(&manifest, "C %F\n", zComment);
261 }
262 zDate = db_text(0, "SELECT datetime('now')");
263 zDate[10] = 'T';
264 blob_appendf(&manifest, "D %s\n", zDate);
265 blob_appendf(&manifest, "U %F\n", g.zLogin ? g.zLogin : "nobody");
266 md5sum_blob(&manifest, &cksum);
267 blob_appendf(&manifest, "Z %b\n", &cksum);
268 rid = content_put(&manifest, 0, 0, 0);
@@ -337,12 +336,11 @@
337 if( zFile[i]=='/' || zFile[i]=='\\' ) n = i;
338 }
339 zFile += n;
340 if( zFile[0]==0 ) zFile = "unknown";
341 blob_appendf(&manifest, "A %F %F\n", zFile, zTarget);
342 zDate = db_text(0, "SELECT datetime('now')");
343 zDate[10] = 'T';
344 blob_appendf(&manifest, "D %s\n", zDate);
345 blob_appendf(&manifest, "U %F\n", g.zLogin ? g.zLogin : "nobody");
346 md5sum_blob(&manifest, &cksum);
347 blob_appendf(&manifest, "Z %b\n", &cksum);
348 rid = content_put(&manifest, 0, 0, 0);
349
--- src/attach.c
+++ src/attach.c
@@ -257,12 +257,11 @@
257 n = strlen(zComment);
258 while( n>0 && fossil_isspace(zComment[n-1]) ){ n--; }
259 if( n>0 ){
260 blob_appendf(&manifest, "C %F\n", zComment);
261 }
262 zDate = date_in_standard_format("now");
 
263 blob_appendf(&manifest, "D %s\n", zDate);
264 blob_appendf(&manifest, "U %F\n", g.zLogin ? g.zLogin : "nobody");
265 md5sum_blob(&manifest, &cksum);
266 blob_appendf(&manifest, "Z %b\n", &cksum);
267 rid = content_put(&manifest, 0, 0, 0);
@@ -337,12 +336,11 @@
336 if( zFile[i]=='/' || zFile[i]=='\\' ) n = i;
337 }
338 zFile += n;
339 if( zFile[0]==0 ) zFile = "unknown";
340 blob_appendf(&manifest, "A %F %F\n", zFile, zTarget);
341 zDate = date_in_standard_format("now");
 
342 blob_appendf(&manifest, "D %s\n", zDate);
343 blob_appendf(&manifest, "U %F\n", g.zLogin ? g.zLogin : "nobody");
344 md5sum_blob(&manifest, &cksum);
345 blob_appendf(&manifest, "Z %b\n", &cksum);
346 rid = content_put(&manifest, 0, 0, 0);
347
--- src/branch.c
+++ src/branch.c
@@ -84,11 +84,10 @@
8484
blob_appendf(&branch, "B %s\n", pParent->zBaseline);
8585
}
8686
zComment = mprintf("Create new branch named \"%h\"", zBranch);
8787
blob_appendf(&branch, "C %F\n", zComment);
8888
zDate = date_in_standard_format(zDateOvrd ? zDateOvrd : "now");
89
- zDate[10] = 'T';
9089
blob_appendf(&branch, "D %s\n", zDate);
9190
9291
/* Copy all of the content from the parent into the branch */
9392
for(i=0; i<pParent->nFile; ++i){
9493
blob_appendf(&branch, "F %F", pParent->aFile[i].zName);
9594
--- src/branch.c
+++ src/branch.c
@@ -84,11 +84,10 @@
84 blob_appendf(&branch, "B %s\n", pParent->zBaseline);
85 }
86 zComment = mprintf("Create new branch named \"%h\"", zBranch);
87 blob_appendf(&branch, "C %F\n", zComment);
88 zDate = date_in_standard_format(zDateOvrd ? zDateOvrd : "now");
89 zDate[10] = 'T';
90 blob_appendf(&branch, "D %s\n", zDate);
91
92 /* Copy all of the content from the parent into the branch */
93 for(i=0; i<pParent->nFile; ++i){
94 blob_appendf(&branch, "F %F", pParent->aFile[i].zName);
95
--- src/branch.c
+++ src/branch.c
@@ -84,11 +84,10 @@
84 blob_appendf(&branch, "B %s\n", pParent->zBaseline);
85 }
86 zComment = mprintf("Create new branch named \"%h\"", zBranch);
87 blob_appendf(&branch, "C %F\n", zComment);
88 zDate = date_in_standard_format(zDateOvrd ? zDateOvrd : "now");
 
89 blob_appendf(&branch, "D %s\n", zDate);
90
91 /* Copy all of the content from the parent into the branch */
92 for(i=0; i<pParent->nFile; ++i){
93 blob_appendf(&branch, "F %F", pParent->aFile[i].zName);
94
+7 -6
--- src/checkin.c
+++ src/checkin.c
@@ -562,18 +562,19 @@
562562
** zDate should be a valid date string. Convert this string into the
563563
** format YYYY-MM-DDTHH:MM:SS. If the string is not a valid date,
564564
** print a fatal error and quit.
565565
*/
566566
char *date_in_standard_format(const char *zInputDate){
567
- char *zDate = db_text(0, "SELECT datetime(%Q)", zInputDate);
567
+ char *zDate;
568
+ zDate = db_text(0, "SELECT strftime('%%Y-%%m-%%dT%%H:%%M:%%f',%Q)",
569
+ zInputDate);
568570
if( zDate[0]==0 ){
569
- fossil_fatal("unrecognized date format (%s): use \"YYYY-MM-DD HH:MM:SS\"",
570
- zInputDate);
571
+ fossil_fatal(
572
+ "unrecognized date format (%s): use \"YYYY-MM-DD HH:MM:SS.SSS\"",
573
+ zInputDate
574
+ );
571575
}
572
- assert( strlen(zDate)==19 );
573
- assert( zDate[10]==' ' );
574
- zDate[10] = 'T';
575576
return zDate;
576577
}
577578
578579
/*
579580
** Create a manifest.
580581
--- src/checkin.c
+++ src/checkin.c
@@ -562,18 +562,19 @@
562 ** zDate should be a valid date string. Convert this string into the
563 ** format YYYY-MM-DDTHH:MM:SS. If the string is not a valid date,
564 ** print a fatal error and quit.
565 */
566 char *date_in_standard_format(const char *zInputDate){
567 char *zDate = db_text(0, "SELECT datetime(%Q)", zInputDate);
 
 
568 if( zDate[0]==0 ){
569 fossil_fatal("unrecognized date format (%s): use \"YYYY-MM-DD HH:MM:SS\"",
570 zInputDate);
 
 
571 }
572 assert( strlen(zDate)==19 );
573 assert( zDate[10]==' ' );
574 zDate[10] = 'T';
575 return zDate;
576 }
577
578 /*
579 ** Create a manifest.
580
--- src/checkin.c
+++ src/checkin.c
@@ -562,18 +562,19 @@
562 ** zDate should be a valid date string. Convert this string into the
563 ** format YYYY-MM-DDTHH:MM:SS. If the string is not a valid date,
564 ** print a fatal error and quit.
565 */
566 char *date_in_standard_format(const char *zInputDate){
567 char *zDate;
568 zDate = db_text(0, "SELECT strftime('%%Y-%%m-%%dT%%H:%%M:%%f',%Q)",
569 zInputDate);
570 if( zDate[0]==0 ){
571 fossil_fatal(
572 "unrecognized date format (%s): use \"YYYY-MM-DD HH:MM:SS.SSS\"",
573 zInputDate
574 );
575 }
 
 
 
576 return zDate;
577 }
578
579 /*
580 ** Create a manifest.
581
+1 -2
--- src/event.c
+++ src/event.c
@@ -284,12 +284,11 @@
284284
int nrid;
285285
blob_zero(&event);
286286
db_begin_transaction();
287287
login_verify_csrf_secret();
288288
blob_appendf(&event, "C %F\n", zComment);
289
- zDate = db_text(0, "SELECT datetime('now')");
290
- zDate[10] = 'T';
289
+ zDate = date_in_standard_format("now");
291290
blob_appendf(&event, "D %s\n", zDate);
292291
free(zDate);
293292
zETime[10] = 'T';
294293
blob_appendf(&event, "E %s %s\n", zETime, zEventId);
295294
zETime[10] = ' ';
296295
--- src/event.c
+++ src/event.c
@@ -284,12 +284,11 @@
284 int nrid;
285 blob_zero(&event);
286 db_begin_transaction();
287 login_verify_csrf_secret();
288 blob_appendf(&event, "C %F\n", zComment);
289 zDate = db_text(0, "SELECT datetime('now')");
290 zDate[10] = 'T';
291 blob_appendf(&event, "D %s\n", zDate);
292 free(zDate);
293 zETime[10] = 'T';
294 blob_appendf(&event, "E %s %s\n", zETime, zEventId);
295 zETime[10] = ' ';
296
--- src/event.c
+++ src/event.c
@@ -284,12 +284,11 @@
284 int nrid;
285 blob_zero(&event);
286 db_begin_transaction();
287 login_verify_csrf_secret();
288 blob_appendf(&event, "C %F\n", zComment);
289 zDate = date_in_standard_format("now");
 
290 blob_appendf(&event, "D %s\n", zDate);
291 free(zDate);
292 zETime[10] = 'T';
293 blob_appendf(&event, "E %s %s\n", zETime, zEventId);
294 zETime[10] = ' ';
295
+1 -2
--- src/info.c
+++ src/info.c
@@ -1466,12 +1466,11 @@
14661466
char *zNow;
14671467
int nChng = 0;
14681468
14691469
login_verify_csrf_secret();
14701470
blob_zero(&ctrl);
1471
- zNow = db_text(0, "SELECT datetime('now')");
1472
- zNow[10] = 'T';
1471
+ zNow = date_in_standard_format("now");
14731472
blob_appendf(&ctrl, "D %s\n", zNow);
14741473
db_multi_exec("CREATE TEMP TABLE newtags(tag UNIQUE, prefix, value)");
14751474
if( zNewColor[0]
14761475
&& (fPropagateColor!=fNewPropagateColor || strcmp(zColor,zNewColor)!=0)
14771476
){
14781477
--- src/info.c
+++ src/info.c
@@ -1466,12 +1466,11 @@
1466 char *zNow;
1467 int nChng = 0;
1468
1469 login_verify_csrf_secret();
1470 blob_zero(&ctrl);
1471 zNow = db_text(0, "SELECT datetime('now')");
1472 zNow[10] = 'T';
1473 blob_appendf(&ctrl, "D %s\n", zNow);
1474 db_multi_exec("CREATE TEMP TABLE newtags(tag UNIQUE, prefix, value)");
1475 if( zNewColor[0]
1476 && (fPropagateColor!=fNewPropagateColor || strcmp(zColor,zNewColor)!=0)
1477 ){
1478
--- src/info.c
+++ src/info.c
@@ -1466,12 +1466,11 @@
1466 char *zNow;
1467 int nChng = 0;
1468
1469 login_verify_csrf_secret();
1470 blob_zero(&ctrl);
1471 zNow = date_in_standard_format("now");
 
1472 blob_appendf(&ctrl, "D %s\n", zNow);
1473 db_multi_exec("CREATE TEMP TABLE newtags(tag UNIQUE, prefix, value)");
1474 if( zNewColor[0]
1475 && (fPropagateColor!=fNewPropagateColor || strcmp(zColor,zNewColor)!=0)
1476 ){
1477
-1
--- src/tag.c
+++ src/tag.c
@@ -294,11 +294,10 @@
294294
zTagname
295295
);
296296
}
297297
#endif
298298
zDate = date_in_standard_format(zDateOvrd ? zDateOvrd : "now");
299
- zDate[10] = 'T';
300299
blob_appendf(&ctrl, "D %s\n", zDate);
301300
blob_appendf(&ctrl, "T %c%s%F %b",
302301
zTagtype[tagtype], zPrefix, zTagname, &uuid);
303302
if( tagtype>0 && zValue && zValue[0] ){
304303
blob_appendf(&ctrl, " %F\n", zValue);
305304
--- src/tag.c
+++ src/tag.c
@@ -294,11 +294,10 @@
294 zTagname
295 );
296 }
297 #endif
298 zDate = date_in_standard_format(zDateOvrd ? zDateOvrd : "now");
299 zDate[10] = 'T';
300 blob_appendf(&ctrl, "D %s\n", zDate);
301 blob_appendf(&ctrl, "T %c%s%F %b",
302 zTagtype[tagtype], zPrefix, zTagname, &uuid);
303 if( tagtype>0 && zValue && zValue[0] ){
304 blob_appendf(&ctrl, " %F\n", zValue);
305
--- src/tag.c
+++ src/tag.c
@@ -294,11 +294,10 @@
294 zTagname
295 );
296 }
297 #endif
298 zDate = date_in_standard_format(zDateOvrd ? zDateOvrd : "now");
 
299 blob_appendf(&ctrl, "D %s\n", zDate);
300 blob_appendf(&ctrl, "T %c%s%F %b",
301 zTagtype[tagtype], zPrefix, zTagname, &uuid);
302 if( tagtype>0 && zValue && zValue[0] ){
303 blob_appendf(&ctrl, " %F\n", zValue);
304
+2 -4
--- src/tkt.c
+++ src/tkt.c
@@ -429,12 +429,11 @@
429429
Blob tktchng, cksum;
430430
431431
login_verify_csrf_secret();
432432
zUuid = (const char *)pUuid;
433433
blob_zero(&tktchng);
434
- zDate = db_text(0, "SELECT datetime('now')");
435
- zDate[10] = 'T';
434
+ zDate = date_in_standard_format("now");
436435
blob_appendf(&tktchng, "D %s\n", zDate);
437436
free(zDate);
438437
for(i=0; i<nField; i++){
439438
if( azAppend[i] ){
440439
blob_appendf(&tktchng, "J +%s %z\n", azField[i],
@@ -1029,12 +1028,11 @@
10291028
/* now add the needed artifacts to the repository */
10301029
blob_zero(&tktchng);
10311030
{ /* add the time to the ticket manifest */
10321031
char *zDate;
10331032
1034
- zDate = db_text(0, "SELECT datetime('now')");
1035
- zDate[10] = 'T';
1033
+ zDate = date_in_standard_format("now");
10361034
blob_appendf(&tktchng, "D %s\n", zDate);
10371035
free(zDate);
10381036
}
10391037
/* append defined elements */
10401038
for(i=0; i<nField; i++){
10411039
--- src/tkt.c
+++ src/tkt.c
@@ -429,12 +429,11 @@
429 Blob tktchng, cksum;
430
431 login_verify_csrf_secret();
432 zUuid = (const char *)pUuid;
433 blob_zero(&tktchng);
434 zDate = db_text(0, "SELECT datetime('now')");
435 zDate[10] = 'T';
436 blob_appendf(&tktchng, "D %s\n", zDate);
437 free(zDate);
438 for(i=0; i<nField; i++){
439 if( azAppend[i] ){
440 blob_appendf(&tktchng, "J +%s %z\n", azField[i],
@@ -1029,12 +1028,11 @@
1029 /* now add the needed artifacts to the repository */
1030 blob_zero(&tktchng);
1031 { /* add the time to the ticket manifest */
1032 char *zDate;
1033
1034 zDate = db_text(0, "SELECT datetime('now')");
1035 zDate[10] = 'T';
1036 blob_appendf(&tktchng, "D %s\n", zDate);
1037 free(zDate);
1038 }
1039 /* append defined elements */
1040 for(i=0; i<nField; i++){
1041
--- src/tkt.c
+++ src/tkt.c
@@ -429,12 +429,11 @@
429 Blob tktchng, cksum;
430
431 login_verify_csrf_secret();
432 zUuid = (const char *)pUuid;
433 blob_zero(&tktchng);
434 zDate = date_in_standard_format("now");
 
435 blob_appendf(&tktchng, "D %s\n", zDate);
436 free(zDate);
437 for(i=0; i<nField; i++){
438 if( azAppend[i] ){
439 blob_appendf(&tktchng, "J +%s %z\n", azField[i],
@@ -1029,12 +1028,11 @@
1028 /* now add the needed artifacts to the repository */
1029 blob_zero(&tktchng);
1030 { /* add the time to the ticket manifest */
1031 char *zDate;
1032
1033 zDate = date_in_standard_format("now");
 
1034 blob_appendf(&tktchng, "D %s\n", zDate);
1035 free(zDate);
1036 }
1037 /* append defined elements */
1038 for(i=0; i<nField; i++){
1039
+3 -6
--- src/wiki.c
+++ src/wiki.c
@@ -305,12 +305,11 @@
305305
db_begin_transaction();
306306
if( isSandbox ){
307307
db_set("sandbox",zBody,0);
308308
}else{
309309
login_verify_csrf_secret();
310
- zDate = db_text(0, "SELECT datetime('now')");
311
- zDate[10] = 'T';
310
+ zDate = date_in_standard_format("now");
312311
blob_appendf(&wiki, "D %s\n", zDate);
313312
free(zDate);
314313
blob_appendf(&wiki, "L %F\n", zPageName);
315314
if( rid ){
316315
char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
@@ -478,12 +477,11 @@
478477
blob_append(&body, pWiki->zWiki, -1);
479478
manifest_destroy(pWiki);
480479
}
481480
blob_zero(&wiki);
482481
db_begin_transaction();
483
- zDate = db_text(0, "SELECT datetime('now')");
484
- zDate[10] = 'T';
482
+ zDate = date_in_standard_format("now");
485483
blob_appendf(&wiki, "D %s\n", zDate);
486484
blob_appendf(&wiki, "L %F\n", zPageName);
487485
if( rid ){
488486
char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
489487
blob_appendf(&wiki, "P %s\n", zUuid);
@@ -800,12 +798,11 @@
800798
if( rid!=0 && isNew ){
801799
fossil_fatal("wiki page %s already exists", zPageName);
802800
}
803801
804802
blob_zero(&wiki);
805
- zDate = db_text(0, "SELECT datetime('now')");
806
- zDate[10] = 'T';
803
+ zDate = date_in_standard_format("now");
807804
blob_appendf(&wiki, "D %s\n", zDate);
808805
free(zDate);
809806
blob_appendf(&wiki, "L %F\n", zPageName );
810807
if( rid ){
811808
zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
812809
--- src/wiki.c
+++ src/wiki.c
@@ -305,12 +305,11 @@
305 db_begin_transaction();
306 if( isSandbox ){
307 db_set("sandbox",zBody,0);
308 }else{
309 login_verify_csrf_secret();
310 zDate = db_text(0, "SELECT datetime('now')");
311 zDate[10] = 'T';
312 blob_appendf(&wiki, "D %s\n", zDate);
313 free(zDate);
314 blob_appendf(&wiki, "L %F\n", zPageName);
315 if( rid ){
316 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
@@ -478,12 +477,11 @@
478 blob_append(&body, pWiki->zWiki, -1);
479 manifest_destroy(pWiki);
480 }
481 blob_zero(&wiki);
482 db_begin_transaction();
483 zDate = db_text(0, "SELECT datetime('now')");
484 zDate[10] = 'T';
485 blob_appendf(&wiki, "D %s\n", zDate);
486 blob_appendf(&wiki, "L %F\n", zPageName);
487 if( rid ){
488 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
489 blob_appendf(&wiki, "P %s\n", zUuid);
@@ -800,12 +798,11 @@
800 if( rid!=0 && isNew ){
801 fossil_fatal("wiki page %s already exists", zPageName);
802 }
803
804 blob_zero(&wiki);
805 zDate = db_text(0, "SELECT datetime('now')");
806 zDate[10] = 'T';
807 blob_appendf(&wiki, "D %s\n", zDate);
808 free(zDate);
809 blob_appendf(&wiki, "L %F\n", zPageName );
810 if( rid ){
811 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
812
--- src/wiki.c
+++ src/wiki.c
@@ -305,12 +305,11 @@
305 db_begin_transaction();
306 if( isSandbox ){
307 db_set("sandbox",zBody,0);
308 }else{
309 login_verify_csrf_secret();
310 zDate = date_in_standard_format("now");
 
311 blob_appendf(&wiki, "D %s\n", zDate);
312 free(zDate);
313 blob_appendf(&wiki, "L %F\n", zPageName);
314 if( rid ){
315 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
@@ -478,12 +477,11 @@
477 blob_append(&body, pWiki->zWiki, -1);
478 manifest_destroy(pWiki);
479 }
480 blob_zero(&wiki);
481 db_begin_transaction();
482 zDate = date_in_standard_format("now");
 
483 blob_appendf(&wiki, "D %s\n", zDate);
484 blob_appendf(&wiki, "L %F\n", zPageName);
485 if( rid ){
486 char *zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
487 blob_appendf(&wiki, "P %s\n", zUuid);
@@ -800,12 +798,11 @@
798 if( rid!=0 && isNew ){
799 fossil_fatal("wiki page %s already exists", zPageName);
800 }
801
802 blob_zero(&wiki);
803 zDate = date_in_standard_format("now");
 
804 blob_appendf(&wiki, "D %s\n", zDate);
805 free(zDate);
806 blob_appendf(&wiki, "L %F\n", zPageName );
807 if( rid ){
808 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
809
--- www/fileformat.wiki
+++ www/fileformat.wiki
@@ -128,14 +128,15 @@
128128
in the comment.
129129
130130
A manifest must have exactly one D-card. The sole argument to
131131
the D-card is a date-time stamp in the ISO8601 format. The
132132
date and time should be in coordinated universal time (UTC).
133
-The format is:
133
+The format one of:
134134
135135
<blockquote>
136
-<i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i>
136
+<i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i><br>
137
+<i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i><b>.</b><i>SSS</i>
137138
</blockquote>
138139
139140
A manifest has zero or more F-cards. Each F-card identifies a file
140141
that is part of the check-in. There are one, two, three, or four arguments.
141142
The first argument
142143
--- www/fileformat.wiki
+++ www/fileformat.wiki
@@ -128,14 +128,15 @@
128 in the comment.
129
130 A manifest must have exactly one D-card. The sole argument to
131 the D-card is a date-time stamp in the ISO8601 format. The
132 date and time should be in coordinated universal time (UTC).
133 The format is:
134
135 <blockquote>
136 <i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i>
 
137 </blockquote>
138
139 A manifest has zero or more F-cards. Each F-card identifies a file
140 that is part of the check-in. There are one, two, three, or four arguments.
141 The first argument
142
--- www/fileformat.wiki
+++ www/fileformat.wiki
@@ -128,14 +128,15 @@
128 in the comment.
129
130 A manifest must have exactly one D-card. The sole argument to
131 the D-card is a date-time stamp in the ISO8601 format. The
132 date and time should be in coordinated universal time (UTC).
133 The format one of:
134
135 <blockquote>
136 <i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i><br>
137 <i>YYYY</i><b>-</b><i>MM</i><b>-</b><i>DD</i><b>T</b><i>HH</i><b>:</b><i>MM</i><b>:</b><i>SS</i><b>.</b><i>SSS</i>
138 </blockquote>
139
140 A manifest has zero or more F-cards. Each F-card identifies a file
141 that is part of the check-in. There are one, two, three, or four arguments.
142 The first argument
143

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button