Chromium Code Reviews| Index: tools/git-sync-deps |
| diff --git a/tools/git-sync-deps b/tools/git-sync-deps |
| index 7a305f493bd8894be0a9a329ac1d9bd2db6949e0..55f6a07854c68e580670d32006b12dd37ab1e36e 100755 |
| --- a/tools/git-sync-deps |
| +++ b/tools/git-sync-deps |
| @@ -64,6 +64,23 @@ def git_repository_sync_is_disabled(git, directory): |
| return False |
| +def is_git_toplevel(git, directory): |
| + """Return true iff the directory is the top level of a Git repository. |
| + |
| + Args: |
| + git (string) the git executable |
| + |
| + directory (string) the path into which the repository |
| + is expected to be checked out. |
| + """ |
| + try: |
| + toplevel = subprocess.check_output( |
| + [git, 'rev-parse', '--show-toplevel'], cwd=directory).strip() |
| + return os.path.abspath(directory) == os.path.abspath(toplevel) |
| + except subprocess.CalledProcessError:: |
| + return False |
| + |
| + |
| def git_checkout_to_directory(git, repo, checkoutable, directory, verbose): |
| """Checkout (and clone if needed) a Git repository. |
| @@ -87,6 +104,11 @@ def git_checkout_to_directory(git, repo, checkoutable, directory, verbose): |
| subprocess.check_call( |
| [git, 'clone', '--quiet', repo, directory]) |
| + if not is_git_toplevel(git, directory): |
| + # if the directory exists, but isn't a git repo, you will modify |
| + # the parent repostory, which isn't what you want. |
| + sys.stdout.write('%s\n IS NOT TOP-LEVEL GIT DIRECTORY.\n' % directory) |
|
mtklein
2014/04/21 18:44:48
and return?
hal.canary
2014/04/21 18:53:33
Right. That's the important bit.
|
| + |
| # Check to see if this repo is disabled. Quick return. |
| if git_repository_sync_is_disabled(git, directory): |
| sys.stdout.write('%s\n SYNC IS DISABLED.\n' % directory) |