SourceMerge

[SourceMerge]SourceMerge è una utility che permette di mantenere differenti versioni dello stesso codice sorgente. Non è un sistema di controllo revisioni: è particolarmente utile per produrre programmi in lingue diverse. Poiché è altamente configurabile, può essere adottato per l'utilizzo con molti linguaggi di programmazione: C, C++, Html, Assembly, Clipper.

Questo programma può essere utilizzato per mantenere diverse versioni dello stesso codice sorgente; risulta particolarmente utile per produrre programmi in diverse lingue. Poiché è altamente configurabile, può essere adottato per l'uso con diversi linguaggi di programmazione, ad esempio C, C++, Html, Assembly, Clipper.
SourceMerge può operare su file di testo Dos/Windows, Macintosh e Unix, anche misti (cioè il file libreria in un formato, il file sorgente in un altro). I file di testo creati hanno sempre lo stesso formato del corrispondente file sorgente.

Caratteristiche

Come sempre, un esempio è il modo migliore di dimostrare l'utilizzo di SourceMerge.
La linea di comando del programma è la seguente:

SRCMERGE spec /Llib /Vver [/Sxy] [/Ddest] [/Brem_begin] [/Erem_end] [/X]

"spec" è la specifica dei file da processare, che può includere eventuali wild cards.
SourceMerge supporta i nomi di file lunghi sotto Windows 9x; supporta inoltre wild cards '*' e '?' multiple, sia in modalità Ms-Dos reale che sotto Windows 9x. Utilizzare il parametro /X per evitare il confronto con i nomi di file lunghi.

"lib" è il nome del file di libreria da utilizzare; il nome può avere qualunque estensione, sebbene io abbia utilizzato l'estensione ".LIB" in questi esempi.
Il file libreria è un file di testo formattato come i file .INI di Windows.
Ogni sezione inizia con:

[id:ver]

e termina con la prossima sezione o la fine del file.
I caratteri '[' e ']' che racchiudono id:ver possono essere cambiati utilizzando il parametro /Sxy - x è il prefisso ed y il suffisso (ciascuno lunghi un carattere): ciò può risultare utile se il testo da sostituire può contenere una linea simile all'inizio di sezione.

Per esempio, supponiamo che si abbia il seguente frammento di codice C che definisce due stringhe, contenuto nel file di testo SAMPLE.C:

#define WELCOME "Benvenuto"
#define BYE "Arrivederci"

Le stringhe sono in italiano; se si desidera produrre due versioni dello stesso programma, una in italiano ed un'altra in inglese, sostituire il testo con quanto segue:

/* SRCM:welc_bye. */
/* /SRCM:welc_bye. */

e creare il file libreria MYTEST.LIB con questo testo:

[welc_bye:italian]
#define WELCOME "Benvenuto"
#define BYE "Arrivederci"
[welc_bye:english]
#define WELCOME "Welcome"
#define BYE "Goodbye"

Ora, per creare una versione in una lingua o nell'altra utilizzare:

SRCMERGE sample.c /lmytest.lib /vitalian
SRCMERGE sample.c /lmytest.lib /venglish

Naturalmente, in questo caso sarebbe più semplice inserire tutte le definizioni nel codice sorgente e selezionare una versione o l'altra attraverso #ifdef; tuttavia, ci sono linguaggi in cui ciò è impossibile da realizzare, e casi più complessi nei quali la stessa operazione non è così semplice (ad esempio, quando è necessario aggiungere codice per versioni specifiche). Inoltre, il codice sorgente è più pulito e comprensibile da leggere utilizzando questo metodo.

Come avrete notato, ogni sezione nel codice sorgente è un blocco di testo che inizia con:

b SRCM:id. e

e termina con:

b /SRCM:id. e

Tra '.' e 'e' è possibile introdurre del testo opzionale, che viene semplicemente ignorato.

I caratteri 'b' ed 'e' sono stringhe di commento che possono essere specificate con i parametri /B e /E; se non specificate, sono dedotte dal programma sulla base dell'estensione del file sorgente, secondo questa tabella:

Estensione .C .H .CPP .HPP .HTM .PRG .CH .INI .SYS .BAT .MNU .ASM other
Stringa 'b' /* /* // // <!-- * * rem rem rem ; # #
Stringa 'e' */ */     -->                

Come si può vedere, le stringhe 'e' possono anche essere nulle, nel qual caso il contrassegno termina alla fine della riga:

printf("questo è un test\n"); // SRCM:id. <-- il contrassegno termina a fine riga

Ci deve essere esattamente uno spazio tra la stringa 'b' e "SRCM:".

I parametri /L e /V devono essere sempre indicati: il primo definisce il file libreria da utilizzare, il secondo la versione con la quale i file sorgenti saranno aggiornati.
Si tenga presente che sia i contrassegni di versione che gli identificatori di sezione sono sensibili alle maiuscole: italian e Italian sono due contrassegni di versione distinti, esattamente come welc_bye e Welc_Bye sono due identificatori di sezione differenti.

