2009-05-10 2 views
3

Ich bin auf der Suche nach Migration einer großen Suite von IBM Assembler Language-Programmen, von einem VCS basierend auf "Dateinamen enthalten Versionsnummern", zu einem modernen vcs, die mir unter anderem die Möglichkeit zu verzweigen und zu verbinden geben wird.Gibt es ein modernes freies D? VCS, das Mainframe-Sequenznummern ignorieren kann?

Diese Dateien haben 80-Spalten-Datensätze, die letzten 8 Spalten sind eine fast bedeutungslose Sequenznummer.

Aus einer Reihe von Gründen, die ich nicht wirklich Raum verschwenden möchte, indem ich in geht, brauche ich die VCS zu ignorieren (aber hoffentlich auf eine wohldefinierte Weise zu erhalten) die Sequenznummer Spalten und Diff und Patch basiert nur auf den Inhalten der ersten 72 Spalten.

Irgendwelche Ideen?


einfach „ignorieren, aber bewahren“ zu klären: Ich nehme es etwas vage ist, wie ich meine Ideen noch nicht vollständig gesammelt haben.

Es wäre etwas entlang der Linien dieses sein:

„Beim Zusammenführen/Patching, wenn eine Seite Folgenummern hat, gibt sie, wenn mehr-als-eine Seite Sequenznummern verfügt, verwenden die Anwesenden in der Datei (1 | 2 | 3)“


Warum will ich Sequenznummern erhalten? Erstens sind sie wirklich Sequenznummern. Zweitens möchte ich dieses Zeug wieder in den Mainframe integrieren, wo die Sequenznummern fürchterlich signifikant sein können. (Diejenigen, die wissen, was „SMP/E“ bedeutet verstehen. Diejenigen, die dies nicht tun, glücklich sein, aber zittern ...)


ich gerade festgestellt habe hatte ich keine Antwort akzeptiert . Schwierige Wahl, aber @Noldorin kommt mir am nächsten, wo ich hin muss.

+0

Sie sagen, Sie möchten die Sequenznummern ignorieren, aber beibehalten. Entschuldigung, aber das klingt wie ein Widerspruch. Wenn sich die Sequenznummer zwischen Revisionen ändert, welche sollte beibehalten werden? –

+0

Ich denke, durch "ignorieren" bedeutet er nur, dass es die Sequenznummern aus diffing auszuschließen. Trotzdem verstehe ich nicht, wie das mit Patching funktionieren soll. – mooware

+0

Okay, dann sollte es gut sein, sie neu zu sortieren, oder? Wir haben immer neue Decks mit neuen Sequenznummern gespielt. (Ja, ich sagte "schlag neue Decks." Ich benutzte Karten. Behandle es.) –

Antwort

2

Ich glaube, dass jedes moderne Versionskontrollsystem (Subversion und Bazaar sind die, die ich normalerweise empfehlen würde, centralised and distributed) kann ein externes diff/merge tool verwenden. Leider würde ich denken, dass Sie dieses benutzerdefinierte Merge-Tool selbst schreiben müssten (zumindest habe ich noch nie von einem gehört, das Sie brauchen), obwohl dies keine große Aufgabe sein sollte, die ich mir vorstellen würde. Mit den Empfehlungen in this StackOverflow question sowie this one können Sie vielleicht etwas Glück haben. Es tut mir leid, dass ich keine weiteren Informationen darüber geben kann, auf welche Sie besonders achten sollten, aber es lohnt sich, einen Blick darauf zu werfen, falls einer von ihnen Ihren Anforderungen entspricht.

+0

Weiß nicht über den "Merge" -Teil, aber ein gutes Diff-Tool zu schreiben ist eigentlich ziemlich schwer. –

3

In Mercurial, man konnte leicht Spalten 73-Ende .asm Dateien ignorieren - fügen Sie einfach auf Ihre .hgrc die folgenden Zeilen:

[encode] 
*.asm: cut -b -72 

(oder etwas komplexere Möglichkeiten, wenn Sie Windows unterstützen möchten Systeme auch ;-). Dies würde jedoch nicht dem "Erhaltungs" -Teil Ihrer "Ignorieren, aber bewahren" -Spezifikation entsprechen (was, wie Neils Kommentar zeigt, an sich schon problematisch ist).

1

Ich denke, die Bedeutung von "bewahren" ist hier der Schlüssel. Wenn Sie sagen, dass die Sequenznummern "fast bedeutungslos" sind, schließt das "fast" alles außer der Sequenz ein? In der Dreamtime codierten wir dort eine Art Programmablaufplan (Sie finden ein Beispiel in der First Edition von Brooks 'Mythical Man Month), aber diese Praxis ist glücklicherweise ausgestorben.

Wenn die einzige Bedeutung der Sequenznummern Spalten als eine geordnete Folge von Zahlen sind. Ich wäre versucht, @ Alex 'Ansatz zu verwenden - Sie können Dateien aus einem Skript in einem der modernen VC-Tools vorverarbeiten - um die Sequenznummern zu schneiden. Wenn Sie eine Datei extrahieren, verwenden Sie ein analoges Werkzeug, um die Datensätze erneut zu sequenzieren.

1

(Disclosure: Ich bin der Hersteller von Werkzeug in dieser Antwort beschrieben).

Was Sie wollen, ist ein Diff-Tool, das versteht, dass das Zeug in den Spalten 72-80 "Leerzeichen" ist, unabhängig von den Fakten, die Sie mit Zeichen gefüllt haben.

Die Semantic Designs COBOL Smart Differencer hat eine IBM Enterprise COBOL-Variante, die das gut versteht.

SD macht intelligente Differenzierer für eine Vielzahl von Sprachen, und IBM Assembler ist ein zukünftiges Ziel. Wenden Sie sich für eine Diskussion über einen Smart-Differenzierer für IBM Assembler an SD offline, wenn Sie interessiert sind.

Verwandte Themen