Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Add the new crnl-glob setting which defines files for which it is OK to have CRNL line endings. Windows projects on which this is preferred can set the crnl-glob pattern to '*'. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
046658848c21cd54749a48bebe7719d6 |
| User & Date: | drh 2011-02-25 17:40:20.964 |
Context
|
2011-02-25
| ||
| 17:49 | Remove a superfluous ';' from the end of artifact listings. check-in: a48c661d9a user: drh tags: trunk | |
| 17:40 | Add the new crnl-glob setting which defines files for which it is OK to have CRNL line endings. Windows projects on which this is preferred can set the crnl-glob pattern to '*'. check-in: 046658848c user: drh tags: trunk | |
| 16:20 | Track file permission changes in the mlink table. Updating through this check-in requires a rebuild. check-in: 7f11789bf1 user: drh tags: trunk | |
Changes
Changes to src/checkin.c.
| ︙ | ︙ | |||
737 738 739 740 741 742 743 744 745 746 747 748 749 750 | } blob_appendf(pOut, "U %F\n", zUserOvrd ? zUserOvrd : g.zLogin); md5sum_blob(pOut, &mcksum); blob_appendf(pOut, "Z %b\n", &mcksum); if( pnFBcard ) *pnFBcard = nFBcard; } /* ** COMMAND: ci ** COMMAND: commit ** ** Usage: %fossil commit ?OPTIONS? ?FILE...? ** | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 |
}
blob_appendf(pOut, "U %F\n", zUserOvrd ? zUserOvrd : g.zLogin);
md5sum_blob(pOut, &mcksum);
blob_appendf(pOut, "Z %b\n", &mcksum);
if( pnFBcard ) *pnFBcard = nFBcard;
}
/*
** Issue a warning and give the user an opportunity to abandon out
** if a \r\n line ending is seen in a text file.
*/
static void cr_warning(const Blob *p, const char *zFilename){
int nCrNl = 0; /* Number of \r\n line endings seen */
const unsigned char *z; /* File text */
int n; /* Size of the file in bytes */
int lastNl = 0; /* Characters since last \n */
int i; /* Loop counter */
char *zMsg; /* Warning message */
Blob fname; /* Relative pathname of the file */
Blob ans; /* Answer to continue prompt */
static int allOk = 0; /* Set to true to disable this routine */
if( allOk ) return;
z = (unsigned char*)blob_buffer(p);
n = blob_size(p);
for(i=0; i<n-1; i++){
unsigned char c = z[i];
if( c==0 ) return; /* It's binary */
if( c=='\n' ){
if( i>0 && z[i-1]=='\r' ){
nCrNl++;
if( i>10000 ) break;
}
lastNl = 0;
}else{
lastNl++;
if( lastNl>1000 ) return; /* Binary if any line longer than 1000 */
}
}
if( nCrNl ){
char c;
file_relative_name(zFilename, &fname);
blob_zero(&ans);
zMsg = mprintf("%s contains CR/NL line endings; commit anyhow (y/N/a)?",
blob_str(&fname));
prompt_user(zMsg, &ans);
fossil_free(zMsg);
c = blob_str(&ans)[0];
if( c=='a' ){
allOk = 1;
}else if( c!='y' ){
fossil_fatal("Abandoning commit due to CR+NL line endings in %s",
blob_str(&fname));
}
blob_reset(&ans);
blob_reset(&fname);
}
}
/*
** COMMAND: ci
** COMMAND: commit
**
** Usage: %fossil commit ?OPTIONS? ?FILE...?
**
|
| ︙ | ︙ | |||
926 927 928 929 930 931 932 |
memset(&unmodified, 0, sizeof(Blob));
blob_init(&unmodified, 0, 0);
db_blob(&unmodified,
"SELECT pathname FROM vfile"
" WHERE chnged = 0 AND origname IS NULL AND file_is_selected(id)"
);
if( strlen(blob_str(&unmodified)) ){
| | | 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 |
memset(&unmodified, 0, sizeof(Blob));
blob_init(&unmodified, 0, 0);
db_blob(&unmodified,
"SELECT pathname FROM vfile"
" WHERE chnged = 0 AND origname IS NULL AND file_is_selected(id)"
);
if( strlen(blob_str(&unmodified)) ){
fossil_fatal("file %s has not changed", blob_str(&unmodified));
}
}
/*
** Do not allow a commit that will cause a fork unless the --force flag
** is used or unless this is a private check-in.
*/
|
| ︙ | ︙ | |||
977 978 979 980 981 982 983 | } /* Step 1: Insert records for all modified files into the blob ** table. If there were arguments passed to this command, only ** the identified fils are inserted (if they have been modified). */ db_prepare(&q, | | | | > > > | 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 |
}
/* Step 1: Insert records for all modified files into the blob
** table. If there were arguments passed to this command, only
** the identified fils are inserted (if they have been modified).
*/
db_prepare(&q,
"SELECT id, %Q || pathname, mrid, %s FROM vfile "
"WHERE chnged==1 AND NOT deleted AND file_is_selected(id)",
g.zLocalRoot, glob_expr("pathname", db_get("crnl-glob",""))
);
while( db_step(&q)==SQLITE_ROW ){
int id, rid;
const char *zFullname;
Blob content;
int crnlOk;
id = db_column_int(&q, 0);
zFullname = db_column_text(&q, 1);
rid = db_column_int(&q, 2);
crnlOk = db_column_int(&q, 3);
blob_zero(&content);
blob_read_from_file(&content, zFullname);
if( !crnlOk ) cr_warning(&content, zFullname);
nrid = content_put(&content);
blob_reset(&content);
if( rid>0 ){
content_deltify(rid, nrid, 0);
}
db_multi_exec("UPDATE vfile SET mrid=%d, rid=%d WHERE id=%d", nrid,nrid,id);
db_multi_exec("INSERT OR IGNORE INTO unsent VALUES(%d)", nrid);
|
| ︙ | ︙ |
Changes to src/configure.c.
| ︙ | ︙ | |||
74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
{ "footer", CONFIGSET_SKIN },
{ "logo-mimetype", CONFIGSET_SKIN },
{ "logo-image", CONFIGSET_SKIN },
{ "project-name", CONFIGSET_PROJ },
{ "project-description", CONFIGSET_PROJ },
{ "manifest", CONFIGSET_PROJ },
{ "ignore-glob", CONFIGSET_PROJ },
{ "index-page", CONFIGSET_SKIN },
{ "timeline-block-markup", CONFIGSET_SKIN },
{ "timeline-max-comment", CONFIGSET_SKIN },
{ "ticket-table", CONFIGSET_TKT },
{ "ticket-common", CONFIGSET_TKT },
{ "ticket-newpage", CONFIGSET_TKT },
{ "ticket-viewpage", CONFIGSET_TKT },
| > | 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
{ "footer", CONFIGSET_SKIN },
{ "logo-mimetype", CONFIGSET_SKIN },
{ "logo-image", CONFIGSET_SKIN },
{ "project-name", CONFIGSET_PROJ },
{ "project-description", CONFIGSET_PROJ },
{ "manifest", CONFIGSET_PROJ },
{ "ignore-glob", CONFIGSET_PROJ },
{ "crnl-glob", CONFIGSET_PROJ },
{ "index-page", CONFIGSET_SKIN },
{ "timeline-block-markup", CONFIGSET_SKIN },
{ "timeline-max-comment", CONFIGSET_SKIN },
{ "ticket-table", CONFIGSET_TKT },
{ "ticket-common", CONFIGSET_TKT },
{ "ticket-newpage", CONFIGSET_TKT },
{ "ticket-viewpage", CONFIGSET_TKT },
|
| ︙ | ︙ |
Changes to src/db.c.
| ︙ | ︙ | |||
1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 |
struct stControlSettings const ctrlSettings[] = {
{ "access-log", 0, 0, "off" },
{ "auto-captcha", "autocaptcha", 0, "on" },
{ "auto-shun", 0, 0, "on" },
{ "autosync", 0, 0, "on" },
{ "binary-glob", 0, 32, "" },
{ "clearsign", 0, 0, "off" },
{ "default-perms", 0, 16, "u" },
{ "diff-command", 0, 16, "" },
{ "dont-push", 0, 0, "off" },
{ "editor", 0, 16, "" },
{ "gdiff-command", 0, 16, "gdiff" },
{ "gmerge-command",0, 40, "" },
{ "ignore-glob", 0, 40, "" },
| > | 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 |
struct stControlSettings const ctrlSettings[] = {
{ "access-log", 0, 0, "off" },
{ "auto-captcha", "autocaptcha", 0, "on" },
{ "auto-shun", 0, 0, "on" },
{ "autosync", 0, 0, "on" },
{ "binary-glob", 0, 32, "" },
{ "clearsign", 0, 0, "off" },
{ "crnl-glob", 0, 16, "" },
{ "default-perms", 0, 16, "u" },
{ "diff-command", 0, 16, "" },
{ "dont-push", 0, 0, "off" },
{ "editor", 0, 16, "" },
{ "gdiff-command", 0, 16, "gdiff" },
{ "gmerge-command",0, 40, "" },
{ "ignore-glob", 0, 40, "" },
|
| ︙ | ︙ | |||
1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 | ** binary-glob The VALUE is a comma-separated list of GLOB patterns ** that should be treated as binary files for merging ** purposes. Example: *.xml ** ** clearsign When enabled, fossil will attempt to sign all commits ** with gpg. When disabled (the default), commits will ** be unsigned. Default: off ** ** default-perms Permissions given automatically to new users. For more ** information on permissions see Users page in Server ** Administration of the HTTP UI. Default: u. ** ** diff-command External command to run when performing a diff. ** If undefined, the internal text diff will be used. | > > > > | 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 | ** binary-glob The VALUE is a comma-separated list of GLOB patterns ** that should be treated as binary files for merging ** purposes. Example: *.xml ** ** clearsign When enabled, fossil will attempt to sign all commits ** with gpg. When disabled (the default), commits will ** be unsigned. Default: off ** ** crnl-glob A comma-separated list of GLOB patterns for text files ** in which it is ok to have CR+NL line endings. ** Set to "*" to disable CR+NL checking. ** ** default-perms Permissions given automatically to new users. For more ** information on permissions see Users page in Server ** Administration of the HTTP UI. Default: u. ** ** diff-command External command to run when performing a diff. ** If undefined, the internal text diff will be used. |
| ︙ | ︙ |