Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch root-tag Excluding Merge-Ins
This is equivalent to a diff from 31545360ab to 36134ce275
2012-07-14
| ||
16:51 | Merge the root-tag branch into trunk. ... (check-in: 9f83e033a2 user: drh tags: trunk) | |
11:40 | Changes to the root-tag processing to provide better error messages. ... (Closed-Leaf check-in: 36134ce275 user: drh tags: root-tag) | |
05:03 | Add the branch= query parameter to the vdiff page. ... (check-in: 1879758718 user: drh tags: root-tag) | |
04:43 | Allow check-in specifications of the form "root:BRANCH" where BRANCH is a branch name. Such a spec refers to the point on the parent branch from which the branch is derived. Useful for doing a diff of an entire branch, for example, using "fossil diff --from root:xyz --to xyz". ... (check-in: a4e01221c8 user: drh tags: root-tag) | |
00:20 | added th1 query API. ... (check-in: c3b10e12a1 user: stephan tags: th1-query-api) | |
2012-07-13
| ||
20:52 | minor formatting fix. ... (check-in: 31545360ab user: stephan tags: trunk) | |
18:55 | minor doc correction. ... (check-in: 5df13a0b38 user: stephan tags: trunk) | |
Changes to src/diffcmd.c.
︙ | ︙ | |||
479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 | ** the "setting" command. If no external diff program is configured, then ** the "-i" option is a no-op. The "-i" option converts "gdiff" into "diff". ** ** The "-N" or "--new-file" option causes the complete text of added or ** deleted files to be displayed. ** ** Options: ** --brief Show filenames only ** --context|-c N Use N lines of context ** --from|-r VERSION select VERSION as source for the diff ** -i use internal diff logic ** --new-file|-N output complete text of added or deleted files ** --to VERSION select VERSION as target for the diff ** --side-by-side|-y side-by-side diff ** --width|-W N Width of lines in side-by-side diff */ void diff_cmd(void){ int isGDiff; /* True for gdiff. False for normal diff */ int isInternDiff; /* True for internal diff */ int hasNFlag; /* True if -N or --new-file flag is used */ const char *zFrom; /* Source version number */ const char *zTo; /* Target version number */ const char *zDiffCmd = 0; /* External diff command. NULL for internal diff */ int diffFlags = 0; /* Flags to control the DIFF */ int f; isGDiff = g.argv[1][0]=='g'; isInternDiff = find_option("internal","i",0)!=0; zFrom = find_option("from", "r", 1); zTo = find_option("to", 0, 1); diffFlags = diff_options(); hasNFlag = find_option("new-file","N",0)!=0; if( hasNFlag ) diffFlags |= DIFF_NEWFILE; if( zTo==0 ){ db_must_be_within_tree(); verify_all_options(); if( !isInternDiff ){ zDiffCmd = db_get(isGDiff ? "gdiff-command" : "diff-command", 0); } if( g.argc>=3 ){ | > > > > > > > > > > | 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 | ** the "setting" command. If no external diff program is configured, then ** the "-i" option is a no-op. The "-i" option converts "gdiff" into "diff". ** ** The "-N" or "--new-file" option causes the complete text of added or ** deleted files to be displayed. ** ** Options: ** --branch BRANCH Show diff of all changes on BRANCH ** --brief Show filenames only ** --context|-c N Use N lines of context ** --from|-r VERSION select VERSION as source for the diff ** -i use internal diff logic ** --new-file|-N output complete text of added or deleted files ** --to VERSION select VERSION as target for the diff ** --side-by-side|-y side-by-side diff ** --width|-W N Width of lines in side-by-side diff */ void diff_cmd(void){ int isGDiff; /* True for gdiff. False for normal diff */ int isInternDiff; /* True for internal diff */ int hasNFlag; /* True if -N or --new-file flag is used */ const char *zFrom; /* Source version number */ const char *zTo; /* Target version number */ const char *zBranch; /* Branch to diff */ const char *zDiffCmd = 0; /* External diff command. NULL for internal diff */ int diffFlags = 0; /* Flags to control the DIFF */ int f; isGDiff = g.argv[1][0]=='g'; isInternDiff = find_option("internal","i",0)!=0; zFrom = find_option("from", "r", 1); zTo = find_option("to", 0, 1); zBranch = find_option("branch", 0, 1); diffFlags = diff_options(); hasNFlag = find_option("new-file","N",0)!=0; if( hasNFlag ) diffFlags |= DIFF_NEWFILE; if( zBranch ){ if( zTo || zFrom ){ fossil_fatal("cannot use --from or --to with --branch"); } zTo = zBranch; zFrom = mprintf("root:%s", zBranch); } if( zTo==0 ){ db_must_be_within_tree(); verify_all_options(); if( !isInternDiff ){ zDiffCmd = db_get(isGDiff ? "gdiff-command" : "diff-command", 0); } if( g.argc>=3 ){ |
︙ | ︙ |
Changes to src/info.c.
︙ | ︙ | |||
752 753 754 755 756 757 758 | ** manifest. Return the number of errors. */ static Manifest *vdiff_parse_manifest(const char *zParam, int *pRid){ int rid; *pRid = rid = name_to_rid_www(zParam); if( rid==0 ){ | > > | > > > | 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 | ** manifest. Return the number of errors. */ static Manifest *vdiff_parse_manifest(const char *zParam, int *pRid){ int rid; *pRid = rid = name_to_rid_www(zParam); if( rid==0 ){ const char *z = P(zParam); if( z==0 || z[0]==0 ){ webpage_error("Missing \"%s\" query parameter.", zParam); }else{ webpage_error("No such artifact: \"%s\"", z); } return 0; } if( !is_a_version(rid) ){ webpage_error("Artifact %s is not a checkin.", P(zParam)); return 0; } return manifest_get(rid, CFTYPE_MANIFEST); |
︙ | ︙ | |||
803 804 805 806 807 808 809 810 811 812 813 814 | void vdiff_page(void){ int ridFrom, ridTo; int showDetail = 0; int sideBySide = 0; int diffFlags = 0; Manifest *pFrom, *pTo; ManifestFile *pFileFrom, *pFileTo; login_check_credentials(); if( !g.perm.Read ){ login_needed(); return; } login_anonymous_available(); | > > > > > > | | | | | 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 | void vdiff_page(void){ int ridFrom, ridTo; int showDetail = 0; int sideBySide = 0; int diffFlags = 0; Manifest *pFrom, *pTo; ManifestFile *pFileFrom, *pFileTo; const char *zBranch; login_check_credentials(); if( !g.perm.Read ){ login_needed(); return; } login_anonymous_available(); zBranch = P("branch"); if( zBranch && zBranch[0] ){ cgi_replace_parameter("from", mprintf("root:%s", zBranch)); cgi_replace_parameter("to", zBranch); } pTo = vdiff_parse_manifest("to", &ridTo); if( pTo==0 ) return; pFrom = vdiff_parse_manifest("from", &ridFrom); if( pFrom==0 ) return; sideBySide = atoi(PD("sbs","1")); showDetail = atoi(PD("detail","0")); if( !showDetail && sideBySide ) showDetail = 1; if( !sideBySide ){ style_submenu_element("Side-by-side Diff", "sbsdiff", "%s/vdiff?from=%T&to=%T&detail=%d&sbs=1", g.zTop, P("from"), P("to"), showDetail); |
︙ | ︙ |
Changes to src/name.c.
︙ | ︙ | |||
150 151 152 153 154 155 156 157 158 159 160 161 162 163 | " WHERE tag.tagname='sym-%q' " " AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 " " AND event.objid=tagxref.rid " " AND event.type GLOB '%q'" " ORDER BY event.mtime DESC /*sort*/", &zTag[4], zType ); return rid; } /* symbolic-name ":" date-time */ nTag = strlen(zTag); for(i=0; i<nTag-10 && zTag[i]!=':'; i++){} if( zTag[i]==':' && is_date(&zTag[i+1]) ){ | > > > > > > > > > > > > > > > > > > > > > > > | 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | " WHERE tag.tagname='sym-%q' " " AND tagxref.tagid=tag.tagid AND tagxref.tagtype>0 " " AND event.objid=tagxref.rid " " AND event.type GLOB '%q'" " ORDER BY event.mtime DESC /*sort*/", &zTag[4], zType ); } /* root:TAG -> The origin of the branch */ if( memcmp(zTag, "root:", 5)==0 ){ Stmt q; int rc; rid = symbolic_name_to_rid(zTag+5, zType); db_prepare(&q, "SELECT pid, EXISTS(SELECT 1 FROM tagxref" " WHERE tagid=%d AND tagtype>0" " AND value=%Q AND rid=plink.pid)" " FROM plink" " WHERE cid=:cid AND isprim", TAG_BRANCH, &zTag[5] ); do{ db_reset(&q); db_bind_int(&q, ":cid", rid); rc = db_step(&q); if( rc!=SQLITE_ROW ) break; rid = db_column_int(&q, 0); }while( db_column_int(&q, 1)==1 && rid>0 ); db_finalize(&q); return rid; } /* symbolic-name ":" date-time */ nTag = strlen(zTag); for(i=0; i<nTag-10 && zTag[i]!=':'; i++){} if( zTag[i]==':' && is_date(&zTag[i+1]) ){ |
︙ | ︙ |