Wie Sourcecode verwalten

Hallo,

mich würde interssieren, welches Tool sich zur Verwalten der Sourcecodes eignet.
Mit der Zeit ergibt sich doch einiges an Code und auch viele Änderungen.

Danke.

Gruß
Thomas Müller

Strukturierung versus Versionierung

Hallo,

1.
wenn es (lediglich) um die Strukturierung von vorhandenen SAS-Programmen, -Makros etc. geht: Hierbei empfiehlt es sich, eine sprechende Ablagetechnik auf der Platte zu verwenden (d.h. eigene Unterordner für Projekte, Makros, Jobs, Batch-Scripte etc.), sowie bei SAS-Makros Dateinamen, welche benennen was das Programm tut. Sehr hilfreich: 1 Makro pro Datei, Makroname = Dateiname.

2.
wenn es um die Versionierung von (SAS-)Programmcode geht - m.E. sehr zu empfehlen ist die OpenSource-Software Subversion. Subversion kann als der Nachfolger des ConcurrentVersioningSystem (CVS) bzw. des (noch) älteren RevisionControlSystem (RCS) angesehen werden.
Einen gut benutzbaren Client, der sich z.B. unter Windows nahtlos in den Datei-Browser (Explorer) hängt, gibt es unter dem Namen TortoiseSVN.

Viele Grüße
Johannes Lang

Sourcecode versioning

Nun, es gibt auch eine Möglichkeit seinen Source-Code mit SAS-Mitteln selbst und flexibel zu verwalten.
Es bietet sogar die Möglichkeit, ältere Versionen (z.B. bei einem Mangel von Entwicklungs-, Test- und Produktionsumgebungen) laufen zu lassen.
Stichworte sind hier "Catalog-" bzw. "Libname-Concatenation" und "options sasautos".
Eines noch vorweg: ich muss hier aus der Erinnerung (und der SAS-Online-Doku) zitieren, es kann sein dass nicht alles so funktioniert. Das Prinzip sollte aber klar werden.

1. Vorbereitung
Verzeichnisstruktur etwa in der Art

macros/
/v1
/v2
/v3
/v3_1

programs/
/v1
/v2
/v2_2
/v3

Nur die jeweils letzte Version sollte mit Schreibrechten versehen sein (rw), alle anderen nur mit Leserechten (r). Das verhindert, dass ältere Versionen versehentlich überschrieben werden. Die Versionsnamen sind grundsätzlich frei zu benennen, der Einheitlichkeit halber (und zur besseren Automatisierung) alphanumerisch aufsteigend bennannt werden.

2. Programmierung
Für Macros:

options sasautos=('/macros/v3_1' '/macros/v3' '/macros/v2' '/macros/v1' sasautos);
options mautosource;

für Programme:

libname prog_v1 '/programs/v1';
libname prog_v2 '/programs/v2';
libname prog_v2_2 '/programs/v2_2';
libname prog_v3 '/programs/v3';

libname programs (prog_v3 prog_v2_2 prog_v2 prog_v1);

Diese Definitionen sollten sich in der autoexec befinden bzw. in einem Macro, das aus dieser gerufen wird. Wichtig ist, dass jeweils die neuesten Versionen zuerst genannt werden und dann die älteren. Gibt es ein Macro bzw. Programm nur in einer bestimmten Version, so gilt das auch für alle nachfolgenden Versionen. Gibt es aber z.B. in v1 und v3 jeweils ein Macro bzw. Programm mit dem gleichen Namen, so wird das Neuere, also das aus Version v3 "angezogen".

Um das ganze dynamisch verwenden zu können, kann man sich ein Macro in der autoexec vorstellen, das in den bekannten Programmpfaden die Versionsvereichnisse liest, und sie direkt in die "options sasautos" bzw. "libname" statements schreibt.
Beim Programmaufruf kann auch ein Parameter definiert werden, der die höchste zu lesende Version angibt. Wird der Parameter weggelassen, werden alle Versionen gelesen (aktuellster Stand), wir der Parameter z.B. mit "v2" angegeben, bleiben alle neueren Versionen unberücksichtigt.
Das ganze funktioniert natürlich nur, soweit sich die Struktur der Daten/Datasets in einer neueren Version nicht verändern. Das Problem kann man aber auch durch geeignete Programmierung umgehen.

Die Sicherung der Programmverzeichnisse muss natürlich noch separat erfolgen. Aber das hat ja auch nicht direkt was mit der Versionierung zu tun.

Viele Grüße

Tim_Taylor

Vielen Dank. Werde mal

Vielen Dank. Werde mal Subversion testen.

Dankeschön