Исключить папки из поиска по Git-коду / создать ветки архива - PullRequest
1 голос
/ 26 марта 2019

TL; версия DR

Файлы в определенной папке загромождают результаты моего поиска при поиске на GitHub. Эти файлы мне нужны только для целей архивации, поэтому, хотя я не хочу их удалять, я подумал, что могу периодически перемещать их в отдельную ветку, чтобы очистить эту папку в master.

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

Context

В моей (нашей) ситуации у нас есть git-репозиторий, в котором хранится текущее состояние нашей модели данных. Таким образом, у него есть файл с именем TAB_ORDER.sql, который содержит оператор create table для создания таблицы. Эти файлы в основном создаются с помощью сравнения схем RedGate.

Кроме того, хранилище содержит скрипт миграции, который помогает нам развертывать изменения. Ожидается, что запрос на удаление будет содержать изменение в объектном файле, а также миграцию, чтобы это произошло в действующей базе данных. Таким образом, чтобы добавить столбец в эту таблицу, в одном PR я бы добавил файл миграции с оператором alter table TAB_ORDER для добавления столбца, и я бы изменил TAB_ORDER.sql так, чтобы оператор create в нем представлял новое состояние таблица, включая новый столбец.

Пока все хорошо.

Проблема

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

Итак, у меня есть два основных варианта, кроме того, чтобы придерживаться его:

  • Полностью удалите сценарии миграции.
  • Храните миграции в отдельной ветке, но не в master.

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

Мое решение (с которым мне нужна помощь)

Как я могу легко переместить эти сценарии миграции в отдельную ветку архива. Учитывая тот факт, что я хочу, чтобы разработчики создавали один PR с миграцией и модификацией, это архивирование было бы отдельным процессом, который я мог бы периодически выполнять, но я действительно не знаю хорошего способа «переместить» файлы из master в ветка, в основном.

Альтернативные решения тоже приветствуются.

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Оказывается, вы действительно можете исключить пути из результатов поиска. Я не мог понять это раньше, и при поиске я нашел только доказательства того, что это невозможно. Но коллега (спасибо, Уэс!) Только что указал мне, что вы можете просто добавить -path к поисковому запросу, чтобы отфильтровать папку.

Таким образом, чтобы найти использование TAB_ORDER во всех репозиториях, кроме папок Migrations (скрестив пальцы, что другие репозитории не имеют релевантных результатов поиска в папке с тем же именем), я могу просто найти это:

TAB_ORDER -path:Migrations

Похоже, что путь должен быть полным путем (относительно репо), поэтому, если у вас есть путь a/b/c, вы можете добавить -path:a или -path:a/b/c, но не просто -path:c.

1 голос
/ 28 марта 2019

Самое простое, о чем я могу подумать:

Создать архив ветки

git checkout -b архив

Затем скопируйте эти файлы в новую ветвь архива:

$ git show: путь / к / файлу> путь / к / локальному / файлу

Теперь снова извлеките свою основную ветку и удалите ненужные файлы в главной ветке.

файл рм

Затем обновите ваш главный репозиторий снова

git add *

git commit -m "удаленный файл"

мастер git push origin

...