From 9e4a1bad45c5db66f40e0b71dcbf0c640bfe9347 Mon Sep 17 00:00:00 2001 From: Yo Chiang Date: Thu, 23 Apr 2020 14:29:25 +0800 Subject: [PATCH] repo_diff: workspace mustn't be in existing tree Check that |workspace| is not a sub-directory of an Android tree, so that we don't `repo init` to a directory outside of |workspace|. Test: mkdir /tmp/test && cd /tmp/test && repo init [AOSP] Test: ./repo_diff_android.py # Should fail to repo-init Test: rm -rf .repo/ && ./repo_diff_android.py # Should success Change-Id: I3e1b94e8e3664cc50ab790aaa7e27b2a8d3feef0 --- tools/repo_diff/repo_diff_android.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/repo_diff/repo_diff_android.py b/tools/repo_diff/repo_diff_android.py index 822abb500..aed7fae81 100755 --- a/tools/repo_diff/repo_diff_android.py +++ b/tools/repo_diff/repo_diff_android.py @@ -68,6 +68,15 @@ def repo_init(url, rev, workspace): workspace: the folder to init and sync code """ + try: + subprocess.check_output("repo", stderr=subprocess.PIPE, + cwd=os.path.dirname(workspace), shell=True) + except subprocess.CalledProcessError: + pass + else: + raise ValueError("cannot repo-init workspace (%s), workspace is within an " + "existing tree" % workspace) + print("repo init:\n url: %s\n rev: %s\n workspace: %s" % (url, rev, workspace))