Как игнорировать соглашение / стиль кодирования при генерации diff с использованием SVN? - PullRequest
5 голосов
/ 14 марта 2011

Как мы можем игнорировать соглашение о кодировании при генерации diff с использованием svn?

Чтобы уточнить, я не хочу различать следующие два стиля кодирования

while (variableIter.hasNext())
{
    lModel = variableIter.next();
}

И

while (variableIter.hasNext()) {
    lModel = variableIter
   .next();
}

Если я запусту svn diff, я получу следующий diff:

 -            while (variableIter.hasNext())
 -            {
 -                lModel = variableIter.next();
 +            while (variableIter.hasNext()) {
 +               lModel = variableIter
 +               .next();

Но я не хочу, чтобы это было частью diff.Я бы хотел, чтобы svn игнорировал подобные различия в стиле кодирования.Итак, есть ли какая-либо опция в SVN, которая может помочь мне сделать это?ИЛИ Есть ли сценарий или что-то, что я мог бы запустить на diff, сгенерированном SVN, чтобы выплевывать только реальные изменения, а не изменения стиля кодирования?

TIA

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Я не знаю, есть ли у svn встроенная функция для этого.В любом случае, вы можете использовать какой-либо инструмент для равномерного отступа вашего кода перед отправкой, например инструмент отступа для C (http://www.gnu.org/software/indent/).

). Или вы можете попробовать запустить diff с помощью этой опции: svn diff -x -w

0 голосов
/ 21 марта 2011

Я не могу помочь с разницей, созданной непосредственно в Subversion.

Но как только вы поймете, что различия, которые вы видите, связаны с форматированием, вы можете перейти к альтернативе различные инструменты. Смотрите наши Smart Differencer инструменты. Эти инструменты зависят от языка. Они работают путем синтаксического анализа языка и построения абстрактных синтаксических деревьев, а затем сравнивают деревья. Это делает их полностью пустыми (и комментирует) безразличными; переформатирование кода не проявляется как разница. Различия представляются в виде элементов языка (операнд, выражение, оператор, объявление, блок, метод, класс, ...) и действий по редактированию (перемещение, удаление, вставка, копирование, переименование переменной в блоке) и точны до начала. строка / столбец и конец строки / столбца.

В настоящее время у нас есть SmartDifferencer для многих языков, включая C, C ++, C #, Java, JavaScript, PHP.

...