GOOGLE ADS

четверг, 5 мая 2022 г.

Как мне сообщить (локально) mercurial, что сервер не публикуется?

Как я могу сообщить Mercurial, что удаленный сервер (первоначально, например, на битбакете, но они больше не поддерживают Mercurial) не публикуется, если у меня нет доступа к удаленному .hg/hgrcфайлу?

Фон

В последних версиях mercurial есть концепция фаз, которая позволяет отслеживать, какие наборы изменений были общими ( public), а какие нет ( draft). Подобные операции изменения репозитория rebaseразрешены для draftнаборов изменений, но не publicнаборов изменений, поскольку другие могут зависеть от последнего.

Отправка наборов изменений на общедоступный сервер изменит их фазу на фазу publicпо умолчанию, но если сервер является частным или предназначен для проверки кода (т. е. люди не должны иметь возможности извлекать), то отправка на этот «не публикуемый» сервер не должна изменять фаза.

Документированный способ сообщить Mercurial, что сервер не публикуется, — это добавить [phases]раздел в .hg/hgrcфайл на сервере:

[phases]
publish = false

Мне кажется, должен быть способ включить в один из моих локальных hgrcфайлов строку, в которой говорится, что конкретный сервер не публикуется, но я не могу найти никакой документации, чтобы предложить, как это сделать. Возможно, это поведение можно настроить с помощью хука?

Рекомендации

  • https://www.mercurial-scm.org/wiki/Phases

  • Введение в Mercurial Phases

  • После отправки в репозиторий проверки «отмена: невозможно перебазировать неизменяемый набор изменений» при перебазировании


  • Решение проблемы

    В настоящее время нет способа сделать это, и, надеюсь, этого никогда не произойдет.

    Вот почему:
    если вы позволяете локальному репозиторию переопределять конфигурацию удаленного репозитория, вы просто делаете весь фазовый механизм бесполезным. Смысл фаз в том, чтобы запретить пользователю выполнять действия, которые могут «испортить» поток синхронизации.
    Ответственность за описание того, как будут использоваться полученные наборы изменений, лежит на получателе. Если вы инвертируете эту логику, позволив отправителю переопределить эти настройки, то как вы можете гарантировать, что два отправителя будут использовать одну и ту же конфигурацию? Если конфигурация отличается, какую из них следует сохранить? Как должны быть отмечены наборы изменений на приемнике?

    В какой-то степени это было бы так же, как если бы локальный репозиторий мог передавать наборы изменений на удаленный без авторизации, просто локально переопределяя удаленную конфигурацию.

    Комментариев нет:

    Отправить комментарий

    Laravel Datatable addColumn returns ID of one record only

    Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...