]> git.wh0rd.org - home.git/blobdiff - .bin/cros-repo
cros-repo: run init with -c for speedup
[home.git] / .bin / cros-repo
index 474b1aa38e73696590e8d71d0391e8294d513b19..d3e1946771aaae0bd56240ebd08f808ecacf4b93 100755 (executable)
@@ -45,7 +45,10 @@ def expand_branch(opts):
     branches = [x.split()[-1].split('/')[-1] for x in ret.stdout.splitlines()]
     ret = []
     for branch in branches:
-        if fnmatch.fnmatch(branch.lower(), f'*{opts.branch.lower()}*'):
+        if branch.lower() == opts.branch.lower():
+            ret = [branch]
+            break
+        elif fnmatch.fnmatch(branch.lower(), f'*{opts.branch.lower()}*'):
             ret.append(branch)
     if not ret:
         print(f'error: could not match branch {opts.branch}', file=sys.stderr)
@@ -59,8 +62,8 @@ def expand_branch(opts):
     return ret[0]
 
 
-def set_git_config(opts):
-    """Set .git/config settings in all the repos."""
+def get_repo_topdir(opts):
+    """Find the top dir of this repo client checkout."""
     topdir = os.getcwd()
     while True:
         rdir = os.path.join(topdir, '.repo')
@@ -68,6 +71,13 @@ def set_git_config(opts):
             break
         topdir = os.path.dirname(topdir)
         assert topdir != '/'
+    return topdir
+
+
+def set_git_config(opts):
+    """Set .git/config settings in all the repos."""
+    topdir = get_repo_topdir(opts)
+    rdir = os.path.join(topdir, '.repo')
 
     def gcfg(path, *args):
         cmd = ['git', f'--git-dir={path}', 'config', 'user.email'] + list(args)
@@ -87,7 +97,7 @@ def set_git_config(opts):
 
 def init_repo(opts):
     """Initialize CrOS checkout."""
-    cmd = ['repo', 'init']
+    cmd = ['repo', 'init', '-c']
 
     if opts.action == 'int':
         cmd += ['-u', INT_MANIFEST]
@@ -96,7 +106,7 @@ def init_repo(opts):
         cmd += ['-u', EXT_MANIFEST]
         cmd += ['--repo-url', REPO_URL]
 
-    if opts.ref:
+    if opts.ref and os.path.realpath(opts.ref) != os.path.realpath(get_repo_topdir(opts)):
         cmd += ['--reference', opts.ref]
 
     if opts.manifest:
@@ -131,7 +141,7 @@ def get_parser():
         description=__doc__,
         formatter_class=argparse.RawDescriptionHelpFormatter)
     parser.add_argument('-b', '--branch',
-                        help='Switch branches (use "master" to get to ToT)')
+                        help='Switch branches (use "main" to get to ToT)')
     parser.add_argument('-r', '--ref', '--reference', default='~/chromiumos/',
                         help='Patch to reference repo (default: %(default)s)')
     parser.add_argument('-g', '--group',