Make git_cache compatible with git <2.28

R=apolito@google.com

Bug: 1240982
Change-Id: Ibc13c58f35e4d08c5bd402137f08ac1b2e7ae106
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/3104288
Auto-Submit: Josip Sokcevic <sokcevic@google.com>
Commit-Queue: Gavin Mak <gavinmak@google.com>
Reviewed-by: Gavin Mak <gavinmak@google.com>
diff --git a/git_cache.py b/git_cache.py
index 9c21067..a76816d 100755
--- a/git_cache.py
+++ b/git_cache.py
@@ -302,7 +302,7 @@
     try:
       # create new temporary directory locally
       tempdir = tempfile.mkdtemp(prefix='_cache_tmp', dir=self.GetCachePath())
-      self.RunGit(['init', '--bare', '-b', 'main'], cwd=tempdir)
+      self.RunGit(['init', '--bare'], cwd=tempdir)
       self.print('Downloading files in %s/* into %s.' %
                  (latest_dir, tempdir))
       with self.print_duration_of('download'):
@@ -310,6 +310,8 @@
                            tempdir)
       if code:
         return False
+      # Set HEAD to main.
+      self.RunGit(['symbolic-ref', 'HEAD', 'refs/heads/main'], cwd=tempdir)
       # A quick validation that all references are valid.
       self.RunGit(['for-each-ref'], cwd=tempdir)
     except Exception as e:
@@ -410,7 +412,11 @@
         # 1. No previous cache.
         # 2. Project doesn't have a bootstrap folder.
         # Start with a bare git dir.
-        self.RunGit(['init', '--bare', '-b', 'main'], cwd=self.mirror_path)
+        self.RunGit(['init', '--bare'], cwd=self.mirror_path)
+        # Set HEAD to main. -b is introduced in 2.28 and may not be available
+        # everywhere.
+        self.RunGit(['symbolic-ref', 'HEAD', 'refs/heads/main'],
+                    cwd=self.mirror_path)
       else:
         # Bootstrap failed, previous cache exists; warn and continue.
         logging.warning(