From 8ae0a8c514dc492de8aadf3ca6bb4ad55e33960e Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 5 May 2005 14:38:25 +0200 Subject: [PATCH] git and symlinks as tracked content Allow to store and track symlink in the repository. A symlink is stored the same way as a regular file, only with the appropriate mode bits set. The symlink target is therefore stored in a blob object. This will hopefully make our udev repository fully functional. :) Signed-off-by: Kay Sievers Signed-off-by: Linus Torvalds --- read-cache.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'read-cache.c') diff --git a/read-cache.c b/read-cache.c index 53f1da815b..5703f30b6a 100644 --- a/read-cache.c +++ b/read-cache.c @@ -13,6 +13,16 @@ int cache_match_stat(struct cache_entry *ce, struct stat *st) { unsigned int changed = 0; + switch (ntohl(ce->ce_mode) & S_IFMT) { + case S_IFREG: + changed |= !S_ISREG(st->st_mode) ? TYPE_CHANGED : 0; + break; + case S_IFLNK: + changed |= !S_ISLNK(st->st_mode) ? TYPE_CHANGED : 0; + break; + default: + die("internal error: ce_mode is %o", ntohl(ce->ce_mode)); + } if (ce->ce_mtime.sec != htonl(st->st_mtime)) changed |= MTIME_CHANGED; if (ce->ce_ctime.sec != htonl(st->st_ctime)) -- cgit v1.2.3