6

Как я могу восстановить одно из нескольких свойств в каталоге из командной строки SVN?

У моего svn trunk есть свойство svn:externals для импорта внешнего репо.

/trunk
  svn:external = /external/trunk

Когда я настраиваю новую ветку foo, внешняя ветвь также изменяется, чтобы указывать на ветку:

/branches/foo
  svn:external = /external/branches/foo

Иногда, когда я сливаю ветку обратно в ствол, это свойство копируется, и в итоге я получаю:

/trunk
  svn:external = /external/branches/foo

Обычно я могу запустить svn revert . --depth=empty чтобы отменить слияние свойств, но в каталоге также есть и другие свойства, которые также должны быть возвращены, в частности svn:mergeinfo . Из моего GUI-клиента я могу довольно легко вернуть отдельные свойства, но не всегда помню, как это сделать. Есть ли способ сделать то же самое прямо из строки svn cmd, или мне нужно написать какую-нибудь сумасшедшую оболочку для svn propget чтобы получить и отменить diff?

2 ответа2

9

svn propset svn:externals "$(svn propget svn:externals . -r HEAD)" .

это устанавливает для свойства значение HEAD. Это допустимый обходной путь, поскольку revert может быть применен только ко всем свойствам и не существует для отдельных свойств.

0

Для моей будущей ссылки больше, чем для вас, видя, как у вас, вероятно, есть ответ ...

svn propget PROPNAMETOREVERT `svn info | perl -ne 'print if s/URL: (.*)/\1/'` | perl -ne 'chomp; print' | svn propset PROPNAMETOREVERT  -F - .

Работал для меня (для однострочного свойства, возможно, потребуется модификация для одного с несколькими строками).

Что может быть понятно из сценария :-)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .