threads / discuss / 39161

Cleaning projects with submodules

Subject: Cleaning projects with submodules

## tl;dr

2 messages between Apr 25, 2015 and Apr 27, 2015.

replies: 1people: 2as markdown or json

Simon Richter· Apr 25, 2015, 21:36 UTC · lore
Hi,

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?

   Simon
Heiko Voigt· Apr 27, 2015, 12:47 UTC · re: Simon Richter · lore

Re: Cleaning projects with submodules

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"
   done

It does a little more, since it unconditionally removes all untracked files that are not ignored.

Cheers Heiko

← back to recent threads