49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
** Flags for use with manifest_crosslink().
*/
#define MC_NONE 0 /* default handling */
#define MC_PERMIT_HOOKS 1 /* permit hooks to execute */
#define MC_NO_ERRORS 2 /* do not issue errors for a bad parse */
/*
** A single F-card within a manifest
*/
struct ManifestFile {
char *zName; /* Name of a file */
char *zUuid; /* Artifact hash for the file */
char *zPerm; /* File permissions */
char *zPrior; /* Prior name if the name was changed */
};
/*
** A parsed manifest or cluster.
*/
struct Manifest {
Blob content; /* The original content blob */
int type; /* Type of artifact. One of CFTYPE_xxxxx */
int rid; /* The blob-id for this manifest */
const char *zBaseline;/* Baseline manifest. The B card. */
Manifest *pBaseline; /* The actual baseline manifest */
|
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
|
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
** Flags for use with manifest_crosslink().
*/
#define MC_NONE 0 /* default handling */
#define MC_PERMIT_HOOKS 1 /* permit hooks to execute */
#define MC_NO_ERRORS 2 /* do not issue errors for a bad parse */
/*
** A single F-card within a manifest.
**
** In a true Manifest, zUuid is the sha1 or sha3 hash of the artifact
** that is the file content. But in a checkout manifest, if the file
** has uncommitted modifications on disk, then zUuid is the absolute
** pathname of the modified file on disk. Absolute pathnames are always
** distinguishable from hashes because they begin with "/" on unix or
** with "X:\" on windows.
*/
struct ManifestFile {
char *zName; /* Name of a file */
char *zUuid; /* Artifact hash for the file */
char *zPerm; /* File permissions */
char *zPrior; /* Prior name if the name was changed */
};
/*
** The Manifest object (usually) represents a complete parse of a control
** artifact. There are various kinds of control artifacts:
**
** Manifests Description of a check-in
** Clusters Used to expidite sync operations
** Controls Set or cancel tags
** Wiki Change to a wiki page
** Ticket Change to a ticket
** Attachment An attachment on a wiki page or ticket
** TechNote A technote
** ForumPost A forum post.
**
** A single Manifest object represents one of these.
**
** Sometimes, a Manifest object can also be used to represent the state of
** all managed files in a check-out with uncommitted changes. Call this
** a "Checkout". A Checkout does not have an artifact counterpart. When
** this object is used as a checkout, that is for internal use only. A
** checkout is like a manifest except that in the ManifestFile sub-objects,
** the ManifestFile.zUuid is the absolute filename for files that have been
** modified, rather than being an artifact hash. These filenames are
** appended to the end of Manifest.content and are thus freed when the
** Manifest object is freed.
*/
struct Manifest {
Blob content; /* The original content blob */
int type; /* Type of artifact. One of CFTYPE_xxxxx */
int rid; /* The blob-id for this manifest */
const char *zBaseline;/* Baseline manifest. The B card. */
Manifest *pBaseline; /* The actual baseline manifest */
|