Nano Hash - криптовалюты, майнинг, программирование

При использовании cvs2svn, как вы можете переименовать символы так, чтобы ветка и тег преобразовывались в одно и то же имя?

Я работаю над преобразованием репозитория CVS, который имеет следующие символы (среди прочего):

tcm-6.1.0-branch - ветка
tcm-6.1.0 - тег

Используя стандартные преобразования, cvs2svn правильно их идентифицирует. Тем не менее, я хотел бы сделать некоторую очистку во время преобразования. В частности, я хотел бы удалить избыточную часть символа ветки «-branch», поскольку она будет находиться в каталоге «ветвей» в svn. Я добавил в symbol_transforms проекта следующее:

RegexpSymbolTransform(r'(.*)-branch', r'\1')

Теперь я получаю «ОШИБКА: несколько определений символа 'tcm-6.1.0' в ...» для каждого файла, потому что tcm-6.1.0 - это и ветвь, и тег. У меня есть несколько пар символов CVS, которые приводят к этой проблеме.

Мне кажется, что, поскольку исходные символы разные, а целевые каталоги разные, эта операция должна быть возможна. Что-то мне не хватает или это просто недостаток cvs2svn?

Как я могу переименовать эти символы, чтобы они оставались отдельными и в результате образовывались ветка и тег с тем же именем?

--

Если не удастся решить эту проблему, я постараюсь исключить проблемные символы из правил преобразования и потом переместить их вручную, хотя я бы предпочел сделать это во время преобразования.

01.10.2008

Ответы:


1

RegexpSymbolTransform работает на слишком низком уровне во время синтаксического анализа файлов репозитория. Следовательно, если вы используете SymbolTransform для присвоения двум символам одного и того же имени, они будут рассматриваться как один и тот же символ.

После преобразования можно переименовать ветки и теги, но для этого потребуется явная фиксация SVN, которая навсегда останется в вашей истории, что немного усложнит изучение истории.

Вместо этого вы должны преобразовать ветку с ее исходным именем, но затем указать cvs2svn сохранить ее по пути SVN /branches/tcm-6.1.0. Таким образом, символ окажется в нужном месте для ветки SVN с желаемым именем, но будет по-прежнему обрабатываться cvs2svn в отличие от тега с аналогичным именем.

Это можно сделать с помощью параметра командной строки --symbol-hints=symbol-hints.txt или правила стратегии символов SymbolHintsFileRule('symbol-hints.txt'), где symbol-hints.txt - это файл, содержащий строку, подобную следующей:

. tcm-6.1.0-ветка ветка /branches/tcm-6.1.0.

Единственный недостаток этого подхода, о котором я могу думать, это то, что в некоторых сообщениях фиксации, которые автоматически генерируются cvs2svn (например, для создания ветки), будет упоминаться исходное имя ветки.

02.10.2008

2

cvs2svn творит чудеса между cvs и svn. Вот почему вы не можете "сопоставить" имена веток и тегов, так как тогда cvs2svn не будет знать, какая версия принадлежит какому каталогу. Мой совет - впоследствии переименовать их в одном коммите с помощью такого инструмента, как svnmucc. Итак, у вас есть одна фиксация, и все на месте.

01.10.2008
Новые материалы

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

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..