Как избежать меркуриального устаревшего предупреждения на клиентах без расширения расширения - PullRequest
0 голосов
/ 08 июня 2018

В настоящее время я работаю в компании, которая использует Mercurial, но большинство разработчиков используют MQ вместо нового потока evolve .Поэтому большинство пользователей не имеют включенного расширения.

Каждый раз, когда я нажимаю на главный репозиторий, .hg/store/obsstore автоматически выдвигается с устаревшими наборами изменений.Это проблематично, потому что после этого все пользователи, у которых не включено расширение, получают следующее сообщение:

устаревшая функция не включена, но найдено 33 маркера!

Одно решение,предложенный в этом ответе включает в себя удаление .obsstore локально, но это не то, что я хочу, так как я все еще работаю с evolve, и это означает, что я ожидаю, что устаревшие наборы изменений останутся скрытыми.Не только это, но и устаревшие маркеры и наборы изменений должны быть доступны на репо сервера, чтобы мы сохраняли преимущества использования evolve, такого как интеллектуальное разрешение конфликтов.

Я бы ожидал, что способ либо не протолкнутьустаревшие наборы изменений в репозиторий сервера или (правильным способом) для сервера не передавать устаревшие данные клиентам без evolve.

Возможно ли это?Если нет, то почему?

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Я нашел несколько обходных путей (хаков) к этой проблеме, так как похоже, что Mercurial не может решить эту проблему на момент написания этого ответа:

Расширение для каждого репозитория

Удалите расширение evolve из файла ~/.hgrc, включите его для каждого хранилища, а затем используйте SSH для указания на хранилище (в нашем случае это NFS, которая является источником проблемы).).

То есть, в вашем хранилище hgrc у вас будет:

# This is <repo>/.hg/hgrc
[paths]
default = ssh://localhost//path/to/origin/repo
[extensions]
evolve =

и ~/.hgrc:

[extensions]
# evolve =     => Disabled on purpose

Удалениеустаревшие маркеры с использованием хуков

Просто используйте хук, чтобы удалить файл .obspurge из hgrc:

# This is <repo>/.hg/hgrc
[alias]
obspurge = !echo "Purging obsolete markers" && rm /path/to/origin/repo/.hg/store/obsstore
[hooks]
post-push = hg obspurge
вашего репозитория
0 голосов
/ 12 июня 2018

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

[experimental]
createmarkers=True
allowunstable=True
exchangeopt=False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...