LINUX.ORG.RU

дифф файлов со слегонца отличающимся форматированием

 , ,


1

1

есть два исходника в которых есть практически идентичная ф-я (~100 строк) но со слегонца отличным форматированием (пробелы/табуляция) и несколькими строками кода.

При попытке сравнения при помощи

diff -bwu
,
meld
и
vimdiff -c 'set diffopt+=iwhite'
ни один из инструментов не находит идентичности в копиях этой ф-ии.

что пожно попробовать еще?

вырезать ф-и и положить в отдельные файлы помогает но от этого мне мало пользы

★★★★★

Последнее исправление: cvv (всего исправлений: 2)

привести форматирование к общему виду

anonymous
()
[ megabaks@desktop ] ~ $ diff -sbwu test_space test_tab 
Files test_space and test_tab are identical
[ megabaks@desktop ] ~ $ cat test_*
echo ololo
echo	ololo
[ megabaks@desktop ] ~ $
-s, --report-identical-files  report when two files are the same
megabaks ★★★★
()

Eclipse? Он вроде умеет не обращать внимание на форматирование.

orm-i-auga ★★★★★
()
Ответ на: комментарий от megabaks

а если в твои файлы добавить по килобайту данных с /dev/urandom пропущенных через xxd то diff не найдет между ними общей строчки :(((

cvv ★★★★★
() автор топика
Ответ на: комментарий от cvv
[ megabaks@desktop ] ~ $ diff -sbw portconf/portconf portconf/portconf-tab 
Files portconf/portconf and portconf/portconf-tab are identical
[ megabaks@desktop ] ~ $ diff -Nau0 portconf/portconf portconf/portconf-tab 
--- portconf/portconf	2013-04-08 01:19:03.000000000 +0400
+++ portconf/portconf-tab	2013-04-10 18:22:54.000000000 +0400
@@ -34 +34 @@
-		uses="$(echo -e ${uses} | tr "[:space:]" $'\n' | grep -v "^${opt#-}$" | grep -v "^\-${opt#-}$" | tr $'\n' " ")"
+												uses="$(echo -e ${uses} | tr "[:space:]" $'\n' | grep -v "^${opt#-}$" | grep -v "^\-${opt#-}$" | tr $'\n' " ")"
@@ -39 +39 @@
-	unset uses
+									unset uses
@@ -47 +47 @@
-	use="$USE"
+						use="$USE"
@@ -56 +56 @@
-[[ -h "/etc/make.profile" ]] && pre_profile="$(profile `readlink /etc/make.profile | sed -e 's|\.\.||'`)"
+[[ -h 						"/etc/make.profile" ]] && pre_profile="$(profile `readlink /etc/make.profile | sed -e 's|\.\.||'`)"
@@ -63 +63 @@
-	for target in `eselect --brief profile list`;do
+						for target in `eselect --brief profile list`;do
@@ -67 +67 @@
-		unset USEs
+							unset USEs
@@ -75 +75 @@
-		profile_uses="$(profile "/usr/portage/profiles/${target}")"
+						profile_uses="$(profile "/usr/portage/profiles/${target}")"
[ megabaks@desktop ] ~ $ wc -l portconf/portconf
1664 portconf/portconf
[ megabaks@desktop ] ~ $ wc -w portconf/portconf
6588 portconf/portconf
[ megabaks@desktop ] ~ $

ЧЯДНТ?
файлики по 60кило

megabaks ★★★★
()
Последнее исправление: megabaks (всего исправлений: 1)
Ответ на: комментарий от megabaks

Твои файлы «немного отличаются» а я говорю о «немного похожих»

cvv ★★★★★
() автор топика

я может совсем ничего не понимаю, но может все же форматирование привести к единому виду, а затем сравнить чем хочется?

Скажем http://uncrustify.sourceforge.net/: Source Code Beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA.

anonymous
()

Убрал различие в нескольких строках кода и этого хватило чтобы результат стал близким к ожидаемому. До сих пор не понимаю почему несколько строк кода в ф-и размером больше ста строк смогли сделать погоду :(((

cvv ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.