Медленный сброс мерзавца на CircleCI против моего локального компьютера - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь настроить кеш на CircleCI для большого удаленного хранилища git.Проблема в том, что я хочу принудительно обновить содержимое репо после восстановления кэша.Для этого я использую команды , найденные в этом ответе SO , но git reset на CircleCI работает намного медленнее, чем на моем компьютере.Если у меня есть репозиторий на локальном компьютере, и я выполняю git fetch && git reset --hard FETCH_HEAD, а на локальном компьютере для нашего 30 ГБ репозитория требуется несколько секунд, но в CircleCI это занимает около 10 минут с большим выводом Checking out files, что невидели локально.Есть ли способ оптимизировать это?Почему это происходит?Это связано с тем, что в CircleCI репозиторий git восстанавливается из кэша, поэтому метаданные некоторых файлов становятся грязными, поэтому git вынужден восстанавливать все файлы, в то время как локально он обнаруживает, что может что-то пропустить?В обоих случаях ничего действительно не меняется в хранилище.Поэтому я запускаю git reset без каких-либо изменений.

Это соответствующая конфигурация CircleCI, которую я использую:

  - run: git ls-remote --exit-code git@github.com:path/to/repo.git HEAD | cut -f 1 > /tmp/datasets-head
  - restore_cache:
      keys:
        - v1-datasets-{{ checksum "/tmp/datasets-head" }}
  - run:
      command: |
        if [ ! -d "/datasets/.git" ]; then
          git clone git@github.github.com:path/to/repo.git /datasets
        else
          git -C /datasets fetch
          git -C /datasets reset --hard FETCH_HEAD
          git -C /datasets lfs fetch
          git -C /datasets clean -d --force
        fi
        git -C /datasets rev-parse --verify HEAD > /tmp/datasets-head
  - save_cache:
      key: v1-d3m-datasets-{{ checksum "/tmp/datasets-head" }}
      paths:
        - /datasets

Так почему git reset --hard FETCH_HEAD занимает много времени, даже если ничегоизменилось с тех пор, как был сделан кеш?Кроме того, почему, похоже, он воссоздает все файлы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...