2016-04-13 3 views
0

Ich entwickle ein Plugin für meine Software, die Microsoft TFS verwalten wird. Jede Plugin-Operation (Auschecken, Label erstellen, Einchecken usw.) muss einzeln ausgeführt werden. Meine Checkout-Operation erstellt einen Arbeitsbereich, lädt diesen Arbeitsbereich herunter und löscht dann die Arbeitsbereich-Zuordnung, lässt aber die Dateien zurück, die erstellt oder geändert werden sollen.TFS Java SDK Erstelle PendingChange [] Objekt

Jetzt, nachdem die Dateien geändert wurden, muss ich sie wieder einchecken. Da ich den Arbeitsbereich bereits gelöscht habe, muss ich einen neuen erstellen.

Ich habe Probleme beim Erstellen eines PendingChange [] Objekts aus den Dateien im Arbeitsbereich. Könnte jemand irgendwelche Proben darüber geben, wie dies geschehen würde?

Dies ist der Code, den ich mit meinem Arbeitsbereich zu erstellen, wenn es hilft: Dokumentation des

public Workspace createWorkspace(String pWorkspaceName, String pLocalPath, String pServerPath) 
{ 
WorkingFolder[] foldersToMap = null; 
if (pServerPath != null && pLocalPath != null) 
    { 
     final List<WorkingFolder> folderList = new ArrayList<WorkingFolder>(); 
     folderList.add(new WorkingFolder(pServerPath, LocalPath.canonicalize(pLocalPath), WorkingFolderType.MAP, RecursionType.FULL)); 
     foldersToMap = folderList.toArray(EMPTY_WORKING_FOLDER_ARRAY); 
    } 
    else if (pServerPath == null || pServerPath.isEmpty()) 
    { 
     //throw 
    } 
    else if (pLocalPath == null || pLocalPath.isEmpty()) 
    { 
     //throw 
    } 

Workspace w = 
    mVersionControlClient.createWorkspace(foldersToMap, pWorkspaceName, VersionControlConstants.AUTHENTICATED_USER, VersionControlConstants.AUTHENTICATED_USER, null /*Comment*/, 
             WorkspaceLocation.SERVER, WorkspaceOptions.NONE); 

return w; 
} 

Microsoft ist auf dem Java-SDK nicht groß, so ist jede Hilfe dankbar.

P.S. Wenn etwas mit meiner Frage nicht in Ordnung ist, oder wenn Sie etwas klarstellen möchten, hinterlassen Sie einen Kommentar und lassen Sie es mich wissen, bevor Sie eine Downvote machen. Ich werde es beheben.

Antwort

0
Workspace ws = vcc.getWorkspace(workspaceName, ownerName); 
PendingSet pendings = ws.getPendingChanges(); 
for (PendingChange pending : pendings.getPendingChanges()) { 
    ItemType type = pending.getItemType(); 
    /*Don't download if it is a Folder*/ 
    if (type.getWebServiceObject().getName() 
      .equals("Folder")) 
     continue; 
    ChangeType change = pending.getChangeType(); 
    Item item = vcc.getItem(pending.getServerItem()); 
    String itemName = StringUtils.getItemName(item.getServerItem()); 

    /*My business rule: can't download if isn't in Lock with owner*/ 
    if (!change.toString().contains("(512): Lock")) { 
     returns.add(new Return("ERROR", "The object " 
+ item.getServerItem() 
+ " isn't in Lock with " + owner 
+ ".")); 
      continue; 
    } 
    String destinationFile = destinationPath + "\\" + itemName; 
    item.downloadFile(vcc, destinationFile); 

} 

Ich hoffe, Ihnen behilflich zu sein.

Verwandte Themen