Переименовать папку на сервере после GIT pull - PullRequest
0 голосов
/ 08 марта 2019

У меня есть веб-приложение, которое я разрабатываю и использую GIT в качестве источника контроля.Приложение используется несколькими клиентами с разными доменами.На моей локальной машине есть папка, которую я назвал web.Тем не менее, эта же папка называется DOMAIN.NAME на серверах, и она, конечно, меняется с сервера на сервер.

Прямо сейчас, когда мне нужно обновить серверы самым новым кодом, я SSH и делаю git pull, который извлекает папку web на сервере, а затем я переименовываю ее в соответствующий DOMAIN.NAME, который соответствует рассматриваемому серверу.Однако мне интересно, можно ли как-то автоматизировать этот процесс?Могу ли я иметь скрипт / команду, которую Git может выполнить, чтобы переименовать папки для меня или, что еще лучше, прочитать переменную из файла, хранящегося на сервере, и присвоить названию соответствующую папку этому значению?Могу ли я каким-то образом создать сопоставление, которое бы связывало web с соответствующим именем папки на каждом сервере?

Любые идеи приветствуются, спасибо!

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Возможно, вас заинтересуют git-хуки, скрипты, которые могут запускаться до или после таких событий, как коммит, pull, push и т. Д .: https://git -scm.com / book / en / v2 / Customizing-Git-Git-Крючки

Вот пример ловушки git, которая останавливает коммит, если есть ошибки пробела, от https://www.atlassian.com/git/tutorials/git-hooks#local-hooks

#!/bin/sh
# Check if this is the initial commit
if git rev-parse --verify HEAD >/dev/null 2>&1
then
echo "pre-commit: About to create a new commit..."
against=HEAD
else
echo "pre-commit: About to create the first commit..."
against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
fi
# Use git diff-index to check for whitespace errors
echo "pre-commit: Testing for whitespace errors..."
if ! git diff-index --check --cached $against
then
echo "pre-commit: Aborting commit due to whitespace errors"
exit 1
else
echo "pre-commit: No whitespace errors :)"
exit 0
fi
1 голос
/ 08 марта 2019

Я понимаю, что папка web является частью более широкой структуры каталогов, содержащейся в вашем репо.(Если нет, вы можете просто переместить клон каждого сервера в соответствующий каталог; но я полагаю, что вы придете к этому самостоятельно.)

Таким образом, на каждом сервере будет использоваться самый легкий вариант., чтобы сделать DOMAIN.NAME символической ссылкой на web.(Я предполагаю, что серверы используют ОС и файловую систему в стиле * NIX.)

Если по какой-то причине это не жизнеспособно, вы можете посмотреть на ловушки git.

...