Toon posts:

[java] diff/merge classes

Pagina: 1
Acties:

Verwijderd

Topicstarter
(Ik heb al op google gezocht, en het enige dat ik kan vinden is GNU diff in java)

Stel, ik heb twee strings en ik wil ze vergelijken. deze strings kunnen volledige documenten zijn, en ik wil dan dus een soort 'diff' (als in GNU diff), welke ik dan naar andere computers kan sturen, welke dan deze 'diff' weer kunnen applyen op hun versie van de string en zo alle computers uptodate houden van de verandering van het document op 1 computer.

<adempauze>

Nou moet ik eerlijk zeggen dat ik geprobeerd heb het zelf te schrijven, maar dat is enorm veel werk. Ik zou gewoon zeggen dat er al zoiets moet bestaan (in java zelf, of via google), maar kan het niet zo snel vinden. Ik heb dus GNU diff in java gevonden, maar heb geen tools kunnen vinden waarmee ik die diffs op een string kan applyen, en dan kan ik er dus nog niks mee...

Niet als scriptrequest bedoelt natuurlijk, maar weet iemand of er iets dergelijks in java zit ingebouwd? :?.

  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 05-09 20:53
Persoonlijk zou ik een andere aanpak nemen. Bij de meeste GNU sources van een willekeurig programma word vaak een lijstje met MD5 hashes geleverd. Met deze 32 character strings kun je met een zekerheid van 1 op.. errug groot, vast stellen of een file/string hetzelfde is. (als ik bijvoorbeeld de sources van XFree download, krijg ik daar een lijstje bij met de MD5 hashes van die files, door zelf ook MD5 hashes van mijn gedownloade files te maken kan ik zien of ze afwijken (download succesvol of niet)).

Er zijn diverse implementaties van de de facto standaard MD5 (naast CRC32) in Java.

[edit] niet in Java zelf trouwens, maar even zoeken op Google levert wel wat op. :)

  • tomato
  • Registratie: November 1999
  • Niet online
Maar misschien wil hij wel weten wat er precies verschillend is...

Verder snap ik dit niet goed:
beelzebubu: Ik heb dus GNU diff in java gevonden, maar heb geen tools kunnen vinden waarmee ik die diffs op een string kan applyen, en dan kan ik er dus nog niks mee...
Wat kun je er dan wel mee :?
En wat is het probleem om hier iets anders mee te doen :?

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 09-09 11:02
Het probleem zit 'm er in, dat de code waar de topicstarter het over heeft wel de verschillen kan uitzoeken (wat GNU diff doet) en deze op een goede manier kan weergeven, maar deze niet op een bestand kan toepassen (wat in de GNU utillities door patch wordt gedaan, dus).

Verwijderd

Topicstarter
Op zondag 28 april 2002 18:14 schreef Soultaker het volgende:
Het probleem zit 'm er in, dat de code waar de topicstarter het over heeft wel de verschillen kan uitzoeken (wat GNU diff doet) en deze op een goede manier kan weergeven, maar deze niet op een bestand kan toepassen (wat in de GNU utillities door patch wordt gedaan, dus).
Juist. ;).

Het lost het probleem dus slechts voor de helft op...

  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 05-09 20:53
en zo alle computers uptodate houden van de verandering van het document op 1 computer.
Zo te zien alleen constateren DAT er een verschil is (en dan de nieuwste versie gebruiken als update).

Aan de andere kant.. zou je GNU patch niet kunnen gebruiken op binary bestanden? Zal wel niet omdat het van linebreaks uitgaat.. (toch?) Op die manier zou je met weinig data een bestand kunnen synchroniseren. :Y)

[edit] Topicstarter postte alweer :) Is er geen patch implementatie in Java?

Verwijderd

Topicstarter
Op zondag 28 april 2002 18:17 schreef Freak_NL het volgende:
[edit] Topicstarter postte alweer :) Is er geen patch implementatie in Java?
Ben ik momenteel aan 't zoeken - gaat echter niet zo makkelijk. Als je op google op 'patch java' zoekt krijg je alleaal opensource mailinglist archieven voor java projecten. :P.

Oftewel, kan, je ne sais pas... :{.

  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 27-08 21:32
Op zondag 28 april 2002 18:17 schreef Freak_NL het volgende:

[..]

Zo te zien alleen constateren DAT er een verschil is (en dan de nieuwste versie gebruiken als update).

Aan de andere kant.. zou je GNU patch niet kunnen gebruiken op binary bestanden? Zal wel niet omdat het van linebreaks uitgaat.. (toch?) Op die manier zou je met weinig data een bestand kunnen synchroniseren. :Y)
Het kan wel, maar het heeft nogal weinig zin. diff rapporteert van twee binary files alleen of ze verschillende zijn, je krijgt geen output waarmee je met patch iets mee kan. Je kunt met cmp bestanden wel byte-by-byte vergelijken, maar daarmee krijg je ook geen output voor patch.

Maar dit is nogal offtopic, dus houd ik mijn mond. ;)

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


Verwijderd

Topicstarter
Het gaat dus echt om text bestanden, niet om binary bestanden...

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 09-09 11:02
Als je echt niets kan vinden, kun je de patch-functionaliteit misschien wel zelf schrijven. Deze is immers veel eenvoudiger dan die van diff, dus dat moet nog wel te doen zijn. De broncode van patch is sowieso beschikbaar en aangezien jij waarschijnlijk maar één van de vele mogelijke diff uitvoerformaten wilt kunnen gebruiken, zal je met een dagje werk wel klaar zijn.

Verwijderd

Topicstarter
Da's waar... Ik zal komende dagen eens kijken of dat te doen is. :).
Pagina: 1