我正在使用CVS共享模型的多用戶環境中工作。如何列出我已簽出的所有包?
模型很大,有很多包。有時候,我沒有意識到已經檢出了一個包,從而阻止其他人處理包。
是否有某種方式可以列出所有已檢出的軟件包,以便我可以檢查那些不需要的軟件包?
我正在使用CVS共享模型的多用戶環境中工作。如何列出我已簽出的所有包?
模型很大,有很多包。有時候,我沒有意識到已經檢出了一個包,從而阻止其他人處理包。
是否有某種方式可以列出所有已檢出的軟件包,以便我可以檢查那些不需要的軟件包?
企業架構師具有正好滿足您需要的內置查詢:
打開「查找項目」按Ctrl + F窗口。將顯示一個搜索窗口。
在頂部,您會看到一個默認設置爲「簡單」的「搜索:」下拉列表。
從下拉列表中選擇最後一個選項:「My Checked-out Packages」。
按「運行」按鈕或F5獲取列表。
據我所知,(在EA 10)沒有GUI對話框,顯示你這個信息。你可以做的是寫一個項目瀏覽器類型的in-EA腳本來執行這個檢查。這樣的腳本將遍歷一個包層次結構,併爲每個調用Package::VersionControlGetStatus()
。
檢查自動化和腳本 - Enterprise Architect對象模型 - 參考下的幫助文件。 Package類位於Repository包中,並有代碼示例向您展示如何遍歷層次結構。
由於@Uffe指出的那樣,我創建了一個JScript中要解決的問題:
!INC Local Scripts.EAConstants-JScript
/*
* Script Name: ListingCheckOutPackages
* Author: Stepanus David Kurniawan
* Purpose: List all packages which are checked out by this user or other user recursively
* Date: 05-05-2014
*/
// CheckOutStatus
var csUncontrolled = 0;
var csCheckedIn = 1;
var csCheckedOutToThisUser = 2;
var csReadOnlyVersion = 3;
var csCheckedOutToAnotherUser = 4;
var csOfflineCheckedIn = 5;
var csCheckedOutOfflineByUser = 6;
var csCheckedOutOfflineByOther = 7;
var csDeleted = 8;
/*
* Project Browser Script main function
*/
function OnProjectBrowserScript()
{
Repository.EnsureOutputVisible("Script");
Repository.ClearOutput("Script");
// Get the type of element selected in the Project Browser
var treeSelectedType = Repository.GetTreeSelectedItemType();
switch (treeSelectedType)
{
case otPackage :
{
// Code for when a package is selected
var thePackage as EA.Package;
thePackage = Repository.GetTreeSelectedObject();
Session.Output("----------------------------------------");
Session.Output("... listing check out packages under " + thePackage.Name + "...");
GetSubpackage(thePackage);
Session.Output("----------------------------------------");
break;
}
default:
{
// Error message
Session.Prompt("This script does not support items of this type.", promptOK);
}
}
}
var depth = 0;
function GetSubpackage(thePackage)
{
var contextPackage as EA.Package;
contextPackage = thePackage;
depth++;
// Iterate through all child packages
for (var i = 0 ; i < contextPackage.Packages.Count; i++)
{
var currentPackage as EA.Package;
currentPackage = contextPackage.Packages.GetAt(i);
//Session.Output(new Array(depth * 4 + 1).join(' ') + currentPackage.Name + currentPackage.VersionControlGetStatus());
switch (currentPackage.VersionControlGetStatus())
{
case csCheckedOutToThisUser:
Session.Output("[Checked out to this user ] " + currentPackage.XMLPath);
break;
case csCheckedOutToAnotherUser:
Session.Output("[Checked out to other user] " + currentPackage.XMLPath);
break;
}
// Recursively process child packages
GetSubpackage(currentPackage);
}
depth--;
}
OnProjectBrowserScript();
你也可以列出
項目 - >安全 - >下你的鎖管理我的頭髮..
如果您使用基於鎖的訪問控制。
對於EA 12州最好的答案是適用的下一種額外的步驟:
感謝您的腳本。不幸的是,當我運行它,我得到的錯誤:'''這個腳本不支持這種類型的項目.''' –
請點擊項目瀏覽器中的模型或包。上面的腳本通過檢查一個包然後遞歸到它的子包來工作。感覺可以自由修改它。 – David