Git and vendor/rails

This is really a git question but the problem is with rails using git
and
others may have come across the problem.

I have a branch on my application’s git repository with edge rails as a
subproject checked out into vendor/rails. this allows me to keep my
application edge-compliant by checking out the branch (which creates the
rails folder in vendor), pulling the latest edge rails and running my
tests. This works fine.

The problem comes when I checkout the master again (which does not have
a
vendor/rails folder). Git removes the contents of vendor/rails but
leaves an
empty rails folder. The application will not run, the empty rails folder
confuses it, so I have to manually delete the folder. Obviously I can
have
a simple script to solve the problem but I wonder if there is a way of
telling git to remove the empty folder. Or perhaps there is an
alternative.
I have googled in vain.

Any ideas?

Colin

I think you will not be able make git to do it. Git tracks content not
files and folders and it will not delete folder. You can use post-
checkout hook to do that for you.

Regards,
Bosko

2009/3/28 Bosko I. [email protected]

I think you will not be able make git to do it. Git tracks content not
files and folders and it will not delete folder. You can use post-
checkout hook to do that for you.

Yes, of course. I have not used hooks previously. For anyone that is
interested all I had to do is make a script
called post-checkout in .git/hooks with the following contents.

#!/bin/sh

remove vendor/rails directory if not specified in .gitmodules

if [ -d vendor/rails ]
then

vendor/rails exists

if ! grep -s -q vendor/rails .gitmodules
then
# vendor/rails not in .gitmodules, remove vendor/rails
rmdir vendor/rails
fi
fi

Yes I know this could probably be done much more concisely, but it is
only
the third script I have written so I like to keep it simple and with
comments so that I can understand it.

Colin

Regards,