Fossil SCM

Recognize the --from-ckout and --to-ckout options to the "fossil diff" command.

drh 2024-12-14 12:00 diff-two-ckouts
Commit 28197b28c2260c1c5edf536315bf575329decf8b756e60aaba32f1d079a07e80
+6
--- src/diff.c
+++ src/diff.c
@@ -51,10 +51,16 @@
5151
#define DIFF_TCL 0x00080000 /* For the --tk option */
5252
#define DIFF_INCBINARY 0x00100000 /* The --diff-binary option */
5353
#define DIFF_SHOW_VERS 0x00200000 /* Show compared versions */
5454
#define DIFF_DARKMODE 0x00400000 /* Use dark mode for HTML */
5555
#define DIFF_BY_TOKEN 0x01000000 /* Split on tokens, not lines */
56
+
57
+/* These bits influence the interpretation of the zFrom and zTo parameters
58
+** to the diff_two_versions() routine.
59
+*/
60
+#define DIFF_FROM_CKOUT 0x02000000 /* zFrom is a checkout pathname */
61
+#define DIFF_TO_CKOUT 0x04000000 /* zTo is a checkout pathname */
5662
5763
/*
5864
** Per file information that may influence output.
5965
*/
6066
#define DIFF_FILE_ADDED 0x40000000 /* Added or rename destination */
6167
--- src/diff.c
+++ src/diff.c
@@ -51,10 +51,16 @@
51 #define DIFF_TCL 0x00080000 /* For the --tk option */
52 #define DIFF_INCBINARY 0x00100000 /* The --diff-binary option */
53 #define DIFF_SHOW_VERS 0x00200000 /* Show compared versions */
54 #define DIFF_DARKMODE 0x00400000 /* Use dark mode for HTML */
55 #define DIFF_BY_TOKEN 0x01000000 /* Split on tokens, not lines */
 
 
 
 
 
 
56
57 /*
58 ** Per file information that may influence output.
59 */
60 #define DIFF_FILE_ADDED 0x40000000 /* Added or rename destination */
61
--- src/diff.c
+++ src/diff.c
@@ -51,10 +51,16 @@
51 #define DIFF_TCL 0x00080000 /* For the --tk option */
52 #define DIFF_INCBINARY 0x00100000 /* The --diff-binary option */
53 #define DIFF_SHOW_VERS 0x00200000 /* Show compared versions */
54 #define DIFF_DARKMODE 0x00400000 /* Use dark mode for HTML */
55 #define DIFF_BY_TOKEN 0x01000000 /* Split on tokens, not lines */
56
57 /* These bits influence the interpretation of the zFrom and zTo parameters
58 ** to the diff_two_versions() routine.
59 */
60 #define DIFF_FROM_CKOUT 0x02000000 /* zFrom is a checkout pathname */
61 #define DIFF_TO_CKOUT 0x04000000 /* zTo is a checkout pathname */
62
63 /*
64 ** Per file information that may influence output.
65 */
66 #define DIFF_FILE_ADDED 0x40000000 /* Added or rename destination */
67
+35 -4
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -1043,16 +1043,26 @@
10431043
){
10441044
Manifest *pFrom, *pTo;
10451045
ManifestFile *pFromFile, *pToFile;
10461046
int asNewFlag = (pCfg->diffFlags & (DIFF_VERBOSE|DIFF_NUMSTAT))!=0 ? 1 : 0;
10471047
1048
- pFrom = manifest_get_by_name(zFrom, 0);
1048
+ if( pCfg->diffFlags & DIFF_FROM_CKOUT ){
1049
+ fossil_fatal("The --from-ckout option is not yet implemented");
1050
+ }else{
1051
+ pFrom = manifest_get_by_name(zFrom, 0);
1052
+ }
10491053
manifest_file_rewind(pFrom);
10501054
pFromFile = manifest_file_next(pFrom,0);
1051
- pTo = manifest_get_by_name(zTo, 0);
1055
+
1056
+ if( pCfg->diffFlags & DIFF_TO_CKOUT ){
1057
+ fossil_fatal("The --to-ckout option is not yet implemented");
1058
+ }else{
1059
+ pTo = manifest_get_by_name(zTo, 0);
1060
+ }
10521061
manifest_file_rewind(pTo);
10531062
pToFile = manifest_file_next(pTo,0);
1063
+
10541064
if( (pCfg->diffFlags & DIFF_SHOW_VERS)!=0 ){
10551065
diff_print_versions(zFrom, zTo, pCfg);
10561066
}
10571067
while( pFromFile || pToFile ){
10581068
int cmp;
@@ -1274,10 +1284,11 @@
12741284
** --dark Use dark mode for the Tcl/Tk-based GUI and HTML
12751285
** --diff-binary BOOL Include binary files with external commands
12761286
** --exec-abs-paths Force absolute path names on external commands
12771287
** --exec-rel-paths Force relative path names on external commands
12781288
** -r|--from VERSION Select VERSION as source for the diff
1289
+** --from-ckout PATH Path to foreign checkout to use as source
12791290
** -w|--ignore-all-space Ignore white space when comparing lines
12801291
** -i|--internal Use internal diff logic
12811292
** --invert Invert the diff
12821293
** --json Output formatted as JSON
12831294
** -n|--linenum Show line numbers
@@ -1287,10 +1298,11 @@
12871298
** --strip-trailing-cr Strip trailing CR
12881299
** --tcl Tcl-formatted output used internally by --tk
12891300
** --tclsh PATH Tcl/Tk shell used for --tk (default: "tclsh")
12901301
** --tk Launch a Tcl/Tk GUI for display
12911302
** --to VERSION Select VERSION as target for the diff
1303
+** --to-ckout PATH Path to foreign checkout to use as target
12921304
** --undo Diff against the "undo" buffer
12931305
** --unified Unified diff
12941306
** -v|--verbose Output complete text of added or deleted files
12951307
** -h|--versions Show compared versions in the diff header
12961308
** --webpage Format output as a stand-alone HTML webpage
@@ -1299,10 +1311,12 @@
12991311
*/
13001312
void diff_cmd(void){
13011313
int isGDiff; /* True for gdiff. False for normal diff */
13021314
const char *zFrom; /* Source version number */
13031315
const char *zTo; /* Target version number */
1316
+ const char *zFromCkout; /* Foreign check-out for the from side */
1317
+ const char *zToCkout; /* Foreign check-out for the to side */
13041318
const char *zCheckin; /* Check-in version number */
13051319
const char *zBranch; /* Branch to diff */
13061320
int againstUndo = 0; /* Diff against files in the undo buffer */
13071321
FileDirList *pFileDir = 0; /* Restrict the diff to these files */
13081322
DiffConfig DCfg; /* Diff configuration object */
@@ -1310,18 +1324,36 @@
13101324
if( find_option("tk",0,0)!=0 || has_option("tclsh") ){
13111325
diff_tk("diff", 2);
13121326
return;
13131327
}
13141328
isGDiff = g.argv[1][0]=='g';
1329
+ diff_options(&DCfg, isGDiff, 0);
13151330
zFrom = find_option("from", "r", 1);
13161331
zTo = find_option("to", 0, 1);
1332
+ zFromCkout = find_option("from-ckout", 0, 1);
1333
+ zToCkout = find_option("to-ckout", 0, 1);
13171334
zCheckin = find_option("checkin", "ci", 1);
13181335
zBranch = find_option("branch", 0, 1);
13191336
againstUndo = find_option("undo",0,0)!=0;
1337
+ if( zFromCkout ){
1338
+ if( zFrom || zCheckin || zBranch || againstUndo ){
1339
+ fossil_fatal("cannot use --from-ckout with --from, --checkin, --branch,"
1340
+ " or --undo");
1341
+ }
1342
+ DCfg.diffFlags |= DIFF_FROM_CKOUT;
1343
+ zFrom = zFromCkout;
1344
+ }
1345
+ if( zToCkout ){
1346
+ if( zTo || zBranch || againstUndo ){
1347
+ fossil_fatal("cannot use --from-ckout with --to, --branch or --undo");
1348
+ }
1349
+ DCfg.diffFlags |= DIFF_TO_CKOUT;
1350
+ zTo = zToCkout;
1351
+ }
13201352
if( againstUndo && ( zFrom!=0 || zTo!=0 || zCheckin!=0 || zBranch!=0) ){
13211353
fossil_fatal("cannot use --undo together with --from, --to, --checkin,"
1322
- " or --branch");
1354
+ " --branch, --from-ckout, or --to-ckout");
13231355
}
13241356
if( zBranch ){
13251357
if( zTo || zFrom || zCheckin ){
13261358
fossil_fatal("cannot use --from, --to, or --checkin with --branch");
13271359
}
@@ -1329,11 +1361,10 @@
13291361
zFrom = mprintf("root:%s", zBranch);
13301362
}
13311363
if( zCheckin!=0 && ( zFrom!=0 || zTo!=0 ) ){
13321364
fossil_fatal("cannot use --checkin together with --from or --to");
13331365
}
1334
- diff_options(&DCfg, isGDiff, 0);
13351366
determine_exec_relative_option(1);
13361367
if( 0==zCheckin ){
13371368
if( zTo==0 || againstUndo ){
13381369
db_must_be_within_tree();
13391370
}else if( zFrom==0 ){
13401371
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -1043,16 +1043,26 @@
1043 ){
1044 Manifest *pFrom, *pTo;
1045 ManifestFile *pFromFile, *pToFile;
1046 int asNewFlag = (pCfg->diffFlags & (DIFF_VERBOSE|DIFF_NUMSTAT))!=0 ? 1 : 0;
1047
1048 pFrom = manifest_get_by_name(zFrom, 0);
 
 
 
 
1049 manifest_file_rewind(pFrom);
1050 pFromFile = manifest_file_next(pFrom,0);
1051 pTo = manifest_get_by_name(zTo, 0);
 
 
 
 
 
1052 manifest_file_rewind(pTo);
1053 pToFile = manifest_file_next(pTo,0);
 
1054 if( (pCfg->diffFlags & DIFF_SHOW_VERS)!=0 ){
1055 diff_print_versions(zFrom, zTo, pCfg);
1056 }
1057 while( pFromFile || pToFile ){
1058 int cmp;
@@ -1274,10 +1284,11 @@
1274 ** --dark Use dark mode for the Tcl/Tk-based GUI and HTML
1275 ** --diff-binary BOOL Include binary files with external commands
1276 ** --exec-abs-paths Force absolute path names on external commands
1277 ** --exec-rel-paths Force relative path names on external commands
1278 ** -r|--from VERSION Select VERSION as source for the diff
 
1279 ** -w|--ignore-all-space Ignore white space when comparing lines
1280 ** -i|--internal Use internal diff logic
1281 ** --invert Invert the diff
1282 ** --json Output formatted as JSON
1283 ** -n|--linenum Show line numbers
@@ -1287,10 +1298,11 @@
1287 ** --strip-trailing-cr Strip trailing CR
1288 ** --tcl Tcl-formatted output used internally by --tk
1289 ** --tclsh PATH Tcl/Tk shell used for --tk (default: "tclsh")
1290 ** --tk Launch a Tcl/Tk GUI for display
1291 ** --to VERSION Select VERSION as target for the diff
 
1292 ** --undo Diff against the "undo" buffer
1293 ** --unified Unified diff
1294 ** -v|--verbose Output complete text of added or deleted files
1295 ** -h|--versions Show compared versions in the diff header
1296 ** --webpage Format output as a stand-alone HTML webpage
@@ -1299,10 +1311,12 @@
1299 */
1300 void diff_cmd(void){
1301 int isGDiff; /* True for gdiff. False for normal diff */
1302 const char *zFrom; /* Source version number */
1303 const char *zTo; /* Target version number */
 
 
1304 const char *zCheckin; /* Check-in version number */
1305 const char *zBranch; /* Branch to diff */
1306 int againstUndo = 0; /* Diff against files in the undo buffer */
1307 FileDirList *pFileDir = 0; /* Restrict the diff to these files */
1308 DiffConfig DCfg; /* Diff configuration object */
@@ -1310,18 +1324,36 @@
1310 if( find_option("tk",0,0)!=0 || has_option("tclsh") ){
1311 diff_tk("diff", 2);
1312 return;
1313 }
1314 isGDiff = g.argv[1][0]=='g';
 
1315 zFrom = find_option("from", "r", 1);
1316 zTo = find_option("to", 0, 1);
 
 
1317 zCheckin = find_option("checkin", "ci", 1);
1318 zBranch = find_option("branch", 0, 1);
1319 againstUndo = find_option("undo",0,0)!=0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1320 if( againstUndo && ( zFrom!=0 || zTo!=0 || zCheckin!=0 || zBranch!=0) ){
1321 fossil_fatal("cannot use --undo together with --from, --to, --checkin,"
1322 " or --branch");
1323 }
1324 if( zBranch ){
1325 if( zTo || zFrom || zCheckin ){
1326 fossil_fatal("cannot use --from, --to, or --checkin with --branch");
1327 }
@@ -1329,11 +1361,10 @@
1329 zFrom = mprintf("root:%s", zBranch);
1330 }
1331 if( zCheckin!=0 && ( zFrom!=0 || zTo!=0 ) ){
1332 fossil_fatal("cannot use --checkin together with --from or --to");
1333 }
1334 diff_options(&DCfg, isGDiff, 0);
1335 determine_exec_relative_option(1);
1336 if( 0==zCheckin ){
1337 if( zTo==0 || againstUndo ){
1338 db_must_be_within_tree();
1339 }else if( zFrom==0 ){
1340
--- src/diffcmd.c
+++ src/diffcmd.c
@@ -1043,16 +1043,26 @@
1043 ){
1044 Manifest *pFrom, *pTo;
1045 ManifestFile *pFromFile, *pToFile;
1046 int asNewFlag = (pCfg->diffFlags & (DIFF_VERBOSE|DIFF_NUMSTAT))!=0 ? 1 : 0;
1047
1048 if( pCfg->diffFlags & DIFF_FROM_CKOUT ){
1049 fossil_fatal("The --from-ckout option is not yet implemented");
1050 }else{
1051 pFrom = manifest_get_by_name(zFrom, 0);
1052 }
1053 manifest_file_rewind(pFrom);
1054 pFromFile = manifest_file_next(pFrom,0);
1055
1056 if( pCfg->diffFlags & DIFF_TO_CKOUT ){
1057 fossil_fatal("The --to-ckout option is not yet implemented");
1058 }else{
1059 pTo = manifest_get_by_name(zTo, 0);
1060 }
1061 manifest_file_rewind(pTo);
1062 pToFile = manifest_file_next(pTo,0);
1063
1064 if( (pCfg->diffFlags & DIFF_SHOW_VERS)!=0 ){
1065 diff_print_versions(zFrom, zTo, pCfg);
1066 }
1067 while( pFromFile || pToFile ){
1068 int cmp;
@@ -1274,10 +1284,11 @@
1284 ** --dark Use dark mode for the Tcl/Tk-based GUI and HTML
1285 ** --diff-binary BOOL Include binary files with external commands
1286 ** --exec-abs-paths Force absolute path names on external commands
1287 ** --exec-rel-paths Force relative path names on external commands
1288 ** -r|--from VERSION Select VERSION as source for the diff
1289 ** --from-ckout PATH Path to foreign checkout to use as source
1290 ** -w|--ignore-all-space Ignore white space when comparing lines
1291 ** -i|--internal Use internal diff logic
1292 ** --invert Invert the diff
1293 ** --json Output formatted as JSON
1294 ** -n|--linenum Show line numbers
@@ -1287,10 +1298,11 @@
1298 ** --strip-trailing-cr Strip trailing CR
1299 ** --tcl Tcl-formatted output used internally by --tk
1300 ** --tclsh PATH Tcl/Tk shell used for --tk (default: "tclsh")
1301 ** --tk Launch a Tcl/Tk GUI for display
1302 ** --to VERSION Select VERSION as target for the diff
1303 ** --to-ckout PATH Path to foreign checkout to use as target
1304 ** --undo Diff against the "undo" buffer
1305 ** --unified Unified diff
1306 ** -v|--verbose Output complete text of added or deleted files
1307 ** -h|--versions Show compared versions in the diff header
1308 ** --webpage Format output as a stand-alone HTML webpage
@@ -1299,10 +1311,12 @@
1311 */
1312 void diff_cmd(void){
1313 int isGDiff; /* True for gdiff. False for normal diff */
1314 const char *zFrom; /* Source version number */
1315 const char *zTo; /* Target version number */
1316 const char *zFromCkout; /* Foreign check-out for the from side */
1317 const char *zToCkout; /* Foreign check-out for the to side */
1318 const char *zCheckin; /* Check-in version number */
1319 const char *zBranch; /* Branch to diff */
1320 int againstUndo = 0; /* Diff against files in the undo buffer */
1321 FileDirList *pFileDir = 0; /* Restrict the diff to these files */
1322 DiffConfig DCfg; /* Diff configuration object */
@@ -1310,18 +1324,36 @@
1324 if( find_option("tk",0,0)!=0 || has_option("tclsh") ){
1325 diff_tk("diff", 2);
1326 return;
1327 }
1328 isGDiff = g.argv[1][0]=='g';
1329 diff_options(&DCfg, isGDiff, 0);
1330 zFrom = find_option("from", "r", 1);
1331 zTo = find_option("to", 0, 1);
1332 zFromCkout = find_option("from-ckout", 0, 1);
1333 zToCkout = find_option("to-ckout", 0, 1);
1334 zCheckin = find_option("checkin", "ci", 1);
1335 zBranch = find_option("branch", 0, 1);
1336 againstUndo = find_option("undo",0,0)!=0;
1337 if( zFromCkout ){
1338 if( zFrom || zCheckin || zBranch || againstUndo ){
1339 fossil_fatal("cannot use --from-ckout with --from, --checkin, --branch,"
1340 " or --undo");
1341 }
1342 DCfg.diffFlags |= DIFF_FROM_CKOUT;
1343 zFrom = zFromCkout;
1344 }
1345 if( zToCkout ){
1346 if( zTo || zBranch || againstUndo ){
1347 fossil_fatal("cannot use --from-ckout with --to, --branch or --undo");
1348 }
1349 DCfg.diffFlags |= DIFF_TO_CKOUT;
1350 zTo = zToCkout;
1351 }
1352 if( againstUndo && ( zFrom!=0 || zTo!=0 || zCheckin!=0 || zBranch!=0) ){
1353 fossil_fatal("cannot use --undo together with --from, --to, --checkin,"
1354 " --branch, --from-ckout, or --to-ckout");
1355 }
1356 if( zBranch ){
1357 if( zTo || zFrom || zCheckin ){
1358 fossil_fatal("cannot use --from, --to, or --checkin with --branch");
1359 }
@@ -1329,11 +1361,10 @@
1361 zFrom = mprintf("root:%s", zBranch);
1362 }
1363 if( zCheckin!=0 && ( zFrom!=0 || zTo!=0 ) ){
1364 fossil_fatal("cannot use --checkin together with --from or --to");
1365 }
 
1366 determine_exec_relative_option(1);
1367 if( 0==zCheckin ){
1368 if( zTo==0 || againstUndo ){
1369 db_must_be_within_tree();
1370 }else if( zFrom==0 ){
1371
+31 -2
--- src/manifest.c
+++ src/manifest.c
@@ -51,11 +51,18 @@
5151
#define MC_NONE 0 /* default handling */
5252
#define MC_PERMIT_HOOKS 1 /* permit hooks to execute */
5353
#define MC_NO_ERRORS 2 /* do not issue errors for a bad parse */
5454
5555
/*
56
-** A single F-card within a manifest
56
+** A single F-card within a manifest.
57
+**
58
+** In a true Manifest, zUuid is the sha1 or sha3 hash of the artifact
59
+** that is the file content. But in a checkout manifest, if the file
60
+** has uncommitted modifications on disk, then zUuid is the absolute
61
+** pathname of the modified file on disk. Absolute pathnames are always
62
+** distinguishable from hashes because they begin with "/" on unix or
63
+** with "X:\" on windows.
5764
*/
5865
struct ManifestFile {
5966
char *zName; /* Name of a file */
6067
char *zUuid; /* Artifact hash for the file */
6168
char *zPerm; /* File permissions */
@@ -62,11 +69,33 @@
6269
char *zPrior; /* Prior name if the name was changed */
6370
};
6471
6572
6673
/*
67
-** A parsed manifest or cluster.
74
+** The Manifest object (usually) represents a complete parse of a control
75
+** artifact. There are various kinds of control artifacts:
76
+**
77
+** Manifests Description of a check-in
78
+** Clusters Used to expidite sync operations
79
+** Controls Set or cancel tags
80
+** Wiki Change to a wiki page
81
+** Ticket Change to a ticket
82
+** Attachment An attachment on a wiki page or ticket
83
+** TechNote A technote
84
+** ForumPost A forum post.
85
+**
86
+** A single Manifest object represents one of these.
87
+**
88
+** Sometimes, a Manifest object can also be used to represent the state of
89
+** all managed files in a check-out with uncommitted changes. Call this
90
+** a "Checkout". A Checkout does not have an artifact counterpart. When
91
+** this object is used as a checkout, that is for internal use only. A
92
+** checkout is like a manifest except that in the ManifestFile sub-objects,
93
+** the ManifestFile.zUuid is the absolute filename for files that have been
94
+** modified, rather than being an artifact hash. These filenames are
95
+** appended to the end of Manifest.content and are thus freed when the
96
+** Manifest object is freed.
6897
*/
6998
struct Manifest {
7099
Blob content; /* The original content blob */
71100
int type; /* Type of artifact. One of CFTYPE_xxxxx */
72101
int rid; /* The blob-id for this manifest */
73102
--- src/manifest.c
+++ src/manifest.c
@@ -51,11 +51,18 @@
51 #define MC_NONE 0 /* default handling */
52 #define MC_PERMIT_HOOKS 1 /* permit hooks to execute */
53 #define MC_NO_ERRORS 2 /* do not issue errors for a bad parse */
54
55 /*
56 ** A single F-card within a manifest
 
 
 
 
 
 
 
57 */
58 struct ManifestFile {
59 char *zName; /* Name of a file */
60 char *zUuid; /* Artifact hash for the file */
61 char *zPerm; /* File permissions */
@@ -62,11 +69,33 @@
62 char *zPrior; /* Prior name if the name was changed */
63 };
64
65
66 /*
67 ** A parsed manifest or cluster.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68 */
69 struct Manifest {
70 Blob content; /* The original content blob */
71 int type; /* Type of artifact. One of CFTYPE_xxxxx */
72 int rid; /* The blob-id for this manifest */
73
--- src/manifest.c
+++ src/manifest.c
@@ -51,11 +51,18 @@
51 #define MC_NONE 0 /* default handling */
52 #define MC_PERMIT_HOOKS 1 /* permit hooks to execute */
53 #define MC_NO_ERRORS 2 /* do not issue errors for a bad parse */
54
55 /*
56 ** A single F-card within a manifest.
57 **
58 ** In a true Manifest, zUuid is the sha1 or sha3 hash of the artifact
59 ** that is the file content. But in a checkout manifest, if the file
60 ** has uncommitted modifications on disk, then zUuid is the absolute
61 ** pathname of the modified file on disk. Absolute pathnames are always
62 ** distinguishable from hashes because they begin with "/" on unix or
63 ** with "X:\" on windows.
64 */
65 struct ManifestFile {
66 char *zName; /* Name of a file */
67 char *zUuid; /* Artifact hash for the file */
68 char *zPerm; /* File permissions */
@@ -62,11 +69,33 @@
69 char *zPrior; /* Prior name if the name was changed */
70 };
71
72
73 /*
74 ** The Manifest object (usually) represents a complete parse of a control
75 ** artifact. There are various kinds of control artifacts:
76 **
77 ** Manifests Description of a check-in
78 ** Clusters Used to expidite sync operations
79 ** Controls Set or cancel tags
80 ** Wiki Change to a wiki page
81 ** Ticket Change to a ticket
82 ** Attachment An attachment on a wiki page or ticket
83 ** TechNote A technote
84 ** ForumPost A forum post.
85 **
86 ** A single Manifest object represents one of these.
87 **
88 ** Sometimes, a Manifest object can also be used to represent the state of
89 ** all managed files in a check-out with uncommitted changes. Call this
90 ** a "Checkout". A Checkout does not have an artifact counterpart. When
91 ** this object is used as a checkout, that is for internal use only. A
92 ** checkout is like a manifest except that in the ManifestFile sub-objects,
93 ** the ManifestFile.zUuid is the absolute filename for files that have been
94 ** modified, rather than being an artifact hash. These filenames are
95 ** appended to the end of Manifest.content and are thus freed when the
96 ** Manifest object is freed.
97 */
98 struct Manifest {
99 Blob content; /* The original content blob */
100 int type; /* Type of artifact. One of CFTYPE_xxxxx */
101 int rid; /* The blob-id for this manifest */
102

Keyboard Shortcuts

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