Протокол GVFS (версия 1)
Сетевой протокол GVFS состоит из четырёх операций на трёх конечных точках. Вкратце:
GET /gvfs/objects/{objectId}
POST /gvfs/objects
GET /gvfs/prefetch[?lastPackTimestamp={secondsSinceEpoch}]
POST /gvfs/sizes
GET /gvfs/config
GET /gvfs/objects/{objectId}
Вернёт один объект в сжатом формате свободного объекта, который можно напрямую записать в .git/xx/yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
, если это необходимо. Запрос/ответ похож на «тупой протокол», как описано здесь.
POST /gvfs/objects
Вернёт несколько объектов, возможно больше, чем запросил клиент, на основе параметров запроса. Запрос состоит из тела JSON следующего формата:
{
"objectIds" : [ {JSON массив SHA-1 идентификаторов объектов, в виде строк} ],
"commitDepth" : {положительное целое число}
}
Например:
{
"objectIds" : [
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
],
"commitDepth" : 1
}
Accept: application/x-git-packfile
(по умолчанию)Если указан заголовок Accept
application/x-git-packfile
, или заголовок Accept
не указан, клиенту будет возвращён упакованный файл git, индексируемый через index-pack
.
Если objectIds
включает фиксацию, то все tree
рекурсивно ссылаются на эту фиксацию также возвращаются. Если запрашивается любой другой тип объекта (tree
, blob
или tag
), то возвращается только этот объект.
commitDepth
— если запрошенный объект является фиксацией, все родители до n
уровней глубины будут возвращены вместе со всеми их деревьями, как описано ранее. Не включает blob
s.
Accept: application/x-gvfs-loose-objects
ПРИМЕЧАНИЕ: Этот формат в настоящее время поддерживается только сервером кэширования, а не VSTS.
Чтобы включить сценарии, где требуется несколько объектов, но меньше накладных расходов было бы понесено при использовании уже существующих свободных объектов (например, на прокси-сервере кэширования), также поддерживается альтернативный формат ответа, подобный упакованному файлу, который содержит свободные объекты.
Для получения объектов в этом формате клиент ДОЛЖЕН предоставить заголовок Accept
application/x-gvfs-loose-objects
в конечную точку POST /gvfs/objects
. В противном случае формат ответа будет application/x-git-packfile
.
Этот формат НЕ выполняет никакого расширения от фиксации к дереву и вернёт ошибку, если указана commitDepth
, превышающая 1
. Другими словами, этот тип Accept
/возврата не имеет понятия «неявно запрошенных» объектов.
num_objects
представляет переменное количество объектов в файле/ответе. Описывая их URL и значение по умолчанию с помощью понятного имени, которое пользователи могут использовать для определения того, какой кэш-сервер использовать. Обратите внимание, что имена «None» и «User Defined» зарезервированы GVFS. Любые кэши с этими именами могут вызвать неопределённое поведение в клиенте GVFS.Пример ответа приведён ниже. Обратите внимание, что значение "Max"
"null"
разрешено только для последнего (или самого большого) диапазона, поскольку оно логически исключает более высокие номера версий от воздействия.
{
"AllowedGvfsClientVersions": [{
"Max": {
"Major": 0,
"Minor": 4,
"Build": 0,
"Revision": 0
},
"Min": {
"Major": 0,
"Minor": 2,
"Build": 0,
"Revision": 0
}
}, {
"Max": {
"Major": 0,
"Minor": 5,
"Build": 0,
"Revision": 0
},
"Min": {
"Major": 0,
"Minor": 4,
"Build": 17009,
"Revision": 1
}
}, {
"Max": null,
"Min": {
"Major": 0,
"Minor": 5,
"Build": 16326,
"Revision": 1
}
}],
"CacheServers": [{
"Url": "https://redmond-cache-machine/repo-id",
"Name": "Redmond",
"GlobalDefault": true
}, {
"Url": "https://dublin-cache-machine/repo-id",
"Name": "Dublin",
"GlobalDefault": false
}]
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )