Удалите ненужные svn:mergeinfo свойства

Вы можете реорганизовать свой SQL без использования подзапросов, например:

UPDATE dis_orderoutdetails
SET onstock = g.stock
FROM vw_inv_stock_art_global
WHERE vw_inv_stock_art_global.article_id = dis_orderoutdetails.article_id
      and onstock is NULL;

Но учтите, что правильность этого SQL зависит от отношений между dis_orderoutdetails(article_id) и vw_inv_stock_art_global(article_id): article_id isn ' Для уникального столбца в vw_inv_stock_art_global этот UPDATE не будет предсказуемым, поскольку каждый dis_orderoutdetails может быть обновлен более одного раза с различными значениями запаса.

136
задан dokaspar 12 August 2017 в 10:19
поделиться

5 ответов

As mentioned in this thread:

  • Most empty mergeinfo ("blank") can be caused by working copy to working copy copies/moves where the source item has no explicit mergeinfo. Using propdel can be the solution unless you are using a 1.6 SVN: since 1.5.5 these WC-to-WC copies no longer create empty mergeinfo on the destination
  • an earlier svn move (rename) restructuring operation can also propagate mergeinfo, instead of leaving them at the root directory
  • there is a potential memory issue, tracked by case 3393 which will be fixed in an upcoming 1.6.2 version and back-ported in 1.5
12
ответ дан 23 November 2019 в 23:40
поделиться

Если вы уверены, что хотите массово удалить свойства mergeinfo, вы можете использовать следующий сценарий BASH.

FILES=`svn status |grep "^ M      " |sed s/" M      "// |tr '\n', ' '`
svn revert $FILES

Он получает список измененных файлов, фильтрует его так, чтобы просто объединить только изменения, удаляет все, кроме самого файла path, преобразует пути, состоящие из одной строки, в список, разделенный пробелами, и вызовы возвращаются в этот список.

2
ответ дан 23 November 2019 в 23:40
поделиться

Вот способ удалить все свойства поддерева svn:mergeinfo. Запустите его в корне вашего репозитория:

svn propget svn:mergeinfo --depth=infinity 
    | grep -v "^/"
    | grep -v "^\."   
    | cut -d- -f1 
    | xargs svn propdel svn:mergeinfo

Все в одной строке для удобства копирования/вставки:

svn propget svn:mergeinfo --depth=infinity | grep -v "^/" | grep -v "^\." | cut -d- -f1 | xargs svn propdel svn:mergeinfo

Чтобы просмотреть, на какие файлы это повлияет перед запуском, измените последний "propdel" на "propget" или вообще удалите последнюю трубку xargs.

15
ответ дан 23 November 2019 в 23:40
поделиться

Я знаю, что это было давно, но я столкнулся с аналогичной проблемой. Я использую TortoiseSVN 1.6.7. Так уж получилось, что это свойство было в корне моей рабочей копии. Когда я просмотрел свойства в корне и щелкнул «Удалить» в svn: mergeinfo, он спросил меня, хочу ли я удалить его рекурсивно. Это избавило меня от всех моих взломов svn: mergeinfo.

4
ответ дан 23 November 2019 в 23:40
поделиться

Вот еще один способ удалить все свойства поддерева svn: mergeinfo, но не в корневой папке (это необходимо для правильной работы ветвления).

Из корня проекта выполните:

svn propdel svn:mergeinfo -R
svn revert .
svn ci -m "Removed mergeinfo"
140
ответ дан 23 November 2019 в 23:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: