git-repo/subcmds
Dan Willemsen 4350791e0d On project cleanup, don't remove nested projects
When there are nested projects in a manifest, like on AOSP right now:

<project path="build" name="platform/build" />
<project path="build/blueprint" name="platform/build/blueprint" />
<project path="build/kati" name="platform/build/kati" />
<project path="build/soong" name="platform/build/soong" />

And the top "build" project is removed (or renamed to remove the
nesting), repo just wipes away everything under build/ and re-creates
the projects that are still there. But it only checks to see if the
build/ project is dirty, so if there are dirty files in a nested
project, they'll just be blown away, and a fresh worktree checked out.

Instead, behave similarly to how `git clean -dxf` behaves and preserve
any subdirectories that have git repositories in them. This isn't as
strict as git -- it does not check to see if the '.git' entry is a
readable gitdir, just whether an entry named '.git' exists.

If it encounters any errors removing files, we'll print them all out to
stderr and tell the user that we were unable to clean up the obsolete
project, that they should clean it up manually, then sync again.

Change-Id: I2f6a7dd205a8e0b7590ca5369e9b0ba21d5a6f77
2016-09-20 17:16:12 -07:00
..
__init__.py Some fixes for supporting python3 2013-04-18 21:35:49 +05:30
abandon.py Change print statements to work in python3 2012-11-13 17:33:56 -08:00
branches.py Provide detail print-out when not all projects of a branch are current. 2014-07-11 10:56:03 -07:00
checkout.py Change print statements to work in python3 2012-11-13 17:33:56 -08:00
cherry_pick.py Fix 'repo cherry-pick' to avoid hanging on commit-msg update. 2015-06-22 08:00:20 -04:00
diff.py Option for 'repo diff' to generate output suitable for 'patch' cmd 2012-04-13 09:20:10 -07:00
diffmanifests.py diffmanifests: support custom git pretty format strings 2016-04-21 18:36:11 +00:00
download.py Exit 1 if repo download -c fails 2014-10-17 15:45:57 -04:00
forall.py Add --inverse-regex option to forall subcommand 2016-04-05 07:28:27 +00:00
gitc_delete.py GITC: Add repo gitc-delete command. 2015-10-01 21:05:17 +00:00
gitc_init.py Fix gitc-init behavior 2015-10-07 15:43:22 -07:00
grep.py Tidy up code formatting a bit more 2012-11-14 12:09:38 +09:00
help.py Add GitcClientCommand class for GITC-specific commands 2015-09-29 13:46:34 -07:00
info.py Prevent repo info from crashing when default element doesn't exist. 2015-07-27 16:56:31 -07:00
init.py init: Add --no-clone-bundle option 2016-08-15 09:51:48 +09:00
list.py Support filtering by group on forall and list subcmd 2015-07-30 12:59:35 -05:00
manifest.py Change print statements to work in python3 2012-11-13 17:33:56 -08:00
overview.py Some fixes for supporting python3 2013-04-18 21:35:49 +05:30
prune.py Change print statements to work in python3 2012-11-13 17:33:56 -08:00
rebase.py Add option to rebase onto project's manifest version 2016-01-28 10:20:03 -08:00
selfupdate.py Change print statements to work in python3 2012-11-13 17:33:56 -08:00
smartsync.py Clean up imports 2012-09-18 09:54:57 +02:00
stage.py stage: replace filter on lambda with list comprehension 2013-05-08 06:37:15 +01:00
start.py Consider local project to be default for 'repo start' 2016-09-14 00:17:45 -04:00
status.py status: lose dependence on StringIO 2015-04-04 21:21:49 +01:00
sync.py On project cleanup, don't remove nested projects 2016-09-20 17:16:12 -07:00
upload.py upload: short circuit when nothing is pending 2016-09-14 00:16:37 -04:00
version.py Change print statements to work in python3 2012-11-13 17:33:56 -08:00