NAME
Quiq::Cascm - Schnittstelle zu CA Harvest SCM
BASE CLASS
DESCRIPTION
Ein Objekt der Klasse stellt eine Schnittstelle zu einem CA Harvest SCM Server zur Verfügung.
SEE ALSO
METHODS
Konstruktor
new() - Instantiiere Objekt
Synopsis
$scm = $class->new(@attVal);
Attributes
- user => $user
-
Benutzername (-usr).
- password => $password
-
Passwort (-pw).
- credentialsFile => $file
-
Datei (Pfad) mit verschlüsseltem Benuternamen und Passwort (-eh). Diese Authentisierungsmethode ist gegenüber user und password aus Sicherheitsgründen vorzuziehen.
- hsqlCredentialsFile => $file
-
Wie credentialsFile, nur für das hsql-Kommando, falls hierfür eine andere Authentisierung nötig ist.
- broker => $broker
-
Name des Brokers (-b).
- projectContext => $project
-
Name des Projektes, auch Environment genannt (-en).
- viewPath => $viewPath
-
Pfad im Project (-vp).
- workspace => $workspace
-
Pfad zum (lokalen) Workspace-Verzeichnis.
- states => \@states
-
Liste der Stufen, bginnend mit der untersten Stufe, auf der Workspace-Dateien aus- und eingecheckt werden.
- udl => $udl
-
Universal Database Locator für die CASCM-Datenbank. Ist dieser definiert, wird die CASCM-Datenbank direkt zugegriffen, nicht über das Programm hsql.
- keepTempFiles => $bool (Default: 0)
-
Lösche Temporäre Dateien nicht.
- dryRun => $bool (Default: 0)
-
Führe keine ändernden Kommandos aus.
- verbose => $bool (Default: 1)
-
Schreibe Information über die Kommandoausführung nach STDERR.
Returns
Objekt
Description
Instantiiere ein Objekt der Klasse und liefere eine Referenz auf dieses Objekt zurück.
Datei bearbeiten
abstract() - Übersicht über Inhalt von Packages
Synopsis
$abstract = $scm->abstract($regex);
Arguments
Returns
Übersicht (String)
Description
Erzeuge eine Übersicht über die Packages, deren Name den Regex $regex matcht, und ihren Inhalt.
Example
$ ruv-dss-repo abstract Seitz_X
S6800_0_Seitz_X_Deployment TTEST
tools/post_deployment/deploy_ddl.pl 34
tools/post_deployment/deploy_udf.pl 28
S6800_0_Seitz_X_Deployment_Test TTEST
ddl/table/test_table.sql 4
ddl/udf/lib/test_function.sql 1
S6800_0_Seitz_X_Fahrstuhl_1 Entwicklung
S6800_0_Seitz_X_Fahrstuhl_2 Entwicklung
S6800_0_Seitz_X_MetaData TTEST
ddl/udf/lib/rv_create_dbobject_ddl.sql 5
lib/zenmod/DSS/MetaData.pm 14
S6800_0_Seitz_X_Portierte_Programme Entwicklung
bin/stichtag.pl 1
bin/verd_prd_zuord_dim.pl 24
bin/vertr_kms_progn_hist.pl 4
lib/zenmod/Sparhist.pm 37
tab_clone.pl 4
tools/wasMussIchTesten.pl 1
S6800_0_Seitz_X_Portierte_Tabellen TTEST
ddl/table/q12b067.sql 0
ddl/table/q98b3s33.sql 0
ddl/table/sf_ga_liste_online_renta.sql 1
ddl/table/sf_kredu_meldw_dz_zlms_vol_wkv.sql 6
ddl/table/sf_vden_agt_liste.sql 1
S6800_0_Seitz_X_Session TTEST
ddl/udf/lib/rv_stage.sql 2
lib/zenmod/DSS/Session.pm 2
S6800_0_Seitz_X_ZenMods TTEST
lib/zenmod/DSSDB/Greenplum.pm 108
Datei bearbeiten
edit() - Bearbeite Repository-Datei
Synopsis
$output = $scm->edit($repoFile);
$output = $scm->edit($repoFile,$package);
Arguments
- $repoFile
-
Datei mit Repository-Pfadangabe.
- $package
-
Package, dem die ausgecheckte Datei (mit reservierter Version) beim Einchecken zugeordnet wird. Das Package muss nicht auf der untersten Stufe stehen. Befindet es sich auf einer höheren Stufe, wird intern ein Transportpackage erzeugt, das die Dateien zu der Stufe des Package bewegt.
Returns
Ausgabe der CASCM-Kommandos (String)
Description
Checke die Repository-Datei $repoFile aus und öffne sie im Editor. Nach dem Verlassen des Editors wird geprüft, ob die Datei (eine Kopie im lokalen Verzeichnis) verändert wurde. Der Benutzer wird gefragt, ob er seine Änderungen ins Repository übertragen möchte oder nicht. Anschließend wird die Repository-Datei wieder eingecheckt. Dies geschieht, gleichgültig, ob sie geändert wurde oder nicht. CASCM vergibt nur dann eine neue Versionsnummer, wenn die Datei sich geändert hat.
view() - Repository-Datei ansehen
Synopsis
$scm->view($repoFile);
Arguments
Returns
nichts
Description
Öffne die Repository-Datei $repoFile im Pager.
Externe Dateien
putFiles() - Füge Dateien zum Repository hinzu
Synopsis
$output = $scm->putFiles($package,$repoDir,@files);
Arguments
- $package
-
Package, dem die Dateien innerhalb von CASCM zugeordnet werden. Das Package muss nicht auf der untersten Stufe stehen. Befindet es sich auf einer höheren Stufe, wird intern ein Transportpackage erzeugt, das die Dateien zu der Stufe des Package bewegt.
- $repoDir
-
Zielverzeichnis innerhalb des Workspace, in das die Dateien kopiert werden. Dies ist ein relativer Pfad.
- @files
-
Liste von Dateien außerhalb des Workspace.
Returns
Konkatenierte Ausgabe der der checkout- und checkin-Kommandos (String)
Description
Kopiere die Dateien @files in das Workspace-Verzeichnis $repoDir und checke sie anschließend ein, d.h. füge sie zum Repository hinzu. Eine Datei, die im Workspace-Verzeichnis schon vorhanden ist, wird zuvor ausgecheckt.
Mit dieser Methode ist es möglich, sowohl neue Dateien zum Workspace hinzuzufügen als auch bereits existierende Dateien im Workspace zu aktualisieren. Dies geschieht für den Aufrufer transparent, er braucht sich um die Unterscheidung nicht zu kümmern.
putDir() - Füge Dateien eines Verzeichnisbaums zum Repository hinzu
Synopsis
$output = $scm->putDir($package,$dir);
Arguments
- $package
-
Package, dem die Dateien innerhalb von CASCM zugeordnet werden. Das Package sollte sich auf der untersten Stufe befinden.
- $dir
-
Quellverzeichnis, dem die Dateien entnommen werden. Die Pfade innerhalb von $dir werden als Repository-Pfade verwendet. Die Repository-Pfade müssen vorab existieren, sonst wird eine Exception geworfen.
Returns
Konkatenierte Ausgabe der der checkout- und checkin-Kommandos (String)
Description
Füge alle Dateien in Verzeichnis $dir via Methode put() zum Repository hinzu bzw. aktualisiere sie.
Workspace-Dateien
checkout() - Checke Repository-Dateien aus
Synopsis
$output = $scm->checkout($package,@repoFiles);
Arguments
- $package
-
Package, dem die ausgecheckte Datei (mit reservierter Version) zugeordnet wird.
- @repoFiles
-
Liste von Workspace-Dateien, die ausgecheckt werden.
Returns
Ausgabe des Kommandos (String)
Description
Checke die Workspace-Dateien @repoFiles aus und liefere die Ausgabe des Kommandos zurück.
checkin() - Checke Workspace-Datei ein
Synopsis
$output = $scm->checkin($package,$repoFile);
Arguments
- $package
-
Package, dem die neue Version der Datei zugeordnet wird.
- $repoFile
-
Datei innerhalb des Workspace. Der Dateipfad ist ein relativer Pfad.
Returns
Ausgabe des Kommandos (String)
Description
Checke die Workspace-Datei $repoFile ein, d.h. übertrage ihren Stand als neue Version ins Repository, ordne diese dem Package $package zu und liefere die Ausgabe des Kommandos zurück.
versionNumber() - Versionsnummer Repository-Datei
Synopsis
$version = $scm->versionNumber($repoFile);
Arguments
Returns
Versionsnummer (Integer)
versionInfo() - Versionsinformation zu Repository-Datei
Synopsis
$info = $scm->versionInfo($repoFile);
Arguments
Returns
Ausgabe des Kommandos (String)
Description
Ermittele die Versionsinformation über Datei $repoFile und liefere diese zurück.
getVersion() - Speichere Version einer Datei
Synopsis
$file = $scm->getVersion($repoFile,$version,$destDir,@opt);
Arguments
- $repoFile
-
Repository-Datei, die gespeichert werden soll.
- $version
-
Version der Repository-Datei.
- $destDir
-
Zielverzeichnis, in dem die Repository-Datei gespeichert wird.
Options
- -sloppy => $bool (Default: 0)
-
Prüfe nicht, ob die angegebene Version existiert. Dies spart einen CASCM Aufruf und ist sinnvoll, wenn die Richtigkeit der Versionsnummer gesichert ist, siehe deleteToVersion().
- -versionSuffix => $bool (Default: 1)
-
Hänge die Version an den Dateinamen an.
Returns
Pfad der Datei (String)
Description
Speichere die Repository-Datei $repoFile der Version $version in Verzeichnis $destDir und liefere den Pfad der Datei zurück.
diff() - Differenz zwischen zwei Versionen
Synopsis
$diff = $scm->diff($repoFile,$version1,$version2);
Arguments
- $repoFile
-
Repository-Datei, deren Versionen verglichen werden.
- $version1
-
Erste zu vergleichende Version der Repository-Datei.
- $version2
-
Zweite zu vergleichende Version der Repository-Datei.
Returns
Differenz (String)
Description
Ermittele die Differenz zwischen den beiden Versionen $version1 und $version2 der Repository-Datei $repoFile und liefere das Ergebnis zurück.
deleteVersion() - Lösche höchste Version von Repository-Datei
Synopsis
$output = $scm->deleteVersion($repoFile);
$output = $scm->deleteVersion($repoFile,$version);
Arguments
- $repoFile
-
Der Pfad der zu löschenden Repository-Datei.
- $version (Default: höchste Versionsnummer)
-
Version der Datei, die gelöscht werden soll.
Returns
Ausgabe des Kommandos (String)
Description
Lösche die höchste Version oder bis zur Version $version die Repository-Datei $repoFile. Befinden sich davon eine oder mehrere Versionen nicht auf der untersten Stufe, wird ein temporäres Transport-Package erzeugt und die Versionen darüber vor dem Löschen auf die unterste Ebene bewegt.
Examples
Höchste Version der Datei lib/MetaData.pm
löschen:
$scm->deleteVersion('lib/MetaData.pm');
Alle Versionen der Datei lib/MetaData.pm
löschen:
$scm->deleteVersion('lib/MetaData.pm',0);
Die Versionen bis 110 der Datei lib/MetaData.pm
löschen:
$scm->deleteVersion('lib/MetaData.pm',110);
passVersion() - Überhole die aktuelle mit der vorigen Version
Synopsis
$output = $scm->passVersion($repoFile);
Arguments
Returns
Ausgabe des Kommandos (String)
Description
Erzeuge eine neue Version von $repoFile mit dem Stand vor der aktuellen Version. Dies ist nützlich, wenn an einem vorherigen Stand "vorbeigezogen" werden soll.
package() - Package einer Version
Synopsis
$package = $scm->package($repoFile);
$package = $scm->package($repoFile,$version);
Arguments
Returns
findItem() - Zeige Information über Item an
Synopsis
$tab = $scm->findItem($namePattern);
$tab = $scm->findItem($namePattern,$minVersion);
Arguments
- $namePattern
-
Name des Item (File oder Directory), SQL-Wildcards sind erlaubt. Der Name ist nicht verankert, wird intern also als '%$namePattern%' abgesetzt.
- $minVersion (Default: 0)
-
Die Item-Version muss mindestens $minVersion sein.
Returns
removeItems() - Lösche Items
Synopsis
$output = $scm->removeItems($package,@repoFile);
Arguments
- @repoFiles
-
Die Pfade der zu löschenden Repository-Dateien.
- $package
-
Package, in das die Löschung eingetragen wird.
Returns
Ausgabe des Kommandos (String)
Description
Erzeuge neue Versionen der Items @repoFiles, welche die Items als zu Löschen kennzeichnen und trage diese in das Package $package ein. Wird das Package promotet, werden die Items auf der betreffenden Stufe gelöscht.
repoFileToFile() - Expandiere Repo-Pfad zu absolutem Pfad
Synopsis
$file = $scm->repoFileToFile($repoFile);
Arguments
Returns
Pfad (String)
Description
Expandiere den Reository-Dateipfad zu einem absoluten Dateipfad und liefere diesen zurück.
Packages
createPackage() - Erzeuge Package
Synopsis
$output = $scm->createPackage($package);
$output = $scm->createPackage($package,$state);
Arguments
- $package
-
Name des Package, das erzeugt werden soll.
- $state (Default: unterste Stufe)
-
State, auf dem das Package erzeugt werden soll.
Returns
Ausgabe des Kommandos (String)
Description
Erzeuge Package $package auf Stufe $state und liefere die Ausgabe des Kommandos zurück.
deletePackages() - Lösche Package
Synopsis
$output = $scm->deletePackages(@packages);
Arguments
Returns
Ausgabe des Kommandos (String)
Description
Lösche die Packages @packages und liefere die Ausgabe der Kommandos zurück.
renamePackage() - Benenne Package um
Synopsis
$output = $scm->renamePackage($oldName,$newName);
Arguments
Returns
Ausgabe des Kommandos (String)
Description
Benenne Package $oldName in $newName um und liefere die Ausgabe des Kommandos zurück.
showPackage() - Inhalt eines Package
Synopsis
@rows | $tab = $scm->showPackage(@packages,@opt);
Returns
Datensätze oder Ergebnismengen-Objekt (Quiq::Database::ResultSet::Array)
Description
Ermittele die in Package $package enthaltenen Items und ihrer Versions und liefere diese Ergebnismenge zurück.
Example
$scm->showPackage('S6800_0_Seitz_IMS_Obsolete_Files');
=>
1 id
2 item_path
3 item_type
4 version
5 versiondataobjid
1 2 3 4 5
| 4002520 | CPM_META/q07i101.cols.xml | 1 | 1 | 5965056 |
| 3992044 | CPM_META/q07i102.cols.xml | 1 | 9 | 6017511 |
| 4114775 | CPM_META/q07i105.cols.xml | 1 | 2 | 6146470 |
| 3992045 | CPM_META/q07i109.cols.xml | 1 | 6 | 5968199 |
| 3992046 | CPM_META/q07i113.cols.xml | 1 | 6 | 5968200 |
| 4233433 | CPM_META/q24i200shw.cpmload.xml | 1 | 13 | 6327078 |
| 4233434 | CPM_META/q24i200shw.flm.cpmload.xml | 1 | 4 | 6318106 |
| 4233435 | CPM_META/q24i210kumul.cpmload.xml | 1 | 11 | 6327079 |
| 4233436 | CPM_META/q24i210kumul.flm.cpmload.xml | 1 | 4 | 6318108 |
| 4233437 | CPM_META/q24i210risiko.cpmload.xml | 1 | 13 | 6336633 |
| 4233438 | CPM_META/q24i210risiko.flm.cpmload.xml | 1 | 4 | 6318110 |
| 4233439 | CPM_META/q24i210schaden.cpmload.xml | 1 | 13 | 6327081 |
| 4233440 | CPM_META/q24i210schaden.flm.cpmload.xml | 1 | 4 | 6318112 |
| 4003062 | CPM_META/q33i001.cols.xml | 1 | 3 | 5981911 |
| 4003063 | CPM_META/q33i003.cols.xml | 1 | 4 | 5981912 |
| 4003064 | CPM_META/q33i005.cols.xml | 1 | 3 | 5981913 |
| 4003065 | CPM_META/q33i206.cols.xml | 1 | 3 | 5981914 |
| 4115111 | CPM_META/q44i912.cols.xml | 1 | 2 | 6157279 |
| 4144529 | CPM_META/q44i912.cpmload.xml | 1 | 2 | 6318380 |
| 4144530 | CPM_META/q44i912.flm.cpmload.xml | 1 | 2 | 6318381 |
| 4115112 | CPM_META/q44i913.cols.xml | 1 | 3 | 6237929 |
| 4115113 | CPM_META/q44i914.cols.xml | 1 | 4 | 6249865 |
| 4144531 | CPM_META/q44i914.cpmload.xml | 1 | 7 | 6318382 |
| 4144532 | CPM_META/q44i914.flm.cpmload.xml | 1 | 2 | 6318383 |
| 4095239 | CPM_META/q46i080.cpmload.xml | 1 | 3 | 6327923 |
| 4095240 | CPM_META/q46i080.flm.cpmload.xml | 1 | 2 | 6318576 |
| 4095550 | CPM_META/q46i081.cpmload.xml | 1 | 3 | 6327924 |
| 4095551 | CPM_META/q46i081.flm.cpmload.xml | 1 | 2 | 6318578 |
| 4095548 | CPM_META/q46i084.cpmload.xml | 1 | 3 | 6327925 |
| 4095549 | CPM_META/q46i084.flm.cpmload.xml | 1 | 2 | 6318580 |
| 4003101 | CPM_META/q80i102.cols.xml | 1 | 4 | 5974529 |
| 3936189 | ddl/table/q31i001.sql | 1 | 1 | 5885525 |
| 3936190 | ddl/table/q31i002.sql | 1 | 1 | 5885526 |
| 3936191 | ddl/table/q31i003.sql | 1 | 1 | 5885527 |
| 3936192 | ddl/table/q31i004.sql | 1 | 1 | 5885528 |
| 3936193 | ddl/table/q31i007.sql | 1 | 1 | 5885529 |
| 3936194 | ddl/table/q31i014.sql | 1 | 1 | 5885530 |
| 3936195 | ddl/table/q31i017.sql | 1 | 1 | 5885531 |
| 4144537 | ddl/table/q44i912_cpm.sql | 1 | 1 | 6163139 |
| 4144538 | ddl/table/q44i914_cpm.sql | 1 | 1 | 6163140 |
| 3936311 | ddl/table/q65i001.sql | 1 | 1 | 5885647 |
| 3936312 | ddl/table/q65i002.sql | 1 | 1 | 5885648 |
| 3936313 | ddl/table/q65i003.sql | 1 | 1 | 5885649 |
| 3936314 | ddl/table/q65i030.sql | 1 | 1 | 5885650 |
| 4060343 | ddl/udf/rv_cpm_load_ims.sql | 1 | 1 | 6038412 |
| 4060442 | ddl/udf/rv_cpm_load_imsh.sql | 1 | 2 | 6039389 |
| 4060883 | ddl/udf/rv_cpm_load_imshr.sql | 1 | 1 | 6039379 |
switchPackage() - Übertrage Item in anderes Paket
Synopsis
$output = $scm->switchPackage($fromPackage,$toPackage,@files);
Arguments
- $fromPackage
-
Name des Quellpakets (from package).
- $toPackage
-
Name des Zielpakets (to package).
- @files
-
Dateien (versions), die übertragen werden sollen.
Returns
Ausgabe des Kommandos (String)
Description
Übertrage die Dateien @files von Paket $fromPackage in Paket $toPackage.
promote() - Promote Packages
Synopsis
$scm->promote($state,@packages);
Arguments
Returns
Ausgabe des Kommandos (String)
Description
Promote die Package @packages von der Stufe $state auf die darüberliegende Stufe und liefere die Ausgabe des Kommandos zurück.
demote() - Demote Packages
Synopsis
$scm->demote($state,@packages);
Arguments
Returns
Ausgabe des Kommandos (String)
Description
Demote die Packages @packages der Stufe $state auf die darunterliegende Stufe, und liefere die Ausgabe des Kommandos zurück.
movePackage() - Bringe Package auf Zielstufe
Synopsis
$output = $scm->movePackage($state,$package,@opt);
Arguments
Options
- -askUser => $bool (Default: 0)
-
Frage den Benutzer, ob er die Post-Deployment-Bestätigung erhalten hat.
Returns
Ausgabe des Kommandos (String)
Description
Bringe das Package $package von der aktuellen Stufe auf die Zielstufe $state und liefere die Ausgabe des Kommandos zurück. Liegt die Zielstufe über der aktuellen Stufe, wird das Package promotet, andernfalls demotet.
packageState() - Stufe des Pakets
Synopsis
$state = $scm->packageState($package);
Arguments
Returns
Description
Liefere die Stufe $state, auf der sich Package $package befindet. Existiert das Package nicht, liefere einen Leerstring ('').
listPackages() - Liste aller Pakete
Synopsis
$tab = $scm->listPackages;
Returns
- @packages | $packageA
-
Liste aller Packages (Array of Arrays). Im Skalarkontext eine Referenz auf die Liste.
Description
Liefere die Liste aller Packages.
Workspace
sync() - Synchronisiere Workspace mit Repository
Synopsis
$scm->sync;
Description
Bringe den Workspace auf den Stand des Repository und liefere die Ausgabe des Kommandos zurück.
States
states() - Liste der Stufen
Synopsis
@states | $stateA = $scm->states;
Database
sql() - Führe SQL aus
Synopsis
$tab = $scm->sql($sql);
$tab = $scm->sql($file);
Arguments
Returns
Ergebnismengen-Objekt (Quiq::Database::ResultSet::Array)
Description
Führe ein SELECT-Statement gegen die CASCM-Datenbank aus und liefere ein Ergebnismengen-Objekt zurück. Das SELECT-Statement kann als String $sql übergeben werden oder sich in einer Datei $file befinden.
Private Methoden
credentialsOptions() - Credential-Optionen
Synopsis
@arr = $scm->credentialsOptions;
Description
CASCM kennt mehrere Authentisierungsmöglichkeiten, die sich durch Aufrufoptionen unterscheiden. Diese Methode liefert die passenden Optionen zu den beim Konstruktor-Aufruf angegebenen Authentisierungs-Informationen. unterschieden werden:
Authentisierung durch Datei mit verschlüsselten Credentials (-eh)
Authentisiertung durch Benutzername/Passwor (-usr, -pw)
Bevorzugt ist Methode 1, da sie sicherer ist als Methode 2.
runCmd() - Führe Kommando aus
Synopsis
$output = $scm->runCmd($cmd,$c);
Arguments
Returns
Description
Führe das CA Harvest SCM Kommando $cmd mit den Optionen des Kommandozeilenobjekts $c aus und liefere den Inhalt der Ausgabedatei zurück.
runSql() - Führe SQL-Statement aus
Synopsis
$tab = $scm->runSql($sql);
Arguments
Returns
Ergebnismengen-Objekt (Quiq::Database::ResultSet::Array)
Description
Führe SELECT-Statement $sql auf der CASCM-Datenbank aus und liefere die Ergebnismenge zurück. Ist ein UDL definiert (s. Konstruktoraufruf) wird die Selektion direkt auf der Datenbank ausgeführt, andernfalls über das CASCM-Kommando hsql.
VERSION
1.171
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2020 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.