Změna vrstvy v MorphX VCS

Už jsem před časem článek o stejné věci napsal: Přesun modelu do jiné vrstvy. Rozdíl je v tom, že tehdy jsem používal Team Foundation Server a tentokrát jsem potřeboval přesunout model do jiné vrstvy při použití MorphX VCS.

MorphX VCS nepodporuje synchronizaci, takže můj původní postup nelze použít. Co potřebujete je přesunout všechny objekty do cílové vrstvy pomocí exportu a importu a aktualizovat data v tabulkách, které slouží jako repozitář MorphX VCS. S druhým krokem vám pomůže následující kód:

str oldLayer = 'usr';
str newLayer = 'cus';
str 10 searchPattern = strFmt(@'\\%1\\*', oldLayer);
 
SysVersionControlMorphXItemTable item;
SysVersionControlMorphXRevisionTable rev;
SysVersionControlMorphXLockTable lock;
 
str replaceLayer(str path)
{
    return strFmt(@'\%1\%2', newLayer, subStr(path, 6, strLen(path)));
}
 
ttsBegin;
 
while select forUpdate item
    where item.ItemPath like searchPattern
{
    item.ItemPath = replaceLayer(item.ItemPath);
    item.update();
}
 
while select forUpdate rev
    where rev.ItemPath like searchPattern
{
    rev.ItemPath = replaceLayer(rev.ItemPath);        
    rev.update();
}
 
while select forUpdate lock
    where lock.ItemPath like searchPattern
{
    lock.ItemPath = replaceLayer(lock.ItemPath);        
    lock.update();
}
 
ttsCommit;