Sulla linea di comando, le stringhe di versione/commento e i caratteri da utilizzare come prefisso/suffisso di sezione (parametro /S) possono includere costanti C-like; per esempio, se avete un file HTML con estensione ".DOS" (che non è fra quelle riconosciute da SourceMerge) e volete utilizzare le stringhe di commento "<!--" per 'b' e "-->" per 'e', digitate:

SRCMERGE test.dos /Ltest.lib /Vtest /B\x3c!-- /E--\x3e

Ciò è necessario poiché i caratteri "<" e ">" sono preprocessati dall'interprete di comando del Dos e sono utilizzati per redirigere l'ingresso/l'uscita standard; le corrispondenti stringhe C-like sono:

Carattere Esadecimale Ottale Decimale Ascii
< \x3c \074 \d60 60
> \x3e \076 \d62 62

Allo stesso modo, se volete utilizzare i caratteri '|' come prefisso di sezione e '^' come suffisso, sulla linea di comando indicate:

/S\x7c^ /S\d124^ /S\174^ (il carattere '^' può apparire così com'è)

Le seguenti sequenze di escape sono supportate:

\a \b \f \n \r \t \v \\ \? \' \"

e le costanti ottali, esadecimali e decimali così specificate:

I caratteri ':' e '.' dovrebbero essere evitati nelle stringhe di versione; i caratteri Ascii sotto ' ' (32) andrebbero evitati sia nelle stringhe di commento che di versione.

Di default, SourceMerge modifica i file sorgenti 'localmente', cioé i file sono sovrascritti con la versione aggiornata. Se volete creare una nuova versione in una directory differente, utilizzate il parametro /D per impostare la destinazione; in questo caso, i file sorgenti non saranno toccati.
Si tenga presente che tutti i file esistenti nella directory destinazione sono sovrascritti senza alcun avvertimento.

Il livello di errore è impostato all'uscita a:

0 nessun errore
1 parametri mancanti o errati, file libreria vuoto
2 errore di lettura/scrittura/apertura
3 identificatore non trovato/errore di sintassi
4 stringa troppo lunga
5 memoria insufficiente

I file sorgenti (quando il parametro /D non è specificato) sono sovrascritti solo se l'aggiornamento ha avuto successo; se il parametro /D viene indicato e SourceMerge esce con un livello di errore superiore o uguale a 3, l'ultimo file creato nella directory destinazione sarà troncato al punto in cui l'errore si è verificato.

Se SourceMerge non trova alcuna sezione da aggiornare in un determinato file:

  1. non lo sovrascriverà (se /D non viene specificato);
  2. creerà una copia del file con la stessa data/ora dell'originale (se /D viene specificato).

Eseguire SRCMERGE senza parametri per ottenere un breve riassunto che illustra il suo utilizzo.

Requisiti:

Versioni

Utility Dos/Windows 9x; prodotto freeware/GNU General Public License 2.0.
Ultima versione: 1.2 / inglese.
 

Download

Scarica SourceMerge (versione 1.2 per Dos/Windows 9x)

Inizio pagina
Midnight Lake iPhone Case Black Women Shoes Black Flat Shoes Leather Flats Black Patent Ballerinas Black Ballet Shoes Casual Shoes Black Shoes Women Balle Record Player Cufflinks Best iPhone XR Clear Cases iPhone XS/XS Max Leather Cases Sale Best iPhone 8/8 Plus Silicone Cases iPhone 7/7 Plus Cases & Screen Protector New Cases For iPhone 6/6 Plus iPhone 8 Case Sale iPhone Xr Case Online iPhone 7 Case UK Online iPhone X Case UK Sale iPhone X Case Deals iPhone Xs Case New Case For iPhone Xr UK Online Case For iPhone 8 UK Outlet Fashion Silver Cufflinks For Men Best Mens Cufflinks Outlet Online The Gold Cufflinks Shop Online Cheap Shirt Cufflinks On Sale Nice Wedding Cufflinks UK Online Top Black Cufflinks UK Online Mens Cufflinks Online Silver Cufflinks For Men Men Cufflinks UK Sale Gold Cufflinks UK Online Gold Cufflinks UK Silver Cufflinks UK Shirt Cufflinks Discount Online Mens Cufflinks Deals & Sales Girls Shoes For Dance Fashion Ballet Dance Shoes Best Ballet Flats Shoes UK Online Cheap Ballet Pointe Shoes UK Online Best Ballet Shoes Outlet Best Dance Shoes Sale Cheap Ballet Flats Sale UK Best Pointe Shoes Online UK Ballet Dance Shoes UK Shoes For Dance UK Best Ballet Slippers Shop Best Yoga Shoes Hotsell