[Solved]-Git deleting things mysteriously (edit: actually django-storages)

6👍

Okay ladies and gents I have a public apology to make. Git was not to blame. I will leave this question here as a lesson to other people who may pass the same way.

We were using the django-storages backend (a ‘plugin’ to enable Django to store files on Amazon S3 transparently). This has a test called HashPathStorageTest. The tear-down this test deletes settings.MEDIA_ROOT, which was set to ./static. This is faulty, in my opinion. It has no business blanket-deleting files that it didn’t create.

We were running our tests, like good citizens, before checking in. Most of the time we ran only tests for our code, but occasionally we ran tests for the whole project (including 3rd party plugins). This was producing the behaviour in the question. Because we ran test and git things together, it wasn’t easy to pin down which command was doing the deleting (and the deleted files only showed up when we ran git status).

So problem solved. Again, sorry for casting aspersions on the good name of Git!

👤Joe

0👍

This would appear to be git deciding to merge to a branch which A) has the folder deleted B) it thinks is more recent than the branch you are merging to. Might there be a machine which has american date type and one which has european date type? Or does any of your testing involve resetting machine date time?

I would

a) check the regions of all machines included in your developement.
b) choose a fixed point in your development, copy the files out and create a new reprository and go from there.

👤Ian P

0👍

Ok so this just happened – I’m adding it a separate answer because its so silly. We have a repositiory for our SQL scripts and a new developer accidentally edited .gitignore to contain *.sql – needless to say changes stopped being propagated on that branch – and fortunately it was caught prior to any signifficant loss of development time. However its not inconcievable that this could produce the issues above – so have you checked your git directive files? If the folder is ignored (and .gitignore is in there as well – i.e ignored) it could dissapear and reappear almost by magic.

👤Ian P

Leave a comment