Программы
git push в non-bare репозиторий

git push в non-bare репозиторий

Возможно, для вас подобная проблема не так важна, но от того и сложнее вспомнить, как она решается.

Возможно, для вас подобная проблема не так важна, но от того и сложнее вспомнить, как она решается. Суть в следующем:

Предположим, вы решили сделать git-deploy на push модели. То есть, развёртывание продукта на production через

git push prod master

Вы добавили production как git remote

git remote add prod ssh://user@somehost.ru/path/to/production/server.ru

Туда клонировали копию проекта. После чего решили запушить туда изменения, но получили

$ git push prod master
user@somehost.ru's password:
Подсчет объектов: 7, готово.
Delta compression using up to 4 threads.
Сжатие объектов: 100% (4/4), готово.
Запись объектов: 100% (7/7), 857 bytes | 0 bytes/s, готово.
Total 7 (delta 3), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To ssh://user@somehost.ru/path/to/production/server.ru
! [remote rejected] master -> master (branch is currently checked out)
error: не удалось отправить некоторые ссылки в «ssh://user@somehost.ru/path/to/production/server.ru»

Пушить в non-bare репозитории (содержащие рабочую версию проекта) с версии 2.3.0 возможно. Для этого нужно установить настройку на удалённом git-репозитории

git config receive.denyCurrentBranch updateInstead

После чего git push prod master работает нормально.

Также может быть вам интересно:

10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 6 — списки команд

Сегодня мы рассмотрим работу со списками команд, запуском их в командной оболочке и использованием результата в дальнейшей работе. Это шестая часть перевода статьи «Learn 10 good UNIX usage habits» от IBM.

Читать »

10 хороших примеров работы в Linux, FreeBSD и прочих Unix. Часть 7 — xargs

В седьмой части статьи «Learn 10 good UNIX usage habits» от IBM мы рассмотрим некоторые возможности xargs.

Читать »
Фото Python: Встроенные типы данных (list, set, dict, etc)

Python: Встроенные типы данных (list, set, dict, etc)

В Python есть множество встроенных типов данных. Их использование значительно упрощает жизнь и ускоряет разработку программных продуктов.

Фото Python: типы данных, переменные, логическое ветвление и циклы

Python: типы данных, переменные, логическое ветвление и циклы

Первая часть заметок о Python. О базовых типах, переменных, ветвлении и циклах.

Фото Как сделать свою middleware в Django (с примерами)

Как сделать свою middleware в Django (с примерами)

Middleware или "промежуточное программное обеспечение" - элегантный способ установить общие правила обработки запросов и ответов приложения. Давайте напишем парочку middleware, чтобы понять, как они работают.

Фото Как настроить отправку почты из Django

Как настроить отправку почты из Django

Письма об ошибках, отчёты на почту, восстановление паролей - всё это полезно при работе с сайтом. Django предоставляет удобный способ это сделать с минимумом настроек!

Фото Новый оператор match-case в Python

Новый оператор match-case в Python

В новой версии Python (3.10) появится новый оператор. Новый оператор сопоставления по шаблону (match-case).

Фото Нет слов, одни... однострочники

Нет слов, одни... однострочники

На днях вышел пост со списком полезных однострочников для JavaScript программистов. Памятуя Perl-овую молодость, заглянул туда.

Фото Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

В Django вы можете передавать данные в шаблоны посредством контекстов. Контекст передаётся из контроллера (view в терминах Django), однако, если одни и те же данные нужны в разных местах, лучше сделать свой контекст-процессор.

Фото Пример своей консольной команды в Django проекте

Пример своей консольной команды в Django проекте

Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать свои команды для управления проектом.