Al subir un archivo azure devops usando Push API, el objeto '' no existe.' se muestra "typeName":"Microsoft.TeamFoundation. Git
Estoy tratando de añadir un archivo en la carpeta de respos usando debajo de API:
ado_req_headers_ATT = {'Content-Type':'application/octet-stream'}
Get_Branch_url = str(organization_url)+str('/_apis/git/repositories/')+str(ReposID)+str('/refs?filter=heads/&api-version=6.0')
print(Get_Branch_url)
Get_Branch_Details = requests.get(url=Get_Branch_url,headers=ado_req_headers_ATT,auth=('',ADO_AUTH_PAT))
#print(Get_Branch_Details.status_code)
print(Get_Branch_Details.text)
Get_Branch_Details=Get_Branch_Details.json()
for item in Get_Branch_Details["value"]:
if item["name"] == **'refs/heads/XXX'**:
old_object_ID = item["objectId"]
old_object_name= item["name"]
print(old_object_name,":-",old_object_ID) **## Prints refs/heads/XXX : YYYYYYYYYYYYYYYYYYYYYY**
La respuesta para la url anterior incluye:
{
"value": [
{...
**"name": "refs/heads/XXX",
"objectId": "YYYYYYYYYYYYYYYYYYYYYY",**
"creator": {
"displayName": "AAAAAAAAAA",
"url": "https://spsprodsin1.vssps.visualstudio.com/UUUUUU",
"_links": {
"avatar": {
"href": "https://dev.azure.com/TTTTTT"
}
},
"id": "MMMMMMMMM",
"uniqueName": "PPPPPPPP",
Y tratar este ID de objetos: YYYYYYYYYYYYYYYYYYYYYYYYYYY como antiguo ObjectID y tratando de empujar un archivo en la ruta: refs/heads/XXX utilizando a continuación API:
###### Push a File in Ref_Devops-dev ###############################
ado_req_headers_ATT = {"Content-Type":"application/json-patch+json"}
push_file_url = str(organization_url)+str('/_apis/git/repositories/')+str(ReposID)+str('/pushes?api-version=6.0')
Body_data = {"refUpdates": [{"name": refs/heads/XXX,"oldObjectId":YYYYYYYYYYYYYYYYYYYYYY}],"commits":[{"comment": "Added text file.","changes":[{"changeType": "add","item": {"path":"/test.txt"},"newContent": {"content": "# Tasks\n\n* Item 1\n* Item 2","contentType": "rawtext"}}]}]}
Body_data = json.dumps(Body_data)
print(Body_data)
Push_file= requests.post(url=push_file_url,headers=ado_req_headers_ATT,data=Body_data,auth=('',ADO_AUTH_PAT))
print(Push_file.json())
print(Push_file.status_code)
print(Push_file.text)
Pero la respuesta fue:
{"$id":"1","innerException":null,"message":"TF401035: The object 'YYYYYYYYYYYYYYYYYYYYYY' does not exist.","typeName":"Microsoft.TeamFoundation.Git.Server.GitObjectDoesNotExistException, Microsoft.TeamFoundation.Git.Server","typeKey":"GitObjectDoesNotExistException","errorCode":0,"eventId":3000}
Y sin duda perder un paso final también básico. Cualquier sugerencia pls
Pregunta hecha hace 3 años, 4 meses, 28 días - Por byteninja8245
4 Respuestas:
-
Sobre el error se puede eliminar haciendo referencia a la API de compromiso en lugar de la API mencionada "
Respondida el Dec 18, 2020 a las 19:29 - por pixelprodigy50bb
Votos positivos: 0 | Votos negativos: 0 -
obtener el último ID de confirmación.
Respondida el Dec 18, 2020 a las 19:37 - por algorithmadeptc6cb
Votos positivos: 0 | Votos negativos: 0 -
El error que estás recibiendo indica que el objeto con el ID "YYYYYYYYYYYYYYYYYYYYYY" no existe en el repositorio de Git de Azure DevOps. Parece que estás intentando utilizar ese ID como el
oldObjectId
al realizar la operación de push de un archivo.Un posible problema podría estar en la forma en la que estás construyendo la URL y el cuerpo de la solicitud de push. Revisa detenidamente el código y asegúrate de que estás pasando correctamente el
oldObjectId
para que coincida con el objeto correcto en el repositorio.Por otro lado, en el cuerpo de la solicitud de push, asegúrate de que estás pasando correctamente el nombre de la referencia (en este caso
refs/heads/XXX
) como un string y rodeado por comillas dobles en{"name": "refs/heads/XXX"}
.Además, verifica que tengas los permisos adecuados para realizar la operación de push en el repositorio.
Finalmente, te recomendaría revisar la documentación de Azure DevOps API para asegurarte de que estás siguiendo correctamente los pasos y utilizando los parámetros requeridos en tu solicitud de push.
Espero que esta información te sea útil y pueda ayudarte a resolver el problema. ¡Buena suerte!
Respondida el Dec 19, 2020 a las 19:30 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
El error "El objeto 'YYYYYYYYYYYYYYYYYYYYYY' no existe" indica que el objeto especificado como
oldObjectId
en la solicitud de inserción no existe en el repositorio. Esto puede suceder si el objeto fue eliminado o si se especificó un identificador de objeto incorrecto.Para resolver este problema, asegúrate de que el
oldObjectId
especificado sea correcto. Puedes obtener eloldObjectId
correcto consultando la API de Git de Azure DevOps para el objeto correspondiente. Aquí tienes un ejemplo de cómo hacerlo:import requests
Reemplaza estos valores con los tuyos
organization_url = "https://dev.azure.com/your-organization" ReposID = "your-repo-id" ADO_AUTH_PAT = "your-ADO-personal-access-token" refs = "refs/heads/XXX" ado_req_headers = {'Content-Type':'application/octet-stream'} get_branch_url = f"{organization_url}/_apis/git/repositories/{ReposID}/refs?filter=heads/{refs}&api-version=6.0" get_branch_details = requests.get(url=get_branch_url, headers=ado_req_headers, auth=('', ADO_AUTH_PAT)) get_branch_details = get_branch_details.json() for item in get_branch_details["value"]: if item["name"] == refs: old_object_id = item["objectId"] break print("old_object_id:", old_object_id)Una vez que tengas el
oldObjectId
correcto, puedes utilizarlo en la solicitud de inserción. Aquí tienes un ejemplo actualizado de tu código:Reemplaza YYYYYYYYYYYYYYYYYYYYYYYYYY con el oldObjectId correcto
Body_data = {"refUpdates": [{"name": "refs/heads/XXX","oldObjectId": "YYYYYYYYYYYYYYYYYYYYYY"}, ...]}Respondida el Dec 19, 2020 a las 19:35 - por Gemini
Votos positivos: 0 | Votos negativos: 0