Как предотвратить Mercurial фиксирует / толкает определенные файлы? - PullRequest
4 голосов
/ 11 марта 2011

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

Как я могу настроить mercurial для применения этой политики?

Наша установка: Каждый разработчик работает с локальным клоном нашего центрального хранилища.

Приятно иметь:

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

  2. Я бы предпочел применять эту политику на уровне локального хранилища, чем на центральномуровень хранилища, потому что, если мы предотвратим «толчок» в центральном хранилище, разработчику будет сложнее отменить уже локально зафиксированный набор изменений.

Спасибо


ОБНОВЛЕНИЕ:

Подробнее о процессе перевода:

Слияние здесь не проблема.Переводчик не меняет файлы, которые мы ему отправили.Мы отправляем ему набор не зависящих от языка .resx (form1.resx) и возвращаем набор специфичных для языка resx (form1.FR.resx).

Почему мешают добавить новые resx?Добавление resx происходит, когда мы добавляем новый интерфейс в наше приложение.Если мы сделаем это после отправки пакета перевода, переводчик не узнает о новом пользовательском интерфейсе, и мы получим новый пользовательский интерфейс без перевода.

Почему не нужно обновлять resx?Если dev изменяет значение метки с «open» на «close», он вносит очень важное семантическое изменение.Если он сделает это после отправки пакета перевода, мы не получим правильный перевод обратно.

Ответы [ 2 ]

4 голосов
/ 11 марта 2011

Вы не можете помешать людям вносить изменения в файлы .resx, если у вас нет контроля над их настольными компьютерами (с помощью хука pretxncommit), и даже тогда его легко обойти. Гораздо более нормально ставить проверку на центральном сервере во время push, используя pretxnchangegroup ловушку, но вы правы, что им придется исправить любые ревизии и повторно нажать, что является расширенным использованием. В любом случае вы бы использовали AclExtension для применения фактического ограничения.

Вот два альтернативных способа сделать это, которые могут быть лучше для вас:

  1. Клонируйте свой репозиторий в начале процесса перевода, предупредите разработчиков о том, чтобы на некоторое время оставить .resx в покое, примените работу переводчиков, когда они закончат, а затем объедините эти изменения с основным * репозиторием разработки с помощью команда слияния, которая всегда отдает приоритет входящим изменениям : X. Затем используйте простую команду hg log, чтобы найти все изменения в .resx, которые только что были перезаписаны, и попросите разработчиков добавить их заново. Упрекать их в это время.

попеременно

  1. Сделать файлы .resx Подпозитарием большего внешнего репозитория. Затем отключите доступ для записи в этот репозиторий resx в течение запрещенного периода. Разработчики смогут фиксировать во внешнем репозитории, но не во внутреннем, но клоны будут получать оба точно так же, как и всегда.

Для чего бы то ни было, все остальные решают эту проблему с помощью простого слияния, .resx - это (XML) текст, и он прекрасно сливается.

При работе с DVCS не всегда легко точно отразить ваш опыт SVN, но обычно в любом случае есть лучший вариант.

0 голосов
/ 11 марта 2011

Вы можете добавить * .resx в файл hgignore

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