Re: Cleaning projects with submodules
From: Heiko Voigt <hidden>
Date: 2016-06-15 23:04:33
Hi, On Sat, Apr 25, 2015 at 11:36:25PM +0200, Simon Richter wrote:
I'm trying to set up a continuous integration build for Boost, which uses massive amounts of submodules, and keep running into problems when running "git clean" in the toplevel project. When I switch to a version where a submodule has been removed (e.g. an earlier version), "git clean -dx" will not remove the submodule's directory, because it has its own .git directory. Using a single -f flag, the process fails (because directories containing .git directories are no longer skipped), and using -ff removes all submodules (which is overkill). Is there a good way to clean a project, leaving valid submodules in place (these are then switched to the new tip and cleaned in separate commands) while removing submodules that are no longer referenced?
Unfortunately there is no really nice way for that yet. Safely removing
submodule ist still under development.
Here is a snippet that I used on a CI server for this purpose:
git status --porcelain | grep "^?? " | sed -e 's/^?? //' | \
while read i; do
rm -rf "$i"
done
It does a little more, since it unconditionally removes all untracked files
that are not ignored.
Cheers Heiko