Когда я объединяю вещи в моем хранилище, Subversion хочет добавить / изменить множество svn:mergeinfo
свойств к файлам, которые совершенно не связаны с вещами, которые я хочу объединить.
Вопросы об этом поведении уже задавались здесь, на переполнении стека:
- Свойства SVN Mergeinfo по путям, отличным от корня рабочей копии
- Есть ли способ отключить TortoiseSVN с помощью svn: mergeinfo?
Из того, что я понимаю из упомянутых выше тем, похоже, что многие файлы в моем репозитории имеют явные svn:mergeinfo
свойства, когда они не должны. Совет состоит в том, чтобы уменьшить количество и поместить эти свойства только в соответствующие файлы / папки.
Итак, теперь мой вопрос: как я могу легко удалить эти ненужные свойства? Я использую TortoiseSVN, но я не хочу вручную проверять / исправлять сотни файлов. Есть ли более простой способ удалить эти ненужные svn:mergeinfo
свойства?
PS Я не ищу код C ++ SVN API.
источник
Вот способ удалить все поддеревья svn: mergeinfo. Запустите его в корне вашего хранилища:
Все в одной строке для легкого копирования / вставки:
Чтобы просмотреть, какие файлы будут действовать до того, как вы запустите его, измените последний «propdel» на «propget» или вообще удалите последнюю трубу xargs.
источник
Как уже упоминалось в этой теме :
источник
Поскольку я не уверен в
svn:merge-info
удалении скрытого свойства, я реализовал инструмент для анализа текущей ситуации с рабочей копией и удаления как можно большего количества ревизий слияния из свойств не-root слияния. После дополнительных человеческих проверок и контролей изменения рабочей копии могут быть зафиксированы.Вот оно: svn-clean-mergeinfo
Не стесняйтесь сообщать о любых проблемах, связанных с его использованием, чтобы улучшить его.
Subversion 1.10 представляет новый инструмент, предназначенный для этой задачи:
svn-mergeinfo-normalizer
источник
Я знаю, что это было давно, но я столкнулся с подобной проблемой. Я использую TortoiseSVN 1.6.7. Так уж вышло, что свойство было в корне моей рабочей копии. Когда я просмотрел свойства в корне и нажал «Удалить» в svn: mergeinfo, он спросил меня, хочу ли я удалить его рекурсивно. Это избавило меня от всех моих хакеров svn: mergeinfo.
источник
Если вы уверены, что хотите массово удалить свойства mergeinfo, вы можете использовать следующий скрипт BASH.
Он получает список измененных файлов, фильтрует его только для изменений mergeinfo, удаляет все, кроме фактического пути к файлу, преобразует пути по одной строке в список, разделенный пробелами, и вызовы возвращаются в этот список.
источник
--xml
флага и анализатора XML; что-то еще может меняться между версиями, так как прямая совместимость в текстовом формате вывода не гарантируется.Вместо того, чтобы просто слепо удалять свойства mergeinfo, также возможно завершить «пропущенные» слияния.
Скопируйте свойство mergeinfo из корневой папки, а затем выполните объединение дочерней папки для соответствующего относительного пути и точно такого же списка ревизий. (Вы можете, но не обязаны, только перечислять различия между этим списком и тем, который уже находится в дочерней папке.)
Обычно это объединение должно заканчиваться только изменением свойств mergeinfo, а не каких-либо реальных файлов. (Если это приводит к изменению файлов, то одно из предыдущих слияний должно было быть только частичным слиянием, которое в любом случае могло вызывать у вас проблемы.)
Выполнение этого должно привести к удалению свойства mergeinfo для вас, как только вы получите их оба точно совпадающими. Вам также может понадобиться сделать обратное: объединить в корень любые ревизии слияния, присутствующие только в дочерней папке (опять же, вы можете просто вставить полный список и позволить SVN разобраться, найдя для вас различия).
источник
Чтобы внести изменения в структуру каталогов, это было бы (только для DOS без 'find'):
Запуск клиента 1.6.12, подключенного к серверу 1.5, у меня похожая проблема; там есть подкаталог в проекте , который нуждается в его собственный SVN: mergeinfo, но с 121 таких записей ( в том числе 5 каталогов ниже ./var с «SVN: игнорировать *») кажется несколько неуместным. Таким образом, было бы неплохо иметь (например, Python) скрипт, который может удалить явно лишнюю информацию о слиянии и рассказать о других различиях ...
источник