Domanda

Sto cercando di migrare una vasta suite di programmi IBM Assembler Language, da un vcs basato su " i nomi dei file includono i numeri di versione " ;, a un vcs moderno che mi darà, tra le altre cose , la capacità di ramificarsi e fondersi.

Questi file hanno record di 80 colonne, le ultime 8 colonne sono un numero di sequenza quasi insignificante.

Per una serie di motivi che non voglio davvero sprecare spazio andando in, ho bisogno del vcs per ignorare (ma si spera preservare in qualche modo ben definito) le colonne dei numeri di sequenza, e diff solo sul contenuto delle prime 72 colonne.

Qualche idea?


Solo per chiarire " ignora ma preserva " ;: Accetto che sia un po 'vago, dato che non ho ancora raccolto completamente le mie idee.

Sarebbe qualcosa del genere:

  

" Quando si uniscono / patch, se un lato ha numeri di sequenza, emetterli; se più di un lato ha numeri di sequenza, utilizzare quelli presenti nel file (1 | 2 | 3) "


Perché voglio conservare i numeri di sequenza? Innanzitutto, sono in realtà numeri di sequenza. In secondo luogo, voglio reintegrare queste cose nel mainframe, dove i numeri di sequenza possono essere terribilmente significativi. (Chi di voi sa cosa significa & Quot; SMP / E & Quot; capirà. Coloro che non lo fanno, sii felice, ma tremano ...)


Ho appena realizzato di non aver accettato una risposta. Scelta difficile, ma @Noldorin si avvicina di più a dove devo andare.

È stato utile?

Soluzione

Credo che qualsiasi sistema di controllo versione moderna ( Subversion e Bazaar sono quelli che consiglierei di solito, essendo centralizzato e distribuito rispettivamente) può utilizzare uno strumento diff / merge esterno. Sfortunatamente, penso che dovresti scrivere tu stesso questo strumento di unione personalizzato (almeno non ho mai sentito parlare di uno che fa ciò di cui hai bisogno), anche se questo non dovrebbe essere un compito enorme che immagino. Detto questo, potresti avere un po 'di fortuna con i consigli forniti in questa domanda StackOverflow e < a href = "https://stackoverflow.com/questions/50371/better-merge-tool-for-subversion"> questo . Spiacenti, non posso fornire ulteriori informazioni su quali desideri esaminare in particolare, ma vale la pena dare un'occhiata nel caso in cui qualcuno di loro soddisfi le tue esigenze.

Altri suggerimenti

In Mercurial, puoi facilmente ignorare le colonne 73-fine dei file .asm - aggiungi al tuo .hgrc le seguenti righe:

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

(o modi leggermente più complessi se si desidera supportare anche i sistemi Windows ;-). Tuttavia, ciò non soddisfa il & Quot; conserva & Quot; parte del tuo " ignora ma conserva " spec (che, come sottolinea il commento di Neil, è di per sé un po 'problematico).

Penso che il significato di " preservare " è la chiave qui. Quando dici che i numeri di sequenza sono & Quot; quasi insignificante & Quot ;, fa & Quot; quasi & Quot; includere qualcosa oltre alla sequenza? Nel Dreamtime, abbiamo usato per codificare una sorta di diagramma di flusso del programma laggiù (puoi trovare un esempio nella prima edizione del Mythical Man Month di Brooks) ma per fortuna questa pratica si è estinta.

Se l'unico significato delle colonne dei numeri di sequenza è come una sequenza ordinata di numeri. Sarei tentato di usare l'approccio di @ Alex & # 8212; è possibile preelaborare i file da uno script in uno dei moderni strumenti VC & # 8212; per tagliare i numeri di sequenza, quindi quando si estrae un file, utilizzare uno strumento analogo per ripetere la sequenza dei record.

(Divulgazione: rappresento il fornitore dello strumento descritto in questa risposta).

Quello che vuoi è uno strumento diff che capisca che le cose nelle colonne 72-80 sono " spazi bianchi " indipendentemente dai fatti che hai riempito di caratteri.

Il Semantic Designs COBOL Smart Differencer ha una variante IBM Enterprise COBOL che capisce bene.

SD crea Smart Differencer per una varietà di lingue e IBM Assembler è un obiettivo futuro. Contatta SD offline per la discussione su uno Smart Differencer per IBM Assembler, se sei interessato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top