Управление XML-документами в Subversion, игнорируя форматирование

Мне нужно управлять XML-документами в Subversion, но я не хочу управлять форматированием, которое может отличаться в зависимости от того, кто редактирует файл.

Я вижу два решения: Либо отформатируйте файл каждый раз с известным форматированием, прежде чем регистрироваться. Или предоставьте svn программу diff, которая активно отклоняет форматирование из алгоритма diff. В конечном счете, diff должен поддерживать трехстороннее слияние, активно игнорируя форматирование XML.

Что вы рекомендуете?

(То же самое обычно применяется к исходным файлам кода, но проблема более сложна.)

4 голоса | спросил Hugo 21 AMpTue, 21 Apr 2009 00:30:11 +040030Tuesday 2009, 00:30:11

4 ответа


0

У меня нет большого личного опыта с такой установкой.

Для второго метода (пользовательский diff) я нашел пример «Описание API для библиотеки репозитория Netopeer» , которое представляет собой подробное описание установки с Subversion и, среди прочего, xmldiff .

Для другого подхода, преобразования в известный формат перед сохранением в Subversion, я рекомендую Канонический XML в качестве формата. xmllint , например, может конвертировать в этот формат:

% cat complique.xml
<?xml version="1.0" encoding="utf-8"?>
<toto   >
    <truc      a="1" >Machin &#x43; </truc >café</toto>

% xmllint --c14n complique.xml    
<toto>
    <truc a="1">Machin C </truc>café</toto>

Чтобы интегрировать с Subversion, вы можете предварительно проверить, что переданный файл равен каноническому файлу. Возможный такой сценарий - моя предварительная фиксация с использованием xmllint . См. Также сценарий принудительного применения для примера.

ответил bortzmeyer 21 AMpTue, 21 Apr 2009 11:10:06 +040010Tuesday 2009, 11:10:06
0

Считаете ли вы, что следующие два фрагмента XML одинаковы ...?

Fragment1:

<foo xmlns="http://foo.com/foo">
    <bar>Hello</bar>
</foo>

FRAGMENT2:

<ns1:foo xmlns:ns1="http://foo.com/foo">
    <ns1:bar>Hello</ns1:bar>
</ns1:foo>

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

ответил Martin Peck 21 AMpTue, 21 Apr 2009 04:16:56 +040016Tuesday 2009, 04:16:56
0

Если под «форматированием» вы подразумеваете «пробел», вы можете настроить svn diff, чтобы игнорировать пробел с помощью -w в команде diff:

$ svn diff -x -w [file]

См. svn help diff для получения дополнительной информации.

ответил matpie 21 AMpTue, 21 Apr 2009 01:17:44 +040017Tuesday 2009, 01:17:44
0

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

ответил KOGI 21 PMpTue, 21 Apr 2009 21:50:14 +040050Tuesday 2009, 21:50:14

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132