Fossil SCM
Add support for multiple branch names in the doc-branch setting, as discussed in [forum:520d420d04e482b2 | forum post 520d420d04].
Commit
40d0b360d2cf9d72b4430836a6ddef5a4e75a6859cfb339528250bf257be35e5
Parent
af1456ba3496d6b…
2 files changed
+80
-63
+4
-3
+80
-63
| --- src/search.c | ||
| +++ src/search.c | ||
| @@ -794,30 +794,38 @@ | ||
| 794 | 794 | SRCHFLG_STATIC|SRCHFLG_HTML); |
| 795 | 795 | if( (srchFlags & SRCH_DOC)!=0 ){ |
| 796 | 796 | char *zDocGlob = db_get("doc-glob",""); |
| 797 | 797 | char *zDocBr = db_get("doc-branch","trunk"); |
| 798 | 798 | if( zDocGlob && zDocGlob[0] && zDocBr && zDocBr[0] ){ |
| 799 | + Glob * pGlob = glob_create(zDocBr) | |
| 800 | + /* We're misusing a Glob as a list of comma-/space-delimited | |
| 801 | + ** tokens. We're not actually doing glob matches here. */; | |
| 802 | + int i; | |
| 799 | 803 | db_multi_exec( |
| 800 | 804 | "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;" |
| 801 | 805 | ); |
| 802 | - db_multi_exec( | |
| 803 | - "INSERT INTO x(label,url,score,id,date,snip)" | |
| 804 | - " SELECT printf('Document: %%s',title('d',blob.rid,foci.filename))," | |
| 805 | - " printf('/doc/%T/%%s',foci.filename)," | |
| 806 | - " search_score()," | |
| 807 | - " 'd'||blob.rid," | |
| 808 | - " (SELECT datetime(event.mtime) FROM event" | |
| 809 | - " WHERE objid=symbolic_name_to_rid(%Q))," | |
| 810 | - " search_snippet()" | |
| 811 | - " FROM foci CROSS JOIN blob" | |
| 812 | - " WHERE checkinID=symbolic_name_to_rid(%Q)" | |
| 813 | - " AND blob.uuid=foci.uuid" | |
| 814 | - " AND search_match(title('d',blob.rid,foci.filename)," | |
| 815 | - " body('d',blob.rid,foci.filename))" | |
| 816 | - " AND %z", | |
| 817 | - zDocBr, zDocBr, zDocBr, glob_expr("foci.filename", zDocGlob) | |
| 818 | - ); | |
| 806 | + for( i = 0; i < pGlob->nPattern; ++i ){ | |
| 807 | + const char * zBranch = pGlob->azPattern[i]; | |
| 808 | + db_multi_exec( | |
| 809 | + "INSERT INTO x(label,url,score,id,date,snip)" | |
| 810 | + " SELECT printf('Document: %%s',title('d',blob.rid,foci.filename))," | |
| 811 | + " printf('/doc/%T/%%s',foci.filename)," | |
| 812 | + " search_score()," | |
| 813 | + " 'd'||blob.rid," | |
| 814 | + " (SELECT datetime(event.mtime) FROM event" | |
| 815 | + " WHERE objid=symbolic_name_to_rid(%Q))," | |
| 816 | + " search_snippet()" | |
| 817 | + " FROM foci CROSS JOIN blob" | |
| 818 | + " WHERE checkinID=symbolic_name_to_rid(%Q)" | |
| 819 | + " AND blob.uuid=foci.uuid" | |
| 820 | + " AND search_match(title('d',blob.rid,foci.filename)," | |
| 821 | + " body('d',blob.rid,foci.filename))" | |
| 822 | + " AND %z", | |
| 823 | + zBranch, zBranch, zBranch, glob_expr("foci.filename", zDocGlob) | |
| 824 | + ); | |
| 825 | + } | |
| 826 | + glob_free(pGlob); | |
| 819 | 827 | } |
| 820 | 828 | fossil_free(zDocGlob); |
| 821 | 829 | fossil_free(zDocBr); |
| 822 | 830 | } |
| 823 | 831 | if( (srchFlags & SRCH_WIKI)!=0 ){ |
| @@ -1880,59 +1888,68 @@ | ||
| 1880 | 1888 | ** and if the latest check-in on doc-br is in the unindexed set of |
| 1881 | 1889 | ** check-ins, then update all 'd' entries in FTSDOCS that have |
| 1882 | 1890 | ** changed. |
| 1883 | 1891 | */ |
| 1884 | 1892 | static void search_update_doc_index(void){ |
| 1885 | - const char *zDocBr = db_get("doc-branch","trunk"); | |
| 1886 | - int ckid = zDocBr ? symbolic_name_to_rid(zDocBr,"ci") : 0; | |
| 1887 | - double rTime; | |
| 1888 | - if( ckid==0 ) return; | |
| 1889 | - if( !db_exists("SELECT 1 FROM ftsdocs WHERE type='c' AND rid=%d" | |
| 1890 | - " AND NOT idxed", ckid) ) return; | |
| 1891 | - | |
| 1892 | - /* If we get this far, it means that changes to 'd' entries are | |
| 1893 | - ** required. */ | |
| 1894 | - rTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", ckid); | |
| 1893 | + const char *zDocBranches = db_get("doc-branch","trunk"); | |
| 1894 | + int i; | |
| 1895 | + Glob * pGlob = glob_create(zDocBranches) | |
| 1896 | + /* We're misusing a Glob as a list of comma-/space-delimited | |
| 1897 | + ** tokens. We're not actually doing glob matches here. */; | |
| 1898 | + if( !pGlob ) return; | |
| 1895 | 1899 | db_multi_exec( |
| 1896 | 1900 | "CREATE TEMP TABLE current_docs(rid INTEGER PRIMARY KEY, name);" |
| 1897 | 1901 | "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;" |
| 1898 | - "INSERT OR IGNORE INTO current_docs(rid, name)" | |
| 1899 | - " SELECT blob.rid, foci.filename FROM foci, blob" | |
| 1900 | - " WHERE foci.checkinID=%d AND blob.uuid=foci.uuid" | |
| 1901 | - " AND %z", | |
| 1902 | - ckid, glob_expr("foci.filename", db_get("doc-glob","")) | |
| 1903 | - ); | |
| 1904 | - db_multi_exec( | |
| 1905 | - "DELETE FROM ftsidx WHERE rowid IN" | |
| 1906 | - " (SELECT rowid FROM ftsdocs WHERE type='d'" | |
| 1907 | - " AND rid NOT IN (SELECT rid FROM current_docs))" | |
| 1908 | - ); | |
| 1909 | - db_multi_exec( | |
| 1910 | - "DELETE FROM ftsdocs WHERE type='d'" | |
| 1911 | - " AND rid NOT IN (SELECT rid FROM current_docs)" | |
| 1912 | - ); | |
| 1913 | - db_multi_exec( | |
| 1914 | - "INSERT OR IGNORE INTO ftsdocs(type,rid,name,idxed,label,bx,url,mtime)" | |
| 1915 | - " SELECT 'd', rid, name, 0," | |
| 1916 | - " title('d',rid,name)," | |
| 1917 | - " body('d',rid,name)," | |
| 1918 | - " printf('/doc/%T/%%s',urlencode(name))," | |
| 1919 | - " %.17g" | |
| 1920 | - " FROM current_docs", | |
| 1921 | - zDocBr, rTime | |
| 1922 | - ); | |
| 1923 | - db_multi_exec( | |
| 1924 | - "INSERT INTO ftsidx(rowid,title,body)" | |
| 1925 | - " SELECT rowid, label, bx FROM ftsdocs WHERE type='d' AND NOT idxed" | |
| 1926 | - ); | |
| 1927 | - db_multi_exec( | |
| 1928 | - "UPDATE ftsdocs SET" | |
| 1929 | - " idxed=1," | |
| 1930 | - " bx=NULL," | |
| 1931 | - " label='Document: '||label" | |
| 1932 | - " WHERE type='d' AND NOT idxed" | |
| 1933 | - ); | |
| 1902 | + ); | |
| 1903 | + for( i = 0; i < pGlob->nPattern; ++i ){ | |
| 1904 | + const char *zDocBr = pGlob->azPattern[i]; | |
| 1905 | + int ckid = symbolic_name_to_rid(zDocBr,"ci"); | |
| 1906 | + double rTime; | |
| 1907 | + if( !db_exists("SELECT 1 FROM ftsdocs WHERE type='c' AND rid=%d" | |
| 1908 | + " AND NOT idxed", ckid) ) continue; | |
| 1909 | + /* If we get this far, it means that changes to 'd' entries are | |
| 1910 | + ** required. */ | |
| 1911 | + rTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", ckid); | |
| 1912 | + db_multi_exec( | |
| 1913 | + "INSERT OR IGNORE INTO current_docs(rid, name)" | |
| 1914 | + " SELECT blob.rid, foci.filename FROM foci, blob" | |
| 1915 | + " WHERE foci.checkinID=%d AND blob.uuid=foci.uuid" | |
| 1916 | + " AND %z", | |
| 1917 | + ckid, glob_expr("foci.filename", db_get("doc-glob","")) | |
| 1918 | + ); | |
| 1919 | + db_multi_exec( | |
| 1920 | + "DELETE FROM ftsidx WHERE rowid IN" | |
| 1921 | + " (SELECT rowid FROM ftsdocs WHERE type='d'" | |
| 1922 | + " AND rid NOT IN (SELECT rid FROM current_docs))" | |
| 1923 | + ); | |
| 1924 | + db_multi_exec( | |
| 1925 | + "DELETE FROM ftsdocs WHERE type='d'" | |
| 1926 | + " AND rid NOT IN (SELECT rid FROM current_docs)" | |
| 1927 | + ); | |
| 1928 | + db_multi_exec( | |
| 1929 | + "INSERT OR IGNORE INTO ftsdocs(type,rid,name,idxed,label,bx,url,mtime)" | |
| 1930 | + " SELECT 'd', rid, name, 0," | |
| 1931 | + " title('d',rid,name)," | |
| 1932 | + " body('d',rid,name)," | |
| 1933 | + " printf('/doc/%T/%%s',urlencode(name))," | |
| 1934 | + " %.17g" | |
| 1935 | + " FROM current_docs", | |
| 1936 | + zDocBr, rTime | |
| 1937 | + ); | |
| 1938 | + db_multi_exec( | |
| 1939 | + "INSERT INTO ftsidx(rowid,title,body)" | |
| 1940 | + " SELECT rowid, label, bx FROM ftsdocs WHERE type='d' AND NOT idxed" | |
| 1941 | + ); | |
| 1942 | + db_multi_exec( | |
| 1943 | + "UPDATE ftsdocs SET" | |
| 1944 | + " idxed=1," | |
| 1945 | + " bx=NULL," | |
| 1946 | + " label='Document: '||label" | |
| 1947 | + " WHERE type='d' AND NOT idxed" | |
| 1948 | + ); | |
| 1949 | + } | |
| 1950 | + glob_free(pGlob); | |
| 1934 | 1951 | } |
| 1935 | 1952 | |
| 1936 | 1953 | /* |
| 1937 | 1954 | ** Deal with all of the unindexed 'c' terms in FTSDOCS |
| 1938 | 1955 | */ |
| 1939 | 1956 |
| --- src/search.c | |
| +++ src/search.c | |
| @@ -794,30 +794,38 @@ | |
| 794 | SRCHFLG_STATIC|SRCHFLG_HTML); |
| 795 | if( (srchFlags & SRCH_DOC)!=0 ){ |
| 796 | char *zDocGlob = db_get("doc-glob",""); |
| 797 | char *zDocBr = db_get("doc-branch","trunk"); |
| 798 | if( zDocGlob && zDocGlob[0] && zDocBr && zDocBr[0] ){ |
| 799 | db_multi_exec( |
| 800 | "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;" |
| 801 | ); |
| 802 | db_multi_exec( |
| 803 | "INSERT INTO x(label,url,score,id,date,snip)" |
| 804 | " SELECT printf('Document: %%s',title('d',blob.rid,foci.filename))," |
| 805 | " printf('/doc/%T/%%s',foci.filename)," |
| 806 | " search_score()," |
| 807 | " 'd'||blob.rid," |
| 808 | " (SELECT datetime(event.mtime) FROM event" |
| 809 | " WHERE objid=symbolic_name_to_rid(%Q))," |
| 810 | " search_snippet()" |
| 811 | " FROM foci CROSS JOIN blob" |
| 812 | " WHERE checkinID=symbolic_name_to_rid(%Q)" |
| 813 | " AND blob.uuid=foci.uuid" |
| 814 | " AND search_match(title('d',blob.rid,foci.filename)," |
| 815 | " body('d',blob.rid,foci.filename))" |
| 816 | " AND %z", |
| 817 | zDocBr, zDocBr, zDocBr, glob_expr("foci.filename", zDocGlob) |
| 818 | ); |
| 819 | } |
| 820 | fossil_free(zDocGlob); |
| 821 | fossil_free(zDocBr); |
| 822 | } |
| 823 | if( (srchFlags & SRCH_WIKI)!=0 ){ |
| @@ -1880,59 +1888,68 @@ | |
| 1880 | ** and if the latest check-in on doc-br is in the unindexed set of |
| 1881 | ** check-ins, then update all 'd' entries in FTSDOCS that have |
| 1882 | ** changed. |
| 1883 | */ |
| 1884 | static void search_update_doc_index(void){ |
| 1885 | const char *zDocBr = db_get("doc-branch","trunk"); |
| 1886 | int ckid = zDocBr ? symbolic_name_to_rid(zDocBr,"ci") : 0; |
| 1887 | double rTime; |
| 1888 | if( ckid==0 ) return; |
| 1889 | if( !db_exists("SELECT 1 FROM ftsdocs WHERE type='c' AND rid=%d" |
| 1890 | " AND NOT idxed", ckid) ) return; |
| 1891 | |
| 1892 | /* If we get this far, it means that changes to 'd' entries are |
| 1893 | ** required. */ |
| 1894 | rTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", ckid); |
| 1895 | db_multi_exec( |
| 1896 | "CREATE TEMP TABLE current_docs(rid INTEGER PRIMARY KEY, name);" |
| 1897 | "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;" |
| 1898 | "INSERT OR IGNORE INTO current_docs(rid, name)" |
| 1899 | " SELECT blob.rid, foci.filename FROM foci, blob" |
| 1900 | " WHERE foci.checkinID=%d AND blob.uuid=foci.uuid" |
| 1901 | " AND %z", |
| 1902 | ckid, glob_expr("foci.filename", db_get("doc-glob","")) |
| 1903 | ); |
| 1904 | db_multi_exec( |
| 1905 | "DELETE FROM ftsidx WHERE rowid IN" |
| 1906 | " (SELECT rowid FROM ftsdocs WHERE type='d'" |
| 1907 | " AND rid NOT IN (SELECT rid FROM current_docs))" |
| 1908 | ); |
| 1909 | db_multi_exec( |
| 1910 | "DELETE FROM ftsdocs WHERE type='d'" |
| 1911 | " AND rid NOT IN (SELECT rid FROM current_docs)" |
| 1912 | ); |
| 1913 | db_multi_exec( |
| 1914 | "INSERT OR IGNORE INTO ftsdocs(type,rid,name,idxed,label,bx,url,mtime)" |
| 1915 | " SELECT 'd', rid, name, 0," |
| 1916 | " title('d',rid,name)," |
| 1917 | " body('d',rid,name)," |
| 1918 | " printf('/doc/%T/%%s',urlencode(name))," |
| 1919 | " %.17g" |
| 1920 | " FROM current_docs", |
| 1921 | zDocBr, rTime |
| 1922 | ); |
| 1923 | db_multi_exec( |
| 1924 | "INSERT INTO ftsidx(rowid,title,body)" |
| 1925 | " SELECT rowid, label, bx FROM ftsdocs WHERE type='d' AND NOT idxed" |
| 1926 | ); |
| 1927 | db_multi_exec( |
| 1928 | "UPDATE ftsdocs SET" |
| 1929 | " idxed=1," |
| 1930 | " bx=NULL," |
| 1931 | " label='Document: '||label" |
| 1932 | " WHERE type='d' AND NOT idxed" |
| 1933 | ); |
| 1934 | } |
| 1935 | |
| 1936 | /* |
| 1937 | ** Deal with all of the unindexed 'c' terms in FTSDOCS |
| 1938 | */ |
| 1939 |
| --- src/search.c | |
| +++ src/search.c | |
| @@ -794,30 +794,38 @@ | |
| 794 | SRCHFLG_STATIC|SRCHFLG_HTML); |
| 795 | if( (srchFlags & SRCH_DOC)!=0 ){ |
| 796 | char *zDocGlob = db_get("doc-glob",""); |
| 797 | char *zDocBr = db_get("doc-branch","trunk"); |
| 798 | if( zDocGlob && zDocGlob[0] && zDocBr && zDocBr[0] ){ |
| 799 | Glob * pGlob = glob_create(zDocBr) |
| 800 | /* We're misusing a Glob as a list of comma-/space-delimited |
| 801 | ** tokens. We're not actually doing glob matches here. */; |
| 802 | int i; |
| 803 | db_multi_exec( |
| 804 | "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;" |
| 805 | ); |
| 806 | for( i = 0; i < pGlob->nPattern; ++i ){ |
| 807 | const char * zBranch = pGlob->azPattern[i]; |
| 808 | db_multi_exec( |
| 809 | "INSERT INTO x(label,url,score,id,date,snip)" |
| 810 | " SELECT printf('Document: %%s',title('d',blob.rid,foci.filename))," |
| 811 | " printf('/doc/%T/%%s',foci.filename)," |
| 812 | " search_score()," |
| 813 | " 'd'||blob.rid," |
| 814 | " (SELECT datetime(event.mtime) FROM event" |
| 815 | " WHERE objid=symbolic_name_to_rid(%Q))," |
| 816 | " search_snippet()" |
| 817 | " FROM foci CROSS JOIN blob" |
| 818 | " WHERE checkinID=symbolic_name_to_rid(%Q)" |
| 819 | " AND blob.uuid=foci.uuid" |
| 820 | " AND search_match(title('d',blob.rid,foci.filename)," |
| 821 | " body('d',blob.rid,foci.filename))" |
| 822 | " AND %z", |
| 823 | zBranch, zBranch, zBranch, glob_expr("foci.filename", zDocGlob) |
| 824 | ); |
| 825 | } |
| 826 | glob_free(pGlob); |
| 827 | } |
| 828 | fossil_free(zDocGlob); |
| 829 | fossil_free(zDocBr); |
| 830 | } |
| 831 | if( (srchFlags & SRCH_WIKI)!=0 ){ |
| @@ -1880,59 +1888,68 @@ | |
| 1888 | ** and if the latest check-in on doc-br is in the unindexed set of |
| 1889 | ** check-ins, then update all 'd' entries in FTSDOCS that have |
| 1890 | ** changed. |
| 1891 | */ |
| 1892 | static void search_update_doc_index(void){ |
| 1893 | const char *zDocBranches = db_get("doc-branch","trunk"); |
| 1894 | int i; |
| 1895 | Glob * pGlob = glob_create(zDocBranches) |
| 1896 | /* We're misusing a Glob as a list of comma-/space-delimited |
| 1897 | ** tokens. We're not actually doing glob matches here. */; |
| 1898 | if( !pGlob ) return; |
| 1899 | db_multi_exec( |
| 1900 | "CREATE TEMP TABLE current_docs(rid INTEGER PRIMARY KEY, name);" |
| 1901 | "CREATE VIRTUAL TABLE IF NOT EXISTS temp.foci USING files_of_checkin;" |
| 1902 | ); |
| 1903 | for( i = 0; i < pGlob->nPattern; ++i ){ |
| 1904 | const char *zDocBr = pGlob->azPattern[i]; |
| 1905 | int ckid = symbolic_name_to_rid(zDocBr,"ci"); |
| 1906 | double rTime; |
| 1907 | if( !db_exists("SELECT 1 FROM ftsdocs WHERE type='c' AND rid=%d" |
| 1908 | " AND NOT idxed", ckid) ) continue; |
| 1909 | /* If we get this far, it means that changes to 'd' entries are |
| 1910 | ** required. */ |
| 1911 | rTime = db_double(0.0, "SELECT mtime FROM event WHERE objid=%d", ckid); |
| 1912 | db_multi_exec( |
| 1913 | "INSERT OR IGNORE INTO current_docs(rid, name)" |
| 1914 | " SELECT blob.rid, foci.filename FROM foci, blob" |
| 1915 | " WHERE foci.checkinID=%d AND blob.uuid=foci.uuid" |
| 1916 | " AND %z", |
| 1917 | ckid, glob_expr("foci.filename", db_get("doc-glob","")) |
| 1918 | ); |
| 1919 | db_multi_exec( |
| 1920 | "DELETE FROM ftsidx WHERE rowid IN" |
| 1921 | " (SELECT rowid FROM ftsdocs WHERE type='d'" |
| 1922 | " AND rid NOT IN (SELECT rid FROM current_docs))" |
| 1923 | ); |
| 1924 | db_multi_exec( |
| 1925 | "DELETE FROM ftsdocs WHERE type='d'" |
| 1926 | " AND rid NOT IN (SELECT rid FROM current_docs)" |
| 1927 | ); |
| 1928 | db_multi_exec( |
| 1929 | "INSERT OR IGNORE INTO ftsdocs(type,rid,name,idxed,label,bx,url,mtime)" |
| 1930 | " SELECT 'd', rid, name, 0," |
| 1931 | " title('d',rid,name)," |
| 1932 | " body('d',rid,name)," |
| 1933 | " printf('/doc/%T/%%s',urlencode(name))," |
| 1934 | " %.17g" |
| 1935 | " FROM current_docs", |
| 1936 | zDocBr, rTime |
| 1937 | ); |
| 1938 | db_multi_exec( |
| 1939 | "INSERT INTO ftsidx(rowid,title,body)" |
| 1940 | " SELECT rowid, label, bx FROM ftsdocs WHERE type='d' AND NOT idxed" |
| 1941 | ); |
| 1942 | db_multi_exec( |
| 1943 | "UPDATE ftsdocs SET" |
| 1944 | " idxed=1," |
| 1945 | " bx=NULL," |
| 1946 | " label='Document: '||label" |
| 1947 | " WHERE type='d' AND NOT idxed" |
| 1948 | ); |
| 1949 | } |
| 1950 | glob_free(pGlob); |
| 1951 | } |
| 1952 | |
| 1953 | /* |
| 1954 | ** Deal with all of the unindexed 'c' terms in FTSDOCS |
| 1955 | */ |
| 1956 |
+4
-3
| --- src/setup.c | ||
| +++ src/setup.c | ||
| @@ -2187,14 +2187,15 @@ | ||
| 2187 | 2187 | @ <tr><td>*<td><td>Search all checked-in files</tr> |
| 2188 | 2188 | @ <tr><td><i>(blank)</i><td> |
| 2189 | 2189 | @ <td>Search nothing. (Disables document search).</tr> |
| 2190 | 2190 | @ </table> |
| 2191 | 2191 | @ <hr> |
| 2192 | - entry_attribute("Document Branch", 20, "doc-branch", "db", "trunk", 0); | |
| 2192 | + entry_attribute("Document Branches", 20, "doc-branch", "db", "trunk", 0); | |
| 2193 | 2193 | @ <p>When searching documents, use the versions of the files found at the |
| 2194 | - @ type of the "Document Branch" branch. Recommended value: "trunk". | |
| 2195 | - @ Document search is disabled if blank. | |
| 2194 | + @ type of the "Document Branches" branch. Recommended value: "trunk". | |
| 2195 | + @ Document search is disabled if blank. It may be a list of branch names | |
| 2196 | + @ separated by spaces and/or commas. | |
| 2196 | 2197 | @ <hr> |
| 2197 | 2198 | onoff_attribute("Search Check-in Comments", "search-ci", "sc", 0, 0); |
| 2198 | 2199 | @ <br> |
| 2199 | 2200 | onoff_attribute("Search Documents", "search-doc", "sd", 0, 0); |
| 2200 | 2201 | @ <br> |
| 2201 | 2202 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -2187,14 +2187,15 @@ | |
| 2187 | @ <tr><td>*<td><td>Search all checked-in files</tr> |
| 2188 | @ <tr><td><i>(blank)</i><td> |
| 2189 | @ <td>Search nothing. (Disables document search).</tr> |
| 2190 | @ </table> |
| 2191 | @ <hr> |
| 2192 | entry_attribute("Document Branch", 20, "doc-branch", "db", "trunk", 0); |
| 2193 | @ <p>When searching documents, use the versions of the files found at the |
| 2194 | @ type of the "Document Branch" branch. Recommended value: "trunk". |
| 2195 | @ Document search is disabled if blank. |
| 2196 | @ <hr> |
| 2197 | onoff_attribute("Search Check-in Comments", "search-ci", "sc", 0, 0); |
| 2198 | @ <br> |
| 2199 | onoff_attribute("Search Documents", "search-doc", "sd", 0, 0); |
| 2200 | @ <br> |
| 2201 |
| --- src/setup.c | |
| +++ src/setup.c | |
| @@ -2187,14 +2187,15 @@ | |
| 2187 | @ <tr><td>*<td><td>Search all checked-in files</tr> |
| 2188 | @ <tr><td><i>(blank)</i><td> |
| 2189 | @ <td>Search nothing. (Disables document search).</tr> |
| 2190 | @ </table> |
| 2191 | @ <hr> |
| 2192 | entry_attribute("Document Branches", 20, "doc-branch", "db", "trunk", 0); |
| 2193 | @ <p>When searching documents, use the versions of the files found at the |
| 2194 | @ type of the "Document Branches" branch. Recommended value: "trunk". |
| 2195 | @ Document search is disabled if blank. It may be a list of branch names |
| 2196 | @ separated by spaces and/or commas. |
| 2197 | @ <hr> |
| 2198 | onoff_attribute("Search Check-in Comments", "search-ci", "sc", 0, 0); |
| 2199 | @ <br> |
| 2200 | onoff_attribute("Search Documents", "search-doc", "sd", 0, 0); |
| 2201 | @ <br> |
| 2202 |