jedbrown / git-fat

Simple way to handle fat files without committing them to git, supports synchronization using rsync
BSD 2-Clause "Simplified" License
622 stars 136 forks source link

git-fat filter-clean: cache already exists #80

Open wgeorg opened 6 years ago

wgeorg commented 6 years ago

Hi,

I'm using a git repo with git-fat for my large files. When I run "git status" the following message appears

git-fat filter-clean: cache already exists .git/fat/objects/da39a3ee5e6b4b0d3255bfef95601890afd80709

What does this mean and how can this be resolved? Commit, push and pull work without any problems.

jedbrown commented 6 years ago

You must have set the environment variable GIT_FAT_VERBOSE. This is just informing you that the clean filter (to compute what Git should store in the repository) has already cached this object. It's harmless diagnostic information.

rob-debug commented 4 years ago

i'm seeing the same thing. I'm running into an issue where any command i run (local or remote) has a long response time. It takes about 15-20mins to complete any [git status, git pull, git stash etc.] This is coming off a fresh clone of the repo

When i do a git pull it runs through each object with

git-fat filter-clean: cache already exists .git/fat/objects/1c5d3d439f4382a6b5ce76d9a2909fa6a2ee090d

and then exits with

error: cannot pull with rebase: Your index contains uncommitted changes. error: please commit or stash them.

When i do git checkout -- . it then runs through each object with

git-fat filter-smudge: restoring from .git/fat/objects/1c5d3d439f4382a6b5ce76d9a2909fa6a2ee090d

When I do git stash it runs through each object with

git-fat filter-clean: cache already exists .git/fat/objects/1c5d3d439f4382a6b5ce76d9a2909fa6a2ee090d

I'm not really sure what is happening here, because since this is a fresh clone there are no changes that I've made, but even when i dump whatever changes it think has happened it puts me in this loop. And when i type git status it says "your branch is up to date with 'origin/branch'"

arithboy commented 4 years ago

I find the solution from https://git-scm.com/docs/racy-git This is script I use:

#!/bin/sh

# from https://git-scm.com/docs/racy-git/en
export GIT_FAT_VERBOSE=1

git status 2>&1 | grep "cache already exists" | awk '{print $6}' | xargs -I {}  ls -al {} |awk '{print $5}'| xargs -I {} find */ -size {}c > /tmp/list

date > /tmp/datestamp
cat /tmp/list | xargs touch -r /tmp/datestamp
cat /tmp/list | git update-index --stdin
touch -r /tmp/datestamp .git/index

rm /tmp/datestamp /tmp/list

git status
git status