Ergebnis 1 bis 8 von 8

Thema: fehler im patch-parser

  1. #1
    vB-Experte
    Registriert seit
    30.05.2006
    Beiträge
    641
    Blog-Einträge
    3

    fehler im patch-parser

    im zusammenhang mit meiner svn-erweiterung für die projektverwaltung habe ich schwächen im patch-parser entdeckt.

    der parser berücksichtigt warnungen des diff-programmes nicht und erkennt patches mit warnmeldungen nicht als patchdateien. die entwickler haben hier die 3 normalen indikatoren am zeilenanfang berücksichtigt:

    PHP-Code:
    case ' '$line_type 'context'; break;
    case 
    '+'$line_type 'added'; break;
    case 
    '-'$line_type 'removed'; break; 
    es gibt noch einen 4. indikator und zwar '\ '. damit werden warnmeldungen der diff-engine eingeleitet. mir bekannt ist nur die meldung, dass eine datei nicht mit einem EOL endet, also kein zeilenumbruch vorhanden ist. ein solcher patch ist trotz dieser warnungen ein gültiger patch, weil die patch-programme dies berücksichtigen.

    dies sollte auch der patch-parser und der patch-viewer beachten!

    vorschlag dazu: man könnte einen zusätzlichen container ($line['type']) 'warning' einbauen, dazu dann ein neues template für diesen typ (pt_patchbit_line_warning) mit einer besonderen hervorhebung der zeile(n) und somit die darstellung des patches ermöglichen.

  2. #2
    vBulletin-Germany Team Avatar von StGaensler
    Registriert seit
    04.11.2004
    Ort
    München
    Beiträge
    12.298
    Blog-Einträge
    1
    Hallo,

    solch eine Zeile ist im unified diff-Format nicht vorgesehen: http://www.gnu.org/software/diffutil...iled%20Unified
    Das was die Projektverwaltung kann, ist eben das unified-Format. Ich weiß nicht, ob das vielleicht später erweitert wird, würde dir aber raten, diese Warnungen eventuell zu entfernen, oder das Verhalten von vBulletin über dein Add-on entsprechend zu verändern.

    Viele Grüße

    Stefan

  3. #3
    vB-Experte
    Registriert seit
    30.05.2006
    Beiträge
    641
    Blog-Einträge
    3
    Zitat Zitat von StGaensler Beitrag anzeigen
    Hallo,

    solch eine Zeile ist im unified diff-Format nicht vorgesehen: http://www.gnu.org/software/diffutil...iled%20Unified
    Das was die Projektverwaltung kann, ist eben das unified-Format. Ich weiß nicht, ob das vielleicht später erweitert wird, würde dir aber raten, diese Warnungen eventuell zu entfernen, oder das Verhalten von vBulletin über dein Add-on entsprechend zu verändern.

    Viele Grüße

    Stefan
    die dokumentation ist sehr spärlich und natürlich erzeugen einige programme im unified diff format eben jene oben genannte zeile.

    "(...) As a special case, unified diff expects to work with files that end in a newline. If either file does not, unified diff will emit the special line
    \ No newline at end of file
    after the modifications. The patch program should be aware of this. (...)"
    mehr dazu hier: http://en.wikipedia.org/wiki/Unified...Unified_format

    zu deinem tipp, die warnung zu entfernen: das geht nicht, denn dann stimmt die ausgabe des patch-parsers nicht mehr, wenn die einzige änderung darin bestand, den zeilenumbruch hinzuzufügen, der in der vorherigen version fehlte.

  4. #4
    vBulletin-Germany Team Avatar von StGaensler
    Registriert seit
    04.11.2004
    Ort
    München
    Beiträge
    12.298
    Blog-Einträge
    1
    Hallo,

    ich hab das mal als Bug gemeldet. Kannst du mir mal ein Beispiel von solch einem Patch anhängen?

    Viele Grüße

    Stefan

  5. #5

  6. #6
    vB-Experte
    Registriert seit
    30.05.2006
    Beiträge
    641
    Blog-Einträge
    3
    eventl ergänzt du den eintrag noch um die bemerkung, dass die warnmeldung nicht unbedingt in englisch ist. sicher ist - das weiss ich aus einigen diskussionen in diversen newsgroups - dass eine warnmeldung immer mit '\ ' beginnt, der rest ist variabel.

  7. #7
    vBulletin-Germany Team Avatar von StGaensler
    Registriert seit
    04.11.2004
    Ort
    München
    Beiträge
    12.298
    Blog-Einträge
    1
    Vielen Dank, ich hab die beiden Dateien dort auch noch angehängt.

    In welcher Sprache die Meldung ist, ist ja egal, genauso wie es ja auch egal ist, welcher Code in der Datei steht Ich glaube "used for warnings of the diff engine" ist allgemein genug

    Viele Grüße

    Stefan

  8. #8
    vB-Experte
    Registriert seit
    30.05.2006
    Beiträge
    641
    Blog-Einträge
    3
    ach und weil ich gerade dabei bin... die können gleichmal diesen bug mit beheben (im patch_parser):

    PHP-Code:
            $old_file_bits explode("\t"$old_file);
            if (
    sizeof($old_file_bits) == 1)
            {
                
    $old_file_bits preg_split('#\s+#'$old_file);
            }
            
    $new_file_bits explode("\t"$new_file);
            if (
    sizeof($new_file_bits) == 1)
            {
                
    $new_file_bits preg_split('#\s+#'$new_file);
            }

            
    // create holder for this file's chunks
            
    $this->files[] = array(
                
    'old' => array(
                    
    'filename' => $old_file_bits[0],
                    
    'date' => $old_file_bits[1],
                    
    'revision' => $old_file_bits[2]
                ),
                
    'new' => array(
                    
    'filename' => $new_file_bits[0],
                    
    'date' => $new_file_bits[1],
                    
    'revision' => $new_file_bits[2]
                ),
                
    'chunks' => array()
            ); 
    $old_file_bits[2] und $new_file_bits[2] werden bei svn-diffs immer warnungen erzeugen und die revision leer sein, denn die zeile lautet so:

    --- trunk/test/diff_3.txtTAB2008-10-03 21:39:28 UTCSPACE(rev 4048)

    das explode liefert hier also nur 2 array-teile. im 2. ist dann die uhrzeit und die revision enthalten.

    lt. den erhältlichen dokumentationen zu diff, ist nur sicher, dass der 2. teil der timestamp ist. alles danach ist optional (zb. eine revisionsangabe). möglicherweise haben die mit cvs-diffs gearbeitet, wo die revisionsnummer einem TAB folgt.

    wie auch immer, es funktioniert nicht wie es soll

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Fehler nach Update auf Version: 3.7.3 Patch Level 1
    Von Schwabi im Forum vBulletin 3.7 Fragen und Probleme
    Antworten: 15
    Letzter Beitrag: 03.10.2008, 15:43
  2. Antworten: 0
    Letzter Beitrag: 04.09.2008, 18:07
  3. eBulletin - 6. November 2007 - vBulletin 3.6.8 Patch Level 2 veröffentlicht
    Von StGaensler im Forum Adduco E-Bulletin Archiv
    Antworten: 0
    Letzter Beitrag: 06.11.2007, 12:16
  4. vBulletin 3.6.8 Patch Level 2 verfügbar
    Von pogo im Forum Ankündigungen
    Antworten: 2
    Letzter Beitrag: 05.11.2007, 17:05
  5. Erstelle Miniaturansichten -> Fehler
    Von Metro Man im Forum vBulletin 3.0 Fragen und Probleme
    Antworten: 8
    Letzter Beitrag: 01.06.2005, 22:19

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •