Попробуйте эти способы:
Если вы используете ГИТ:
- Получить фиксации ID значения: метод запроса: GET; URL [url]/[название проекта команды]/_ apis/git/repositories/[имя репозитория] /commits?api-version=1.0 & branch = master & $ top = 1
- Обновление содержимого файла: Метод запроса: Сообщение ; URL: [collection url]/[название проекта команды]/_ apis/git/repositories/[имя репозитория] /pushes?api-version=3.0-preview.2; Тип контента: application/json;
JSON данные:
{
"refUpdates": [{
"name": "refs/heads/master",
"oldObjectId": "[step 1 commit ID]"
}],
"commits": [{
"comment": "Updated BuildLog.cs",
"changes": [{
"changeType": 2,
"item": {"path": "/BuildLog.cs"},
"newContent": {
"content": "using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
public class BuildLog
{
public int count;
public string[] value6;
}
}
",
"contentType": 0
}
}]
}]
}
Если вы используете TFVC:
- Получить ID набора изменений: метод запроса: GET; URL: [коллекция url]/_ apis/tfvc/changesets? Api-version = 1.0 & $ top = 1
- Обновить содержимое файла: Метод запроса: Сообщение; URL: [коллекция url]/_ apis/tfvc/changesets? Api-version = 3.0-preview.2; Тип контента: application/json;
Json данные:
{
"comment": "Updated Class1.cs",
"changes": [{
"changeType": 2,
"item": {
"path": "$/Scrum2015/ClassLibraryB/ClassLibraryB/Class1.cs",
"contentMetadata": {"encoding": 65001},
"version": [step changeset id]
},
"newContent": {
"content": "using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ClassLibraryB
{
public class Class1
{
string sgs = \"\";
public void T()
{
ClassLibraryA.Class1 c = new ClassLibraryA.Class1();
c.TestOther2();
}
}
}
",
"contentType": 0
}
}]
}
Примечание: Вам нужно разобрать кавычки, если содержимое файла содержит кавычки (\»тест \»), то же самое, как и другие специальные чартеры.
С другой стороны, вы можете добиться того, что через VSO-узел-апи, больше информации, вы можете обратиться к этой теме: TFS Rest API check-in to Version Control
Update1:
Обратитесь к этому коду, чтобы изменить ваш код:
var json={
"comment": "Updated tt.json",
"changes": [{
"changeType": 2,
"item": {
"path": "$/Scrum2015/Buildtest/CoreSolutionDemo/WebApplication1/tt.json",
"contentMetadata": { "encoding": 65001 },
"version": 754
},
"newContent": {
"content": "[ {\"hello\" : \"Test2\"} ]",
"contentType": "RawText"
}
}]
};
$.ajax({
type: 'POST',
url: 'https://XXX.visualstudio.com/_apis/tfvc/changesets?api-version=3.0-preview.2',
contentType: 'application/json',
data: JSON.stringify(json),
cache: false,
dataType: 'json',
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa("name" + ":" + "password or PAT"));
},
}).done(function (data) {
var s1 = "ss";
}).error(function (e) {
var s = "ss";
});
})
Что такое код детали? Попробуйте выполнить проверку через инструмент POSTMAN (Chrome), чтобы проверить запрос. С другой стороны, вы можете попытаться захватить запросы через инструмент разработчика (https://msdn.microsoft.com/en-us/library/gg130952(v=vs.85).aspx) (открыть веб-доступ> код, обновить и сохраняйте файлы и запросы на захват.) –
Когда я проверяю запрос с помощью инструмента dev, пытаясь отправить POST на URL-адрес, на который вы ссылаетесь на шаге 2, используя TFVC, я получаю статус 400. Я не уверен, как воспроизвести вызов, используя postman. Я просто использую ajax с типом: «POST», url: (шаг 2 url), данные: (что у вас есть в данных JSON, но с моим контентом и файловым контуром, заголовком : Авторизация и contentType: application/json есть что-то мне не хватает –
Какова информация о запросе, который вы захватили с помощью инструмента dev? Какова деталь данных JSON? Укажите здесь код детали. –