Как протолкнуть локальные изменения, когда ваше удаленное хранилище обновлено в Mercurial? - PullRequest
0 голосов
/ 05 июля 2019

Я сталкиваюсь с проблемой при выполнении некоторых операций в Mercurial.

Мы делаем следующие шаги

1) Checkout from the remote repos.
2) we do some build related actions
3) increment the version in version file
4) tag(this includes pull --->update also).This operation takes 10-15 mins because of big/multiple repos.
5) Step 4 takes time and in between someone check-in and when we do push it fails with below error

stdout/stderr: remote has heads on branch 'default' that are not known locally: 5fhfhfhfhfh
stdout/stderr: abort: push creates new remote head fhdhfhdlgjdf!

Есть ли какой-нибудь сценарий решения / bash, который мы можем создать, чтобы сообщить нам, что удаленныйрепо не синхронизируется, и нам нужно вытащить / обновить перед push. Я думаю, что нижеприведенная команда может сообщить нам об этом

hg summary --remote

branch: default
commit: (clean)
update: (current)
remote: (synced)

Я пытаюсь создать такую ​​же проблему и в моей локальной системе

C:\test\testinoutchanges-clone>hg tag abcedfegh "Build 1.0.0"  **{During this operation someone push the changes}**

C:\test\testinoutchanges-clone>hg push
pushing to https://pro.test.com/next/testinoutchanges
searching for changes
remote has heads on branch 'default' that are not known locally: 5024baaff5d5
abort: push creates new remote head faed8e868739!
(pull and merge or see 'hg help push' for details about pushing new heads)

C:\test\testinoutchanges-clone>hg summary --remote
parent: 2:faed8e868739 tip
 Added tag 175247499ae3, Build 1.0.0 for changeset 175247499ae3
branch: default
commit: (clean)
update: (current)
phases: 1 draft
remote: 1 or more incoming, 1 outgoing


C:\test\testinoutchanges-clone>

Теперь, если я запущу hg pull -u, это вызовет у меня другие проблемы

C:\test\testinoutchanges-clone>hg pull -u
pulling from https://pro.test.com/next/testinoutchanges
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
updated to "faed8e868739: Added tag 175247499ae3, Build 1.0.0 for changeset 175247499ae3"
1 other heads for branch "default"

C:\test\testinoutchanges-clone>hg push
pushing to https://pro.test.com/next/testinoutchanges
searching for changes
abort: push creates new remote head faed8e868739!
(merge or see 'hg help push' for details about pushing new heads)

Я также попытался сначала просто потянуть, а затем объединить.После этого я использую коммит, а затем смог нажать изменения.

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

1 Ответ

0 голосов
/ 05 июля 2019

Вы можете использовать preoutgoing хук в локальном репо (проверьте результаты hg incoming в нем) для блокировки push-уведомлений в удаленном репо, если в нем есть еще не синхронизированные изменения (или простоотключить слепое «push after commit»).Но будьте осторожны с кодом выхода hg in: он

Возвращает 0, если есть входящие изменения, 1 в противном случае

, в то время как все управляющие хуки должны возвращать 0, чтобыразрешить операцию и ненулевое значение для блокировки

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