"Interaktives" Patch-Tool

Startseite
Anhänge:
Nachricht
+ (text/plain)
+ signature.asc (application/pgp-signature)
Nachricht löschen
Nachricht beantworten
Autor: Sebastian Harl
Datum:  
To: list
Betreff: "Interaktives" Patch-Tool
Hallo (echte) Untermenge der Welt ;-)

Ich suche ein Tool, dass sich prinzipiell aehnlich verhaelt wie
patch(1), jedoch im Falle eines Konflikts nicht einfach aufgibt und ein
"reject-file" schreibt, sondern (aehnlich wie es viele VCSe bei einem
fehlgeschlagenen Merge tun) an der Konfliktstelle in der Datei die alte
und neue Version mit Konflikt-Marker einfuegt.

Bsp.:

Statt einer .rej-Datei mit z.B. folgendem Inhalt (Vorsicht: sinnloses
Beispiel ;-)):

--- 8< ---
***************
*** 2,7 ****

int main (int argc, char **argv)
{
fprintf ("Hello world!\n");
return atoi (argv[1]);
}
--- 2,10 ----

int main (int argc, char **argv)
{
+ if (2 != argc)
+ return -1;
+
fprintf ("Hello world!\n");
return atoi (argv[1]);
}
--- >8 ---

... haette ich gern eine geaenderte Datei, mit Konflikt-Markierung:

--- 8< ---
int main (int argc, char **argv)
{
<<<<<<< HEAD:foobar.c
=======
if (2 != argc)
return -1;

fprintf ("Hello world!\n");
>>>>>>> commit4:foobar.c
return atoi (argv[1]v);
}
--- >8 ---

Ist sowas schon mal jemandem ueber den Weg gelaufen?

Ich hab mich leider mit der Theorie dahinter bislang nicht befasst - ich
weiss also nicht, ob das ueberhaupt sinnvoll ohne Merge-Basis moeglich
ist. Nachdem es aber afaik auch SVN hinkriegt und die ohne Merge-Basis
arbeiten, sollte es imho eigentlich schon gehen. Irgendwelche Ideen
dazu sind auch willkommen - ich fuerchte fast, dass ich mir so ein Tool
selbst bauen muss :-)

Falls sich jemand wundert - ein moegliches Anwendungsbeispiel fuer ein
solches Werkzeug ist das Einspielen eines aus einem VCS gewonnenen
Patches in eine aeltere Version der Software, die nur als Teer-Klumpen
vorliegt. Dabei enthaelt der Patch nur den Diff eines Commits - ich
moechte nicht saemtliche Aenderungen seit der aelteren Version
uebernehmen.

Gruss,
Sebastian

-- 
Sebastian "tokkee" Harl +++ GnuPG-ID: 0x8501C7FC +++ http://tokkee.org/


Those who would give up Essential Liberty to purchase a little Temporary
Safety, deserve neither Liberty nor Safety. -- Benjamin Franklin