Go to file
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
docs Improve documentation of manifest server RPC methods 2016-04-13 17:55:36 +09:00
hooks Update commit-msg hook to version from Gerrit 2.12.1 2016-03-14 10:08:33 +09:00
subcmds On project cleanup, don't remove nested projects 2016-09-20 17:16:12 -07:00
tests Fix gitc-init behavior 2015-10-07 15:43:22 -07:00
.flake8 Replace pylint with pyflakes/flake8 2016-09-14 09:49:02 +02:00
.gitattributes Adds additional crlf clobber avoidance. 2016-06-22 08:36:45 +00:00
.gitignore Add repoc to the .gitignore file 2013-03-08 01:18:08 +00:00
.mailmap Update mailmap 2016-09-02 11:12:28 +09:00
.project Set correct name in PyDev and Eclipse project config 2013-04-19 09:35:43 +09:00
.pydevproject Set correct name in PyDev and Eclipse project config 2013-04-19 09:35:43 +09:00
color.py Pylint and PEP8 fixes for color.py 2015-03-28 21:12:27 +00:00
command.py repo: Repo does not always handle '.' parameter correctly 2016-04-08 00:07:52 +00:00
COPYING Initial Contribution 2008-10-21 07:00:00 -07:00
editor.py Change print statements to work in python3 2012-11-13 17:33:56 -08:00
error.py error: fix typos 2015-06-04 00:21:16 +00:00
git_command.py Add rpc: to default protocol whitelist 2016-02-26 18:53:54 -08:00
git_config.py Merge "Repo: improve error detection for new ssh connections" 2016-09-20 08:06:12 +00:00
git_refs.py Fix some python3 encoding issues 2013-11-21 06:03:22 +00:00
git_ssh Don't allow git fetch to start ControlMaster 2010-10-29 08:15:14 -07:00
gitc_utils.py gitc: Lower concurrent ls-projects requests 2016-08-23 14:19:00 -07:00
main.py pylint: Fix unused-{argument,variable} warning 2016-06-21 11:48:57 -07:00
manifest_xml.py pylint: fix indentation in manifest_xml 2016-06-17 16:45:48 -07:00
pager.py Change print statements to work in python3 2012-11-13 17:33:56 -08:00
progress.py Support units in progress messages 2011-09-19 14:52:57 -07:00
project.py Merge "Fix submodule checkout error when using sync-s option" 2016-09-14 07:45:50 +00:00
pyversion.py Move Python version checking to a separate module 2013-05-23 07:28:53 +00:00
README.md improve docs 2016-08-16 00:14:28 -04:00
repo repo: add comment for updating maintainer keys 2016-09-14 01:28:30 -04:00
SUBMITTING_PATCHES.md Replace pylint with pyflakes/flake8 2016-09-14 09:49:02 +02:00
trace.py Change print statements to work in python3 2012-11-13 17:33:56 -08:00
wrapper.py Add wrapper module 2014-01-30 15:17:09 -08:00

repo

Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workflow. Repo is not meant to replace Git, only to make it easier to work with Git. The repo command is an executable Python script that you can put anywhere in your path.