Re: Cleaning projects with submodules
- From
Heiko Voigt <hvoigt@hvoigt.net>
- Date
- Apr 27, 2015, 12:47 UTC
- Message-ID
- <20150427124729.GA5399@sandbox-ub1410>
- In-Reply-To
- <553C08D9.9000907@hogyros.de>
Hi,
On Sat, Apr 25, 2015 at 11:36:25PM +0200, Simon Richter wrote:
Show 14 quoted lines
> 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"
doneIt does a little more, since it unconditionally removes all untracked files that are not ignored.
Cheers Heiko