This is the historical archive of the now-inactive 'grubstreet' list.
Discussion on OpenGuides development
has now moved to OpenGuides-Dev.
Discussion on The Open Guide to
London now takes place on OpenGuides-London.
[grubstreet] Parallelogram of merges
[prev] [thread] [next] [lurker] [Date index for 2003/1/7]
From: Ivor Williams
Subject: [grubstreet] Parallelogram of merges
Date: 15:15 on 07 Jan 2003
Subject: [grubstreet] Parallelogram of merges
Date: 15:15 on 07 Jan 2003
------ =_NextPart_000_01C2B65F.CACB88C0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Attached is a script I wrote a year ago, which works as it stands. (Pod is not complete, but there is enough t be going on) The idea is to merge two sets of changes to the same file - without needing to install a VCS. I think that this has applications for Grubstreet, both in terms of Perl patches, and in terms of wiki content. The parallelogram comes from considering the following picture of what is happening: Base source file (starting point) / \ / \ / \ Patch A Patch B \ / \ / \ / File with combination of both patches I am working on an OO interface, which will have capabilities of diff, patch and merge. This could be useful if we have offline content that needs merging between wikis. Ivor. ------ =_NextPart_000_01C2B65F.CACB88C0 Content-Type: application/x-perl; name="merge.pl" Content-Transfer-Encoding: base64 IyEvdXNyL2xvY2FsL2Jpbi9wZXJsCgojIEdlbmVyYWwgbWVyZ2UgZmFjaWxpdHkKIwojCUkuIFdp bGxpYW1zCUphbnVhcnkgMjAwMgoKdXNlIHN0cmljdDsKdXNlIEFsZ29yaXRobTo6RGlmZiBxdyh0 cmF2ZXJzZV9zZXF1ZW5jZXMpOwoKewoJaWYgKEBBUkdWICE9IDMpCgl7CgkJcHJpbnQgPDxFTkQK ClVzYWdlOiBtZXJnZSA8YmFzZV9wb2ludD4gPGNoYW5nZWQxPiA8Y2hhbmdlZDI+CgpiYXNlX3Bv aW50IGhlcmUgaXMgdGhlIGZpbGUgYmVmb3JlIGVpdGhlciBzZXQgb2YgY2hhbmdlcyB3YXMgYXBw bGllZC4KCkVORAoKOwoJCWV4aXQ7Cgl9CgoJbXkgKCRwYXJlbnQsJGZpbGUxLCRmaWxlMikgPSBA QVJHVjsKCiMgR2V0IHRoZSB0ZXh0IGludG8gYXJyYXlzIEBmMCwgQGYxIGFuZCBAZjIuCgoJb3Bl biBGMCwkcGFyZW50IG9yIGRpZSAiRmFpbGVkIHRvIG9wZW4gJHBhcmVudCwgJCFcblN0b3BwZWQg IjsKCglteSBAZjAgPSAoPEYwPik7CgljbG9zZSBGMDsKCglvcGVuIEYxLCRmaWxlMSBvciBkaWUg IkZhaWxlZCB0byBvcGVuICRmaWxlMSAsJCFcblN0b3BwZWQgIjsKCglteSBAZjEgPSAoPEYxPik7 CgljbG9zZSBGMTsKCglvcGVuIEYyLCRmaWxlMiBvciBkaWUgIkZhaWxlZCB0byBvcGVuICRmaWxl MiAsJCFcblN0b3BwZWQgIjsKCglteSBAZjIgPSAoPEYyPik7CgljbG9zZSBGMjsKCiMgTm93IGRv IHRoZSBkZWx0YXMgYWdhaW5zdCBAZjAuCiMgQGlucyBhcnJheSBob2xkcyByZWZlcmVuY2VzIHRv IGluc2VydHMsIGFuZCBpcyBpbmRleGVkIGJ5IEBmMCBpbmRleAojCSAgICAgaW5zZXJ0IEJFRk9S RSBAZjAgbGluZQojICRkZWwgc3RyaW5nIGJ1aWxkcyBzcGFjZXMgYW5kIC0tLXMgKC0tLSA9IGRl bGV0ZSAzIGxpbmVzKQoKCW15IEBpbnMxOwoJbXkgJGRlbDEgPSAnJzsKCgl0cmF2ZXJzZV9zZXF1 ZW5jZXMoIFxAZjAsIFxAZjEsIHsKCQlNQVRDSCA9PiBzdWIgeyAkZGVsMSAuPSAnICcgfSwKCQlE SVNDQVJEX0EgPT4gc3ViIHsgJGRlbDEgLj0gJy0nIH0sCgkJRElTQ0FSRF9CID0+IHN1YiB7IHB1 c2ggQHskaW5zMVskX1swXV19LCRmMVskX1sxXV0gfSwKCQkJfSApOwoKCW15IEBpbnMyOwoJbXkg JGRlbDIgPSAnJzsKCgl0cmF2ZXJzZV9zZXF1ZW5jZXMoIFxAZjAsIFxAZjIsIHsKCQlNQVRDSCA9 PiBzdWIgeyAkZGVsMiAuPSAnICcgfSwKCQlESVNDQVJEX0EgPT4gc3ViIHsgJGRlbDIgLj0gJy0n IH0sCgkJRElTQ0FSRF9CID0+IHN1YiB7IHB1c2ggQHskaW5zMlskX1swXV19LCRmMlskX1sxXV0g fSwKCQkJfSApOwoKIyBGaXJzdCBwYXNzIGNvbmZsaWN0IGRldGVjdGlvbjogZGVsZXRpb24gb24g ZmlsZSAxIGFuZCBpbnNlcnRpb24gb24gZmlsZSAyCgoJJGRlbDEgPX4gcyhcLSspKAoJewoJCW15 ICRzdGxpbiA9IGxlbmd0aCAkYDsKCQlteSAkbnVtZGVsID0gbGVuZ3RoICQmOwoKCQlteSBAY29u ZmwgPSBncmVwICRfLEBpbnMyWyRzdGxpbisxLi4kc3RsaW4rJG51bWRlbC0xXTsKCQlAY29uZmwg PyAnKicgeCAkbnVtZGVsIDogJCY7Cgl9KWVnOwoKIyBOb3cgdGhlIG90aGVyIHdheSByb3VuZDog ZGVsZXRpb24gb24gZmlsZSAyIGFuZCBpbnNlcnRpb24gb24gZmlsZSAxCgoJJGRlbDIgPX4gcyhc LSspKAoJewoJCW15ICRzdGxpbiA9IGxlbmd0aCAkYDsKCQlteSAkbnVtZGVsID0gbGVuZ3RoICQm OwoKCQlteSBAY29uZmwgPSBncmVwICRfLEBpbnMxWyRzdGxpbisxLi4kc3RsaW4rJG51bWRlbC0x XTsKCQlAY29uZmwgPyAnKicgeCAkbnVtZGVsIDogJCY7Cgl9KWVnOwoKIyBDb25mbGljdCB0eXBl IDEgaXMgaW5zZXJ0IG9mIDIgaW50byBkZWxldGVkIDEsIENvbmZsaWN0IHR5cGUgMiBpcyBpbnNl cnQgb2YgMSBpbnRvIGRlbGV0ZWQgMgojIEBkZWZlciBpcyB1c2VkIHRvIGhvbGQgdGhlICdvdGhl ciBoYWxmJyBhbHRlcm5hdGl2ZSBmb3IgdGhlIGNvbmZsaWN0CgoJbXkgJGNvbmZsaWN0ID0gMDsK CW15ICRjb25mbGljdF90eXBlID0gMDsKCW15IEBkZWZlcjsKCglmb3JlYWNoIG15ICRsaW5lIChA ZjAsJycpCgl7CgojIEdldCBkZXRhaWxzIHBlcnRhaW5pbmcgdG8gY3VycmVudCBAZjAgaW5wdXQg bGluZSAKCgkJbXkgJGQxID0gc3Vic3RyICRkZWwxLDAsMTsKCQkkZGVsMSA9IHN1YnN0ciAkZGVs MSwxOwoJCW15ICRpbnMxID0gc2hpZnQgQGluczE7CgkJbXkgJGQyID0gc3Vic3RyICRkZWwyLDAs MTsKCQkkZGVsMiA9IHN1YnN0ciAkZGVsMiwxOwoJCW15ICRpbnMyID0gc2hpZnQgQGluczI7Cgoj IEluc2VydC9pbnNlcnQgY29uZmxpY3QuIFRoaXMgaXMgbm90IGEgY29uZmxpY3QgaWYgYm90aCBp bnNlcnRzIGFyZSBpZGVudGljYWwuCgoJCWlmICgkaW5zMSAmJiAkaW5zMiAmJiAhJmVxdWFsKCRp bnMxLCRpbnMyKSkKCQl7CgkJCXByaW50ICcqJ3gyMCwiU3RhcnQgb2YgY29uZmxpY3QgIiwrKyRj b25mbGljdCwKCQkJIiAgSW5zZXJ0IHRvICRmaWxlMSwgSW5zZXJ0IHRvICRmaWxlMiAiLCcqJ3g2 MCwiXG4iOwoKCQkJcHJpbnQgZm9yZWFjaCBAJGluczE7CgkJCXByaW50ICcqJ3gxMDAsIlxuIjsK CQkJcHJpbnQgZm9yZWFjaCBAJGluczI7CgkJCXByaW50ICcqJ3gyMCwiRW5kIG9mIGNvbmZsaWN0 ICIsJGNvbmZsaWN0LCcqJ3g4MCwiXG4iOwoJCX0gZWxzaWYgKCEkY29uZmxpY3RfdHlwZSkJI0lu c2VydC9EZWxldGUgY29uZmxpY3QKCQl7CgojIE5vcm1hbCBpbnNlcnRpb24gLSBtYXkgYmUgZnJv bSAkaW5zMSBvciAkaW5zMi4gQXBwbHkgdGhlIGluc2VyIGFuZCBqdW5rIGJvdGggJGluczEgYW5k ICRpbnMyCgoJCQkkaW5zMSB8fD0gJGluczI7CgoJCQlwcmludCBmb3JlYWNoIEAkaW5zMTsKCgkJ CXVuZGVmICRpbnMxOwoJCQl1bmRlZiAkaW5zMjsKCQl9CgojIERldGVjdCBzdGFydCBvZiBjb25m bGljdCAxIGFuZCAyCgoJCWlmICghJGNvbmZsaWN0X3R5cGUgJiYgJGQxIGVxICcqJykKCQl7CgkJ CXByaW50ICcqJ3gyMCwiU3RhcnQgb2YgY29uZmxpY3QgIiwrKyRjb25mbGljdCwKCQkJIiAgRGVs ZXRlIGZyb20gJGZpbGUxLCBJbnNlcnQgdG8gJGZpbGUyICIsJyoneDYwLCJcbiI7CgoJCQkkY29u ZmxpY3RfdHlwZSA9IDE7CgkJfQoKCQlpZiAoISRjb25mbGljdF90eXBlICYmICRkMiBlcSAnKicp CgkJewoJCQlwcmludCAnKid4MjAsIlN0YXJ0IG9mIGNvbmZsaWN0ICIsKyskY29uZmxpY3QsCgkJ CSIgIERlbGV0ZSBmcm9tICRmaWxlMiwgSW5zZXJ0IHRvICRmaWxlMSAiLCcqJ3g2MCwiXG4iOwoK CQkJJGNvbmZsaWN0X3R5cGUgPSAyOwoJCX0KCiMgSGFuZGxlIGNhc2Ugd2hlcmUgd2UgYXJlIGlu IGFuIEluc2VydC9EZWxldGUgY29uZmxpY3QgYmxvY2sgYWxyZWFkeQoKCQlpZiAoJGNvbmZsaWN0 X3R5cGUgPT0gMSkKCQl7CgkJCWlmICgkZDEgZXEgJyonKQoJCQl7CgojIERlbGV0aW9uIGJsb2Nr IGNvbnRpbnVlcy4uLgoJCQkJcHVzaCBAZGVmZXIsKEAkaW5zMikgaWYgJGluczI7CgkJCQlwdXNo IEBkZWZlciwkbGluZSBpZiAhJGQyOwoJCQl9IGVsc2UKCQkJewoKIyBoYW5kbGUgZW5kIG9mIGJs b2NrLCBkdW1wIG91dCBAZGVmZXIgYW5kIGNsZWFyIGl0CgoJCQkJcHJpbnQgJyoneDEwMCwiXG4i OwoJCQkJcHJpbnQgZm9yZWFjaCBAZGVmZXI7CgkJCQl1bmRlZiBAZGVmZXI7CgkJCQlwcmludCAn Kid4MjAsIkVuZCBvZiBjb25mbGljdCAiLCRjb25mbGljdCwnKid4ODAsIlxuIjsKCQkJCSRjb25m bGljdF90eXBlID0gMDsKCQkJfQoJCX0KCgkJaWYgKCRjb25mbGljdF90eXBlID09IDIpCgkJewoJ CQlpZiAoJGQyIGVxICcqJykKCQkJewoKIyBEZWxldGlvbiBibG9jayBjb250aW51ZXMuLi4KCQkJ CXB1c2ggQGRlZmVyLChAJGluczEpIGlmICRpbnMxOwoJCQkJcHVzaCBAZGVmZXIsJGxpbmUgaWYg ISRkMTsKCQkJfSBlbHNlCgkJCXsKCiMgaGFuZGxlIGVuZCBvZiBibG9jaywgZHVtcCBvdXQgQGRl ZmVyIGFuZCBjbGVhciBpdAoKCQkJCXByaW50ICcqJ3gxMDAsIlxuIjsKCQkJCXByaW50IGZvcmVh Y2ggQGRlZmVyOwoJCQkJdW5kZWYgQGRlZmVyOwoJCQkJcHJpbnQgJyoneDIwLCJFbmQgb2YgY29u ZmxpY3QgIiwkY29uZmxpY3QsJyoneDgwLCJcbiI7CgkJCQkkY29uZmxpY3RfdHlwZSA9IDA7CgkJ CX0KCQl9CgkJcHJpbnQgJGxpbmUgdW5sZXNzICgkZDEgZXEgJy0nIHx8ICRkMiBlcSAnLScpICYm ICEkY29uZmxpY3RfdHlwZTsKCX0KfQoKIyBFcXVhbGl0eSBvZiB0d28gYXJyYXkgcmVmZXJlbmNl cyAoY29udGVudHMpCgpzdWIgZXF1YWwKewoJbXkgKCRhLCRiKSA9IEBfOwoKCXJldHVybiAwIGlm IEAkYSAhPSBAJGI7CgoJZm9yZWFjaCAoMC4uJCMkYSkKCXsKCQlyZXR1cm4gMCBpZiAkYS0+WyRf XSBuZSAkYi0+WyRfXTsKCX0KCgkxOwp9Cl9fRU5EX18KCj1oZWFkMSBUSVRMRQoKbWVyZ2UucGwK Cj1oZWFkMSBOQU1FCgptZXJnZSB1dGlsaXR5Cgo9aGVhZDEgU1lOT1BTSVMKCglwZXJsIG1lcmdl LnBsIEk8c3RhcnRmaWxlPiBJPGNoYW5nZWQxPiBJPGNoYW5nZWQyPiBFPGd0Pkk8cmVzdWx0Zmls ZT4KCj1oZWFkMSBERVNDUklQVElPTgoKR2VuZXJhbCB0ZXh0IG1lcmdlIHV0aWxpdHkgdG8gY29t YmluZSB0d28gY2hhbmdlIHN0cmVhbXMgdG8gYSBnaXZlbiBmaWxlLiBUaGlzIGlzCmludGVuZGVk IGZvciB1c2UgYnkgYXBwbGljYXRpb24gZGV2ZWxvcGVycyBhcyBhIHRvb2wgdG8gbWVyZ2UgY2hh bmdlcyB0byBhIHNvdXJjZQpmaWxlIGZyb20gdHdvIHN0cmVhbXMgb2Ygd29yay4KCkRpZmZlcmVu Y2VzIGFyZSBkZXRlcm1pbmVkIGZvciBlYWNoIGZpbGUgYWdhaW5zdCB0aGUgc3RhcnQgZmlsZS4g VGhlIGRpZmZlcmVuY2VzCmFyZSByZXByZXNlbnRlZCBieSBhIHNlcmllcyBvZiBpbnNlcnRpb25z IGFuZCBkZWxldGlvbnMuIENoYW5nZXMgZnJvbSB0aGUgdHdvIApzdHJlYW1zIGFyZSB0aGVuIG1l cmdlZC4gT2NjdXJyZW5jZXMgb2YgY2hhbmdlcyBoYXBwZW5pbmcgdG8gdGhlIHNhbWUgYmxvY2sg b2YgCnRleHQgcmVzdWx0IGluIEI8Y29uZmxpY3RzPiB3aGljaCByZXF1aXJlIG1hbnVhbCBlZGl0 aW5nLgoKVHdvIGtpbmRzIG9mIGNvbmZsaWN0IGNhbiBvY2N1ci4KCj1vdmVyCj1pdGVtIEluc2Vy dC9JbnNlcnQgY29uZmxpY3QKClRoaXMgaXMgdGhlIG1vcmUgY29tbW9ubHkgb2NjdXJyaW5nIHR5 cGUgb2YgY29uZmxpY3QuIAoKQm90aCBzdHJlYW1zIGFyZSBpbnNlcnRpbmcgb3IgcmVwbGFjaW5n IGF0IHRoZSBzYW1lIGxpbmUgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS4KSWYgdGhlIGNoYW5nZXMg YXJlIGlkZW50aWNhbCwgbm8gY29uZmxpY3Qgb2NjdXJzLiBPdGhlcndpc2UsIGEgY29uZmxpY3Qg YmxvY2sgCmFwcGVhcnMgaW4gdGhlIG91dHB1dDoKQzwKKioqKioqKioqKioqKioqKioqKioqKipT dGFydCBvZiBjb25mbGljdCAxOiBJbnNlcnQgdG8gY2hhbmdlMS5wbCwgSW5zZXJ0IHRvIGNoYW5n ZTIucGwKICAuCiAgLgljaGFuZ2UxLnBsIGluc2VydGlvbgogIC4KKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgogIC4KICAuICAgICBjaGFuZ2UyLnBsIGluc2VydGlvbgogIC4KKioqKioqKioqKioqKioq KioqKioqKipFbmQgb2YgY29uZmxpY3QgMSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKj4KCkl0IGlzIG5vdyBkb3duIHRvIHRoZSBkZXZlbG9wZXIgdG8gZGVjaWRlIGhvdyB0 byByZXNvbHZlIHRoZSBjb25mbGljdC4gV2hlbiB0aGVzZSBjaGFuZ2VzCmFyZSBpbnNlcnRpb25z IGFzIG9vcG9zZWQgdG8gcmVwbGFjZW1lbnRzLCB0aGUgcmVzb2x1dGlvbiB3aWxsIHVzdWFsbHkg YmUgdG8gaW5zZXJ0IG9uZSAKY2h1bmsgb2YgY29kZSwgdGhlbiB0aGUgb3RoZXIuCgo9YmFjayAK PWhlYWQxIFJFQURNRQoKTWVyZ2UgaXMgdXNlZCB0byBjb21iaW5lIHR3byBzZXRzIG9mIGNoYW5n ZXMgdG8gYSBnaXZlbiB0ZXh0IGZpbGUuIFRoaXMgZW11bGF0ZXMgc29tZQpvZiB0aGUgZnVuY3Rp b25hbGl0eSBvZiBhIHZlcnNpb24gY29udHJvbCBzeXN0ZW0uIENoYW5nZXMgYXJlIGNvbWJpbmVk LCBhbmQgdGhlIHJlc3VsdAptYXkgaW5jbHVkZSBCPGNvbmZsaWN0cz4gd2hpY2ggcmVxdWlyZSBt YW51YWwgcmVzb2x1dGlvbiB3aXRoIGEgdGV4dCBlZGl0b3IuIAo= ------ =_NextPart_000_01C2B65F.CACB88C0-- -- grubstreet mailing list http://london.openguides.org/old-list-archives/
-
[grubstreet] Parallelogram of merges
Ivor Williams 15:15 on 07 Jan 2003
Content-Type: text/plain; charset="us-ascii"