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.
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.
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.