@@ -136,15 +136,22 @@
136 136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#define CKSIG_SETMTIME 0x004 /* Set mtime to last check-out time */
137 137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
138 138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
#endif /* INTERFACE */
139 139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
140 140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** Look at every VFILE entry with the given vid and update
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** VFILE.CHNGED field according to whether or not
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the file has changed. 0 means no change. 1 means edited. 2 means
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** the file has changed due to a merge. 3 means the file was added
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** by a merge.
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Look at every VFILE entry with the given vid and update VFILE.CHNGED field
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** according to whether or not the file has changed.
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - 0 means no change.
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - 1 means edited.
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - 2 means changed due to a merge.
146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - 3 means added by a merge.
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - 4 means changed due to an integrate merge.
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - 5 means added by an integrate merge.
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - 6 means became executable but has unmodified contents.
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - 7 means became a symlink whose target equals its old contents.
151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - 8 means lost executable status but has unmodified contents.
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** - 9 means lost symlink status and has contents equal to its old target.
146 153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
147 154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If VFILE.DELETED is true or if VFILE.RID is zero, then the file was either
148 155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** removed from configuration management via "fossil rm" or added via
149 156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** "fossil add", respectively, and in both cases we always know that
150 157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** the file has changed without having the check the size, mtime,
@@ -170,18 +177,22 @@
170 177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int useMtime = (cksigFlags & CKSIG_SHA1)==0
171 178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
&& db_get_boolean("mtime-changes", 1);
172 179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
173 180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_begin_transaction();
174 181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_prepare(&q, "SELECT id, %Q || pathname,"
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " vfile.mrid, deleted, chnged, uuid, size, mtime"
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " vfile.mrid, deleted, chnged, uuid, size, mtime,"
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " CASE WHEN isexe THEN %d WHEN islink THEN %d ELSE %d END"
176 184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" FROM vfile LEFT JOIN blob ON vfile.mrid=blob.rid"
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- " WHERE vid=%d ", g.zLocalRoot, vid);
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE vid=%d ", g.zLocalRoot, PERM_EXE, PERM_LNK, PERM_REG,
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ vid);
178 187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
179 188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int id, rid, isDeleted;
180 189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zName;
181 190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int chnged = 0;
182 191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int oldChnged;
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int origPerm;
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int currentPerm;
183 194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 oldMtime;
184 195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 currentMtime;
185 196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 origSize;
186 197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
i64 currentSize;
187 198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -192,10 +203,12 @@
192 203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
oldChnged = chnged = db_column_int(&q, 4);
193 204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
oldMtime = db_column_int64(&q, 7);
194 205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
origSize = db_column_int64(&q, 6);
195 206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
currentSize = file_wd_size(zName);
196 207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
currentMtime = file_wd_mtime(0);
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ origPerm = db_column_int(&q, 8);
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ currentPerm = file_wd_perm(zName);
197 210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( chnged==0 && (isDeleted || rid==0) ){
198 211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* "fossil rm" or "fossil add" always change the file */
199 212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
chnged = 1;
200 213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}else if( !file_wd_isfile_or_link(0) && currentSize>=0 ){
201 214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( cksigFlags & CKSIG_ENOTFILE ){
@@ -245,10 +258,25 @@
245 258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
file_set_mtime(zName, desiredMtime);
246 259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
currentMtime = file_wd_mtime(zName);
247 260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
248 261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
249 262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #ifndef _WIN32
264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( chnged==0 || chnged==6 || chnged==7 || chnged==8 || chnged==9 ){
265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( origPerm == currentPerm ){
266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ chnged = 0;
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( currentPerm == PERM_EXE ){
268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ chnged = 6;
269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( currentPerm == PERM_LNK ){
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ chnged = 7;
271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( origPerm == PERM_EXE ){
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ chnged = 8;
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else if( origPerm == PERM_LNK ){
274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ chnged = 9;
275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #endif
250 278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( currentMtime!=oldMtime || chnged!=oldChnged ){
251 279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_multi_exec("UPDATE vfile SET mtime=%lld, chnged=%d WHERE id=%d",
252 280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
currentMtime, chnged, id);
253 281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
254 282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
255 283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!