Как исключить каталог модульных тестов в Git - PullRequest
0 голосов
/ 12 ноября 2018

Большой существующий PHP-проект, в который встраиваются модульные тесты.Я хочу, чтобы в коде ветки разработки находился каталог «tests», который содержит эти модульные тесты и, возможно, также фиксаторы БД.Естественно, я не хочу, чтобы что-то попало в производственную среду, поэтому я хочу, чтобы этот каталог автоматически исключался при его развертывании.Или, в идеале, способ избежать чего-либо, что в первую очередь связано с объединением с мастером.

Как мне управлять этим?В тестовом каталоге будут частые и непредсказуемые коммиты, поэтому я не могу просто пропустить некоторые коммиты вручную.

РЕДАКТИРОВАТЬ: у меня теперь есть четыре ответа, рассказывающих мне о .gitignore.Я не верю, что .gitignore здесь уместен, потому что я хочу исключить что-то, что должно быть зафиксировано, но только из определенной ветви.

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018

это называется .gitignore

Из документов:

Файл gitignore указывает намеренно не отслеживаемые файлы, которые Git должен игнорировать. Файлы, уже отслеженные Git, не затрагиваются

источник: https://git -scm.com / docs / gitignore

Для примера, скажем, у вас есть это рабочее дерево:

|-app
|-test
|-index.php

для исключения test/ в тестовый каталог добавьте .gitignore на том же уровне, что и папка .git, и в него просто добавьте:

test/

зафиксируйте git ignore и внесите изменения / добавьте файл в test/, и вы заметите, что он не появляется при запуске

$ git status
0 голосов
/ 01 декабря 2018

Я обнаружил, что способ не допустить слияния части ветви на постоянной основе в другую ветвь - это использовать подмодули.

Я создал папку для модульных тестов в качестве собственного репозитория.и затем включил его в мою основную ветку (которая не является производственной / основной веткой) в качестве подмодуля.

https://git -scm.com / book / en / v2 / Git-Tools-Подмодули

По умолчанию, когда вы клонируете репозиторий, подмодули не клонируются с ним.Каталог подмодуля создается, но остается пустым, если вы также не выполните

git submodule init
git submodule update

. Поэтому это так же просто, как не включать приведенные выше команды в рабочий клон git, но включать их, когда вы клонируете репозиторий для тестирования илиразвитие.Вы можете внести любые изменения в каталог tests вместе с базой кода и зафиксировать оба вместе.Это означает, что тесты можно разрабатывать вместе с базой кода без риска их развертывания в рабочей среде.

Я нашел следующие псевдонимы, полезные для настройки для оптимизации операций git:

$ git config alias.sdiff '!'"git diff && git submodule foreach 'git diff'"
$ git config alias.spush 'push --recurse-submodules=on-demand'
$ git config alias.supdate 'submodule update --remote --merge'

Кажется, этобыть правильным подходом к решению проблемы того, чтобы разделение кода в одном репозитории отличалось для каждой ветви.

0 голосов
/ 12 ноября 2018

Вы можете использовать .gitignore. Это файл в корне вашего проекта, и вы можете перечислить все файлы и каталоги, которые вы не хотите фиксировать / отправлять. Они разделены новой строкой.

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