2016-08-03 2 views
0

Предположим, что я уже создал супер-swish-тест для устаревшей системы. То есть функция A существует long перед испытанием на функцию A. Функция B, C и D идет и без нас реализует, в какой-то момент перерыв тест на функцию A.Может ли git bisect игнорировать папки, например тестовые папки?

Мы хотим узнать, какая из особенности сделал это.

Теперь я хочу работать:

git bisect <bad> <good> 
git run ./swish_test_suite.sh 

Вопрос заключается в том, что код файлов, что тест функции пришел между <bad> и <good>. Я пробовал просто вручную извлечь код, но затем различные конфигурации и пути для проверки прерывания данных (хрупкий код?).

Есть ли способ сообщить git bisect игнорировать папку? Я могу себе представить, что иногда случается ужасно неправильно, но я предполагаю, что это может быть проще, чем альтернативы.

Здесь не решено How can I ignore a directory when doing a Git bisect?, так как это касается сборников папок, где решение состоит в том, чтобы удалить их из репо, но Я хочу, чтобы мои тесты прошли!

Это git bisect with feature branches/later commits are needed to build немного отличается слишком, так как я не использую патчи или функцию ветви (я должен?) Кроме того, решения, кажется, просто для вручную запустить его, не git bisect run нин это!

ответ

1

Для таких случаев напишите свой тестовый скрипт таким образом, чтобы он добавлял нужные вам вещи на каждом шаге. В руководстве git help bisect приведен пример, который вы можете настроить под свои нужды. I.e., где этот пример делает git merge hotfix, сделайте все, что вам нужно, чтобы получить требуемые тестовые файлы. В зависимости от ситуации слияние может быть не тем, что вы ищете, но вы можете выбрать из своего теста или просто скопировать их в какой-либо другой каталог заранее (перед операцией bisect) и скопировать их с помощью cp.

· Automatically bisect with temporary modifications (hot-fix): 

      $ cat ~/test.sh 
      #!/bin/sh 

      # tweak the working tree by merging the hot-fix branch 
      # and then attempt a build 
      if  git merge --no-commit hot-fix && 
        make 
      then 
        # run project specific test and report its status 
        ~/check_test_case.sh 
        status=$? 
      else 
        # tell the caller this is untestable 
        status=125 
      fi 

      # undo the tweak to allow clean flipping to the next commit 
      git reset --hard 

      # return control 
      exit $status 
+0

Это замечательно, я думаю, что копирование в временную папку и обратно было бы работать в моем примере. Когда я говорю, что не использую ветви, я часто вхожу в ветви и объединяюсь, поэтому я получаю очень линейную историю. Похоже, в примере у них была длинная ветка, называемая 'test', которой у меня нет. – Pureferret

 Смежные вопросы

  • Нет связанных вопросов^_^