» »

diff tool, ki ignorira white space?

diff tool, ki ignorira white space?

MrStein ::

Je kaki diff/compare tool, ki ignorira white space?

Torej da spremembe tipa "dodan presledek", "vrstica razbita na dve" in podobno NE označi kot spremembo.

Veliko programov ima opcijo "ignore white space" ampak je zelo omejena.

Recimo že tole noben, ki sem ga probal, ne ignorira:

void foo(){
    int a;

>>>>
void foo()
{
    int a;


Najbližje od teh, ki sem jih našel, je SourceGear DiffMerge. Zgornji primer obvlada, a le, če je fajl specifično tipa .java (in verjetno C, nisem testiral). A označi za spremenjeno, če se "a=b" spremeni v "a = b". Se verjetno da potweakati, ker ima program ogromno opcij in možnost custom rule-ov.

A obstaja tool, ki obvlada to "po defaultu" ? Torej da res ne šteje sprememb v white space kot spremembe?
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

steev ::

Mogoče nek code fomatter daj čez oba fajla, pa potem primerjaj?
+
:|

XyNOBvxWVJ ::

To je tako osnoven feature, da ima skoraj vsak razširjen normalen merge tool ima setting 'ignore whitespaces' samo najti je potrebno.

c3p0 ::

To ni le diff oz. white space razlika, v tem primeru rabiš že tool, ki zna parsat jezik in ignorira spremembe v code formattingu.

Invictus ::

Zanic code practice imas, ce ga sploh imas, zato so problemi...
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

XyNOBvxWVJ ::

Ne vem, kaj Mr uporablja in za koga dela pri reševanju merge konfliktov, ampak pri meni že Community tool podpirajo v smislu...
Normalno pa je tudi, da je formatiranje kode formalizirano.

Do not ignore
Trim whitespaces
Ignore whitespaces
Ignore whitespaces and empty lines
Ignore imports and formatting


Mr, samo zate:

Whitespace
Define how the differences viewer should treat whitespaces.

Do not ignore: white spaces are important, and all the differences are highlighted. This option is selected by default.

Trim whitespaces: trim whitespaces if they appear in the end and at the beginning of a line (("\t", " ")).
If two lines differ in trailing whitespaces only, these lines are considered equal.
If two lines are different, trailing whitespaces are not highlighted in the By word mode.

Ignore whitespaces: white spaces are not important, regardless of their location in the source code.

Ignore whitespaces and empty lines: ignores whitespaces and empty lines. The following entities are ignored:
all whitespaces (as in the 'Ignore whitespaces' option)
all added or removed lines consisting of whitespaces only
all changes consisting of splitting or joining lines without changes to non-whitespace parts.
For example, differences between a b c and a \n b c are not highlighted in this mode.

Ignore imports and formatting: changes within import statements and whitespaces are ignored (whitespaces within String literals are respected though).

Zgodovina sprememb…

eventyrer ::

MrStein je izjavil:

Je kaki diff/compare tool, ki ignorira white space?

Torej da spremembe tipa "dodan presledek", "vrstica razbita na dve" in podobno NE označi kot spremembo.

Veliko programov ima opcijo "ignore white space" ampak je zelo omejena.

Recimo že tole noben, ki sem ga probal, ne ignorira:

void foo(){
int a;

>>>>
void foo()
{
int a;


Najbližje od teh, ki sem jih našel, je SourceGear DiffMerge. Zgornji primer obvlada, a le, če je fajl specifično tipa .java (in verjetno C, nisem testiral). A označi za spremenjeno, če se "a=b" spremeni v "a = b". Se verjetno da potweakati, ker ima program ogromno opcij in možnost custom rule-ov.

A obstaja tool, ki obvlada to "po defaultu" ? Torej da res ne šteje sprememb v white space kot spremembe?



v orodju "MELD" se da to nastaviti.

Najbrž se da nastaviti tudi v Visual Studio Code.

Zgodovina sprememb…

c3p0 ::

Lahko pa oba fajla, ki ju želiš primerjati spustiš skozi nek code formatter in nato diff-aš.

MrStein ::

c3p0 je izjavil:

Lahko pa oba fajla, ki ju želiš primerjati spustiš skozi nek code formatter in nato diff-aš.

Lahko, ampak ko primerjaš celotna drevesa, to početi za vsakega, sploh, če je v formatu, za katerega nimaš formaterja...

Saj se da. Enako kot brez računalnika narediti vse. Le dlje traja.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

one-half ::

MrStein je izjavil:

Je kaki diff/compare tool, ki ignorira white space?


https://www.araxis.com/merge/index.en

Samo ne se navlect na njega, boh ne daj, da z njim kaj mergas, ker se bos kasneje pocutil, kot bi ti kdo roke polomil. Cez 30 dni postane svinjsko drag. Kar je skoda, bi ga sicer takoj kupil (ranga 100 eurov jim dam, 200+ za three-way merge, naj si pa nekam zataknejo), tako je pa... kh... kh... treba sem in tja... kh... kh... odpakirati in kaksen byte ali malo vec popravit na 0x90... ;)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

Zgodovina sprememb…

  • spremenil: one-half ()

MrStein ::

eventyrer je izjavil:


v orodju "MELD" se da to nastaviti.

Kako?
Sem vklopil vse filtre, pa za podan primer kaže:



Torej ne ignorira te spremembe, ki je zgolj white space.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

c3p0 ::

MrStein je izjavil:

c3p0 je izjavil:

Lahko pa oba fajla, ki ju želiš primerjati spustiš skozi nek code formatter in nato diff-aš.

Lahko, ampak ko primerjaš celotna drevesa, to početi za vsakega, sploh, če je v formatu, za katerega nimaš formaterja...

Saj se da. Enako kot brez računalnika narediti vse. Le dlje traja.


Je ena opcija. S kratko skriptico (par minut dela) ti primerja tudi celotno drevo. Odvisno od potreb, uporabiš, ali pa ne uporabiš.

GupeM ::

Nemogoče.

Kako naj diff tool ve, ali gre za takšen primer, ali za C kodo? Primer:

<pre>
void foo(){
    int a;
</pre>


<pre>
void foo()
{
    int a;
</pre>

To je razlika, ki C-ju res nič ne pomeni, HTML-ju pa. Lahko je za uporabnika velika razlika, če gre za tutorial o tem, kako lahko delaš bloke v C-ju.

Zgodovina sprememb…

  • spremenil: GupeM ()

MrStein ::

Nepomembno.
Iščem tool, ki ignorira white space. Vključno z newline.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

eventyrer ::

MrStein je izjavil:

eventyrer je izjavil:


v orodju "MELD" se da to nastaviti.

Kako?
Sem vklopil vse filtre, pa za podan primer kaže:



Torej ne ignorira te spremembe, ki je zgolj white space.



Skrajno levo v EDITOR sekciji imaš show whitespace. Ali to rabiš?


AJA ne, sori, ti rabiš v sekciji TEXT FILTERS obkljukati recimo "ALL WHITESPACE".
Tiste zgornje opcije "trim blank line" jaz nimam obkljukane.

Zgodovina sprememb…

predi ::

OP, to, da orodja, ki si jih našel, obstajajo samo za specifične jezike, je pričakovano. Diff, ki ga ti iščeš, je pogojen z gramatiko konkretnega jezika, ker dejansko iščeš parse tree diff, ignorirati pa najbrž želiš zgolj nepomemben whitespace za konkretni jezik, ne vsega. Že to ali je newline sploh tretiran kot whitespace, je pogojeno z gramatiko jezika. Noben line-based text differ ti pri arbitrarnem jeziku ne bo pomagal na zanesljiv način, sploh pa ne z default nastavitvami.

GupeM ::

predi je izjavil:

Že to ali je newline sploh tretiran kot whitespace, je pogojeno z gramatiko jezika.

Pa še to v istem jeziku včasih pomeni whitespace, včasih pa ne. Primer, python:

x = 5
y = 5


a = """
x = 5
y = 5
"""

MrStein ::

predi je izjavil:

OP, to, da orodja, ki si jih našel, obstajajo samo za specifične jezike, je pričakovano.

Ne, iščem orodje, ki dela "IF change_is_only_NL() THEN ignore()".
Neodvisno od vsebine ali formata.

Preanalizirate. Rabim točno to enostavno zadevo, katero sem napisal. Ne rabim AI, ki bi zraven še rešil svet.

Enako, kot GNU diff ima opciji:

 -i, --ignore-case
              ignore case differences in file contents

 -b, --ignore-space-change
              ignore changes in the amount of white space


Ja, v nekaterih jezikih so te spremembe pomembne. Ampak orodje ima in ponuja te opcije in uporabnik jih lahko uporabi. Če želi. Če ne, pa pač ne.
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

Zgodovina sprememb…

  • spremenil: MrStein ()

MrStein ::

eventyrer je izjavil:


AJA ne, sori, ti rabiš v sekciji TEXT FILTERS obkljukati recimo "ALL WHITESPACE".
Tiste zgornje opcije "trim blank line" jaz nimam obkljukane.

Ne, ne dela.




Če odkljukam "All whitespace", potem pokaže še zadnjo vrstico kot spremenjeno. Ampak prvo vrstico/dve vedno kaže kot spremenjeno, ne glede na opcije.


PS: Compare v IDEA pa je skoraj tak, kot iščem. Z opcijo "Ignore whitespaces and empty lines" lepo zgornji primer pokaže kot "brez sprememb".
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

XyNOBvxWVJ ::

MrStein je izjavil:

PS: Compare v IDEA pa je skoraj tak, kot iščem. Z opcijo "Ignore whitespaces and empty lines" lepo zgornji primer pokaže kot "brez sprememb".

Kako krasno, le kdo bi si mislil ;)

MrStein ::

Bi prišli do tega hitreje, če bi v prejšnjem sporočilu omenil, da govoriš o IDEA ;)
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!

Zimonem ::

XyNOBvxWVJ ::

MrStein je izjavil:

Bi prišli do tega hitreje, če bi v prejšnjem sporočilu omenil, da govoriš o IDEA ;)

Oprosti, 'službena' razvada, da ne prinesem vsega na pladnju... Saj veš, da namamiš in potem zaračunaš. Sem pozabil, da gre za forum. Je pa bilo vseeno dovolj sledi, da si našel kljub temu :-)

eventyrer ::

MrStein je izjavil:

eventyrer je izjavil:


AJA ne, sori, ti rabiš v sekciji TEXT FILTERS obkljukati recimo "ALL WHITESPACE".
Tiste zgornje opcije "trim blank line" jaz nimam obkljukane.

Ne, ne dela.




Če odkljukam "All whitespace", potem pokaže še zadnjo vrstico kot spremenjeno. Ampak prvo vrstico/dve vedno kaže kot spremenjeno, ne glede na opcije.


PS: Compare v IDEA pa je skoraj tak, kot iščem. Z opcijo "Ignore whitespaces and empty lines" lepo zgornji primer pokaže kot "brez sprememb".


čudno ker sem ravnokar probal in meni meld deluje čudovito. Sem naredil white space na koncu vrstice in pa eno prazno vrstico za test.

MELD je oboje lepo ignoriral.

Sem pa obkljukal zgolj ALL WHITESPACE, tisto zgoraj (trim) nisem.

eventyrer je izjavil:

Ampak prvo vrstico/dve vedno kaže kot spremenjeno, ne glede na opcije.



ja pa saj prvi dve vrstici si dejansko spremenil, tam ni nobenega whitespace označenega.
New line ti je označilo kar je zelo pravilno. White space so izključno samo presledki in prazne vrstice.

edit.:
glej ga zlomka, imaš prav. Newline je tudi lahko smatran kot white-space. Nisem vedel.
Whitespace character @ Wikipedia

Tu ti žal ne znam pomagati.

Zgodovina sprememb…

link_up ::

diff -w?
In and Out

predi ::

link_up je izjavil:

diff -w?
Line-based diff.

-w
--ignore-all-space

Ignore white space when comparing lines.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Excel stolpec vejica

Oddelek: Pomoč in nasveti
111076 (780) sloxl8
»

Trdovratne težave v HTML/CSS-ju (strani: 1 2 )

Oddelek: Programiranje
887817 (5795) joker16_7
»

meni razporejen po celotni dolžini

Oddelek: Izdelava spletišč
71979 (1847) XzupanX
»

poravnava li elementov

Oddelek: Izdelava spletišč
81958 (1823) boss-tech
»

[c#] string.Trim

Oddelek: Programiranje
51212 (1158) darkolord

Več podobnih tem