Как я могу сделать Mercurial добавить подстановочный знак для имени файла - PullRequest
0 голосов
/ 09 января 2019

мы работаем над проектом, в котором веб-проект angularjs компилируется, а двоичные файлы хранятся в hg repo. Проблема заключается в том, что js-файлы angularjs обычно компилируются с хэшированием для всех двоичных файлов. Пример: к двоичным файлам добавляются уникальные расширения для каждого файла

main.1cc794c25c00388d81bb.js, 
polyfills.eda7b2736c9951cdce19.js, 
runtime.a2aefc53e5f0bce023ee.js, 
common.7d1522841bf85b01f2e6.js, 
1.620807da7415abaeeb47.js,
2.93e8bd3b179a0199a6a3.....etc.

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

main.1cc794c25c00388d81bb.js  ==> overwrite old main.js 
polyfills.eda7b2736c9951cdce19.js ==> overwrite old polyfill.js 
runtime.a2aefc53e5f0bce023ee.js ==> overwrite old polyfill.js 
common.7d1522841bf85b01f2e6.js ==> overwrite old commom.js
1.620807da7415abaeeb47.js  ==> overwrite old 1.js
2.93e8bd3b179a0199a6a3 ==> overwrite old 2.js

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

1 Ответ

0 голосов
/ 09 января 2019

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

Итак, я вижу два решения:

  1. Запись перемещения старых имен файлов к новым именам файлов. hg addremove --similarity XX может оказать большую помощь здесь. Это приведет к тому, что все файлы будут иметь новые имена каждый раз, но если сходство достаточно хорошее, оно будет работать хорошо. Возможно, вам придется настроить XX, чтобы получить меру сходства (0 ... 100), которая подходит вам лучше всего. Добавление --dry-run для целей тестирования может упростить тестирование. Вам нужно будет удалить старые файлы, прежде чем вы запустите hg addremove.

  2. Имеет ловушку предварительной фиксации, которая перебирает файлы * .js и перемещается с помощью соответствующего регулярного выражения . .js в * .js, пропуская код хеширования, эффективно перезаписывая общие имена файлов с помощью вновь сгенерированные хэшированные имена файлов.

...