bisect-kit: mirror chrome repos if they are missing

'gclient sync' only sync (and mirror) code using latest DEPS file. If
git repos are added and removed from the DEPS file between two sync,
they might be missed in cache dir.

This CL mirrors those git repos when processing DEPS file and found
those repos are missing in cache dir.

BUG=chromium:902238
TEST="./bisect_cr_localbuild_internal.py init --old 70.0.3519.0 --new 70.0.3524.2" with fresh chrome mirror

Change-Id: I2504e09513dc90733e42fc90e5a4031da67dbc1f
Reviewed-on: https://chromium-review.googlesource.com/1365192
Commit-Ready: Kuang-che Wu <kcwu@chromium.org>
Tested-by: Kuang-che Wu <kcwu@chromium.org>
Reviewed-by: Chung-yih Wang <cywang@chromium.org>
diff --git a/bisect_kit/git_util.py b/bisect_kit/git_util.py
index 002220b..c0657d7 100644
--- a/bisect_kit/git_util.py
+++ b/bisect_kit/git_util.py
@@ -120,6 +120,26 @@
       'git', 'commit', '-q', '-m', message, path, cwd=git_repo, env=env)
 
 
+def config(git_repo, *args):
+  """Wrapper of 'git config'.
+
+  Args:
+    git_repo: path of git repo.
+    args: parameters pass to 'git config'
+  """
+  util.check_call('git', 'config', *args, cwd=git_repo)
+
+
+def fetch(git_repo, *args):
+  """Wrapper of 'git fetch'.
+
+  Args:
+    git_repo: path of git repo.
+    args: parameters pass to 'git fetch'
+  """
+  util.check_call('git', 'fetch', *args, cwd=git_repo)
+
+
 def is_containing_commit(git_repo, rev):
   """Determines given commit exists.