1 This patch causes the --cvs-exclude option to prefix the names listed
2 in each dir's CVS/Entries file as per-dir includes before the dir's list
3 of excludes taken from the .cvsignore file.
5 --- exclude.c 7 Apr 2005 18:06:06 -0000 1.115
6 +++ exclude.c 7 Apr 2005 18:06:34 -0000
7 @@ -442,6 +442,14 @@ void *push_local_filters(const char *dir
8 set_filter_dir(dir, dirlen);
11 + if (ex->match_flags & MATCHFLG_CVS_IGNORE
12 + && strlcpy(dirbuf + dirbuf_len, "CVS/Entries",
13 + MAXPATHLEN - dirbuf_len) < MAXPATHLEN - dirbuf_len) {
14 + /* Start by adding include rules for all the names in CVS/Entries. */
15 + parse_filter_file(lp, dirbuf,
16 + MATCHFLG_NO_PREFIXES | MATCHFLG_INCLUDE,
19 if (strlcpy(dirbuf + dirbuf_len, ex->pattern,
20 MAXPATHLEN - dirbuf_len) < MAXPATHLEN - dirbuf_len) {
21 parse_filter_file(lp, dirbuf, ex->match_flags,
22 @@ -958,6 +966,7 @@ void parse_filter_file(struct filter_lis
23 char line[MAXPATHLEN+MAX_RULE_PREFIX+1]; /* +1 for trailing slash. */
24 char *eob = line + sizeof line - 1;
25 int word_split = mflags & MATCHFLG_WORD_SPLIT;
26 + int slash_parse = xflags & XFLG_CVS_ENTRIES ? 1 : 0;
28 if (!fname || !*fname)
30 @@ -1002,6 +1011,29 @@ void parse_filter_file(struct filter_lis
34 + switch (slash_parse) {
49 + if (ch == '\n' || ch == '\r') {
57 if (word_split && isspace(ch))
59 if (eol_nulls? !ch : (ch == '\n' || ch == '\r'))
60 @@ -1011,6 +1043,7 @@ void parse_filter_file(struct filter_lis
66 rprintf(FERROR, "discarding over-long filter: %s...\n", line);
68 --- rsync.h 28 Mar 2005 17:08:47 -0000 1.261
69 +++ rsync.h 7 Apr 2005 18:06:34 -0000
71 #define XFLG_FATAL_ERRORS (1<<0)
72 #define XFLG_OLD_PREFIXES (1<<1)
73 #define XFLG_ANCHORED2ABS (1<<2)
74 +#define XFLG_CVS_ENTRIES (1<<3)
76 #define PERMS_REPORT (1<<0)
77 #define PERMS_SKIP_MTIME (1<<1)