TFS REST API: изнутри расширения VSTS, регистрация на другой источник контроля

Из моего расширения TFS, используя TfvcHttpClient, я могу зарегистрировать файлы в том же TFS, где установлено расширение, но как я могу зарегистрироваться в другом TFS' tfvc?

import TFS_VC_TfvcRestClient = require("TFS/VersionControl/TfvcRestClient");
var tfvcApi = TFS_VC_TfvcRestClient.getClient();

Могу ли я как-то сказать getClient() использовать другой serverUrl?

Изменить: добавлен код регистрации, чтобы быть более конкретным

function checkinXML() {
    $(".vlc-tvc").hide();
    $(".vlc-button").hide();
    var changeset/*: TFS_VC_Contracts.TfvcChangeset*/ = {
        accountId: VSS.getWebContext().account.id,
        //author: {
        //    id: VSS.getWebContext().user.id,
        //    displayName: VSS.getWebContext().user.name,
        //    uniqueName: VSS.getWebContext().user.uniqueName,
        //    //url: how to get URL?
        //},
        //changesetId: currentChangeset ++?,
        //checkedInBy: {
        //    id: VSS.getWebContext().user.id,
        //    displayName: VSS.getWebContext().user.name,
        //    uniqueName: VSS.getWebContext().user.uniqueName
        //    //url: how to get URL?
        //},
        //checkinNotes: [],
        //collectionId: collectionID,
        //teamProjectIds: [projectID],
        //commentTruncated: false,
        //createdDate: null,
        //hasMoreChanges: false,
        policyOverride: {
            policyFailures: []
        },
        //url: how to get URL?
        //workItems: null,
        //_links: null,
        comment: VSS.getWebContext().user.name,
        changes: [
            {
                //mergeSources: [],
                //pendingVersion: {},
                changeType: TFS_VC_Contracts.VersionControlChangeType.Add,
                item: {
                    //changeDate: {},
                    //deletionId: {},
                    //hashValue: {},
                    isFolder: false,
                    isBranch: false,
                    isPendingChange: false,
                    //size: {},
                    //_links: {},
                    //version: {},
                    contentMetadata: {
                        contentType: "text/xml",
                        encoding: 65001
                        //    fileName: "D.USD.xml",
                        //    extension: ".xml"
                    },
                    path: sourceControlPath //+ "/" + projectName + ".xml"
                },
                newContent: {
                    content: newXML,
                    contentType: TFS_VC_Contracts.ItemContentType.RawText
                },
                //sourceServerItem: sourceControlPath + "/" + projectName + ".xml"
            }
        ]
    };
    statusindicatorObject.startWait();

    tfvcApi.getItem(changeset.changes[0].item.path).then(function (result) {
        changeset.changes[0].changeType = TFS_VC_Contracts.VersionControlChangeType.Edit;
        changeset.changes[0].item['version'] = result.version;
    }, function (error) {
        console.log(error);
    }).then(function () {
        tfvcApi.createChangeset(<any>changeset/*, projectName*/).then(function () {
            statusindicatorObject.endWait();
            var successCheckInDialog = VSS_Controls_Dialogs.show(VSS_Controls_Dialogs.ModalDialog, {
                title: "XML Check-In "  + sourceControlPath,
                content: $("<p/>").addClass("confirmation-text").html("Successfully checked-in XML to <b>" + sourceControlPath + "</br>."),
                useBowtieStyle: true,
                buttons: {
                    "OK": function () {
                        successCheckInDialog.close();
                        successCheckInDialog.dispose();
                    }
                }
            });
            $(".vlc-button").show();
            $(".vlc-tvc").show();
        }, function (error) {
            statusindicatorObject.endWait();
            var failureCheckInDialog = VSS_Controls_Dialogs.show(VSS_Controls_Dialogs.ModalDialog, {
                title: "XML Check-In " + sourceControlPath,
                content: $("<p/>").addClass("confirmation-text").html("Check-In failure: <b>" + error + "</b>!"),
                useBowtieStyle: true,
                buttons: {
                    "OK": function () {
                        failureCheckInDialog.close();
                        failureCheckInDialog.dispose();
                    }
                }
            });
            $(".vlc-button").show();
            $(".vlc-tvc").show();
        });
    });
}

1 ответ

Ты не можешь.

Соединение использует маркер неявной аутентификации, действительный только для TFVC, указанного в определении сборки.

Это означает, что вы должны получить второй токен явно, например, передавая PAT через переменную. Более того, вы не можете использовать одно и то же рабочее пространство для другого сопоставления TFVC, но вы должны использовать два рабочих пространства (это определение гранж и определять одно из них) и копировать файлы поверх.

Другие вопросы по тегам