Ticket UUID: | 3bfff6e03bcc5f14cbd0428cd796a0d109b5ae17 | ||
Title: | Error when creating a branch from checkin that doesn't have checksum in manifest | ||
Status: | Fixed | Type: | Code_Defect |
Severity: | Important | Priority: | |
Subsystem: | Resolution: | Fixed | |
Last Modified: | 2011-03-16 02:31:49 | ||
Version Found In: | |||
Description & Comments: | |||
When parent check-in doesn't have an R-card in manifest, Fossil fails to create a branch from this check-in with error "unable to install new manifest". This is because Fossil creates manifest for a new branch which contains a line: "R " (and no checksum), instead of not adding an R-card at all, and manifest_parse() fails to parse such manifests.
Fix (patch is not against tip, but you get the idea): --- src/branch.c +++ src/branch.c @@ -99,11 +99,13 @@ } blob_append(&branch, "\n", 1); } zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rootid); blob_appendf(&branch, "P %s\n", zUuid); - blob_appendf(&branch, "R %s\n", pParent->zRepoCksum); + if( pParent->zRepoCksum ){ + blob_appendf(&branch, "R %s\n", pParent->zRepoCksum); + } manifest_destroy(pParent); /* Add the symbolic branch name and the "branch" tag to identify ** this as a new branch */ if( zColor!=0 ){ |