mirror of
https://github.com/git/git.git
synced 2024-11-20 02:14:04 +01:00
Add check program "git-check-racy"
This will help counting the racily clean paths, but it should be useless for daily use. Do not even enable it in the makefile. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
520cd3eca5
commit
42f774063d
6
Makefile
6
Makefile
@ -194,7 +194,11 @@ PROGRAMS = \
|
||||
git-update-server-info$X \
|
||||
git-upload-pack$X git-verify-pack$X \
|
||||
git-pack-redundant$X git-var$X \
|
||||
git-describe$X git-merge-tree$X git-blame$X git-imap-send$X
|
||||
git-describe$X git-merge-tree$X git-blame$X git-imap-send$X \
|
||||
$(EXTRA_PROGRAMS)
|
||||
|
||||
# Empty...
|
||||
EXTRA_PROGRAMS =
|
||||
|
||||
BUILT_INS = \
|
||||
git-format-patch$X git-show$X git-whatchanged$X \
|
||||
|
28
check-racy.c
Normal file
28
check-racy.c
Normal file
@ -0,0 +1,28 @@
|
||||
#include "cache.h"
|
||||
|
||||
int main(int ac, char **av)
|
||||
{
|
||||
int i;
|
||||
int dirty, clean, racy;
|
||||
|
||||
dirty = clean = racy = 0;
|
||||
read_cache();
|
||||
for (i = 0; i < active_nr; i++) {
|
||||
struct cache_entry *ce = active_cache[i];
|
||||
struct stat st;
|
||||
|
||||
if (lstat(ce->name, &st)) {
|
||||
error("lstat(%s): %s", ce->name, strerror(errno));
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ce_match_stat(ce, &st, 0))
|
||||
dirty++;
|
||||
else if (ce_match_stat(ce, &st, 2))
|
||||
racy++;
|
||||
else
|
||||
clean++;
|
||||
}
|
||||
printf("dirty %d, clean %d, racy %d\n", dirty, clean, racy);
|
||||
return 0;
|
||||
}
|
12
read-cache.c
12
read-cache.c
@ -169,9 +169,11 @@ static int ce_match_stat_basic(struct cache_entry *ce, struct stat *st)
|
||||
return changed;
|
||||
}
|
||||
|
||||
int ce_match_stat(struct cache_entry *ce, struct stat *st, int ignore_valid)
|
||||
int ce_match_stat(struct cache_entry *ce, struct stat *st, int options)
|
||||
{
|
||||
unsigned int changed;
|
||||
int ignore_valid = options & 01;
|
||||
int assume_racy_is_modified = options & 02;
|
||||
|
||||
/*
|
||||
* If it's marked as always valid in the index, it's
|
||||
@ -200,8 +202,12 @@ int ce_match_stat(struct cache_entry *ce, struct stat *st, int ignore_valid)
|
||||
*/
|
||||
if (!changed &&
|
||||
index_file_timestamp &&
|
||||
index_file_timestamp <= ntohl(ce->ce_mtime.sec))
|
||||
changed |= ce_modified_check_fs(ce, st);
|
||||
index_file_timestamp <= ntohl(ce->ce_mtime.sec)) {
|
||||
if (assume_racy_is_modified)
|
||||
changed |= DATA_CHANGED;
|
||||
else
|
||||
changed |= ce_modified_check_fs(ce, st);
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user