Попытка гитолитового зеркала говорит: «Сначала надо потянуть»

408
Mikhail T.

Некоторые из репозиториев, которые мы используем для зеркалирования gitolite, теперь содержат ошибку:

% gitolite mirror push mirror-host repo/path remote: error: denying non-fast-forward refs/heads/feature/FOO-XXX-bar (you should pull first) ... ! [remote rejected] feature/FOO-XXX-bar (non-fast-forward) 

Вызывающий пользователь gitoliteнаходится в @adminsгруппе, которая имеет RW+разрешение на все . Почему бы инструмент не перематывать?

Какие-либо предложения? Спасибо!

0
Какую часть сообщения вы не понимаете? Ваша локальная копия устарела (на сервере произошли более новые изменения с момента последнего извлечения), поэтому вам нужно сначала выполнить извлечение, чтобы получить эти изменения перед отправкой. psusi 9 лет назад 0
Это не _рабочие деревья_, которые можно вытащить. Это репо-зеркала, которые _fetch_-ed. Вы - пользователь gitolite, psusi? Если нет, пожалуйста, воздержитесь от дальнейшего участия. Спасибо. Mikhail T. 9 лет назад 0
Тяга и толчок не требуют рабочего дерева. Чаще всего вы толкаете и вытягиваете из голого репо. Сервер сообщает вам, что ваш локальный репо и его репо разошлись. psusi 9 лет назад 0
Да, я знаю, что репо разошлись. Мой вопрос, что делать. Простая попытка `git pull` на реплике отвечает:` fatal: / usr / bin / git-pull не может использоваться без рабочего дерева`. Mikhail T. 9 лет назад 0
Ах, да, для слияния требуется рабочее дерево, поэтому, если вы пытаетесь перейти с одного чистого репо на другое, вам нужно будет либо проверить рабочее дерево там, либо, если уже есть другой сервер, вам понадобится вытащить и выполнить слияние локально и передать это на первый сервер, который затем может перейти на второй. psusi 9 лет назад 0
Я думаю, я нашел лучший способ (ниже). Mikhail T. 9 лет назад 0
Давайте [продолжим обсуждение в чате] (http://chat.stackexchange.com/rooms/22481/discussion-between-psusi-and-mikhail-t). psusi 9 лет назад 0

1 ответ на вопрос

0
Mikhail T.

Хорошо, я понял это. По какой-либо причине в репозитории / config-файлах на репликах содержалось следующее предложение:

[receive] denyNonFastforwards = true 

Как только я это прокомментировал, я смог запустить mirror push:

 ... + 5d7eb28...f0deef7 feature/FOO-XXXX-bar -> feaure/FOO-XXXX-bar (forced update) ... 
Сделав это, вы просто уничтожили / перезаписали все новые изменения на сервере (вот что означает принудительное обновление). psusi 9 лет назад 0
Сервер является резервным, который, как предполагается, никогда не передавался (выдвигался) напрямую. Но, я думаю, проблема возникла из-за недопустимых символов, используемых в некоторых «ссылках» - единственными репликами, которые отклонили синхронизацию без ускоренной перемотки вперед, были те, которые _также_ отклоняли недопустимые символы ранее. Сначала я расширил список допустимых символов, и теперь реплики - это тоже реплики. Mikhail T. 9 лет назад 0
Я не думаю, что это как-то связано с этим; если бы реплика ранее просто отклоняла push-уведомление и теперь настроена на его принятие, то это сработало бы без принудительного обновления. Тот факт, что для этого требовалось принудительное обновление, указывает на то, что кто-то * подтолкнул к нему расходящуюся ветвь, и вы выбросили эту расходящуюся ветвь и заменили ее своей. Если, возможно, вы не перезаписали или иным образом не переписали свою историю и не отправили ее на свой первый сервер в качестве принудительного обновления, и только второй сервер был настроен на отказ от принудительных обновлений. psusi 9 лет назад 0

Похожие вопросы