programing

Azure DevOps에서 파일의 원시 콘텐츠에 대한 링크를 가질 수 있습니까?

powerit 2023. 5. 3. 22:00
반응형

Azure DevOps에서 파일의 원시 콘텐츠에 대한 링크를 가질 수 있습니까?

GitHub에서 파일의 원시 콘텐츠에 대한 링크를 생성할 수 있습니다. VSTS/DevOps를 사용할 수 있습니까?

기존 답변을 읽고도 이 부분에 대해서는 조금 어려움을 겪었기 때문에 좀 더 철저한 답변을 남기고 싶었습니다.

다른 사람들이 말했듯이 패턴은 다음과 같습니다(쿼리를 읽기 쉽도록 별도의 줄로 분할).

https://dev.azure.com/{{organization}}/{{project}}/_apis/sourceProviders/{{providerName}}/filecontents
  ?repository={{repository}}
  &path={{path}}
  &commitOrBranch={{commitOrBranch}}
  &api-version=5.0-preview.1

그러나 이러한 변수의 값을 어떻게 찾을 수 있습니까?Azure DevOps에 들어가서 왼쪽 탐색에서 Repos > Files를 선택하고 특정 파일을 선택하면 현재 URL은 다음과 같습니다.

https://dev.azure.com/{{organization}}/{{project}}/_git/{{repository}}?path=%2Fpackage.json

이러한 값은 조직, 프로젝트 및 리포지토리에 사용해야 합니다.경로의 경우 HTTP 인코딩 버전의 유닉스 파일 경로를 볼 수 있습니다. %2F는 HTTP 의입니딩의 HTTP 입니다./그래서 그 길은 사실 그냥./package.json(포스트맨과 같은 도구가 당신을 위해 그 인코딩을 해줄 것입니다.)

설명적입니다. 이 아니면 커밋또분매자다니합명우합다니를 . 값이원야를 사용해야 합니다.master저는 위의 URL에 있는 api 버전을 "하드 코딩"했습니다. 왜냐하면 그것이 현재 문서가 가리키는 것이기 때문입니다.

는 마막변다같습니다과음이 필요합니다.providerName말해서, 간히말서, 당은아도를 해야 할 것입니다.TfsGit소스 공급자 목록을 살펴보고 값이 다음과 같은 공급자를 찾음으로써 이 값을 얻었습니다.true위해서supportedCapabilities.queryFileContents.

그러나 이 URL을 요청하기만 하면 인증이 필요하므로 "203 비권한 정보"라는 응답이 반환됩니다.동일한 문서를 다시 참조하면, 사용자 이름에 대한 값과 비밀번호에 대한 개인 액세스 토큰을 포함한 기본 인증을 사용하도록 되어 있습니다.다음 위치에서 개인 액세스 토큰을 만들 수 있습니다.https://dev.azure.com/{{organization}}/_usersSettings/tokens토큰 관리 - 읽기관리 권한이 있는지 확인합니다.

만약 여러분이 이런 종류의 것에 익숙하지 않다면, 다시 말하지만, 포스트맨은 여러분이 코드를 입력하기 전에 이러한 요청을 실행하는 데 매우 도움이 됩니다.


그래서 만약 당신이 저장소에src루트에 있는 디렉터리, 그리고 당신은 파일 내용을 얻으려고 합니다.src/package.jsonURL은 다음과 같아야 합니다.

https://dev.azure.com/{{organization}}/{{project}}/_apis/sourceProviders/TfsGit/filecontents?repository={{repository}}&commitOrBranch=master&api-version={{api-version}}&path=src%2Fpackage.json

그리고 기본 저자를 잊지 마세요!

물론입니다. 다음은 휴식 시간입니다.

GET https://feeds.dev.azure.com/{organization}/_apis/packaging/Feeds/{feedId}/packages/{packageId}?includeAllVersions={includeAllVersions}&includeUrls={includeUrls}&isListed={isListed}&isRelease={isRelease}&includeDeleted={includeDeleted}&includeDescription={includeDescription}&api-version=5.0-preview.1

https://learn.microsoft.com/en-us/rest/api/azure/devops/artifacts/artifact%20%20details/get%20package?view=azure-devops-rest-5.0#package

크롬을 사용하여 원시 URL을 얻을 수 있습니다.

개발자 도구를 켜고 네트워크 탭을 봅니다.

DevOps 포털(콘텐츠 패널)에서 필요한 파일을 확인합니다.컨텐츠 보기가 표시되면 네트워크 탭을 다시 확인하고 "항목?"으로 시작하는 URL을 찾습니다.경로", 필요한 "url:" 요소를 포함하는 json 응답입니다.

저는 이 URL을 사용하여 파일의 원시 내용을 얻을 수 있었습니다.

GET https://dev.azure.com/ {organization}/{project}/_apis/sourceProvidersName}/{providerName}/파일 내용?serviceEndpointId={serviceEndpointId}&repository={repository}&commitOrBranch={commOrBranch}&path={path}&api-version=5.0 미리보기1.1.

이거 여기서 가져왔어요.

https://learn.microsoft.com/en-us/rest/api/azure/devops/build/source%20providers/get%20file%20contents?view=azure-devops-rest-5.0

대부분의 답변은 이 문제를 잘 해결하지만 익명 액세스가 가능한 공개 보고서의 맥락에서 api는 다릅니다.다음은 이러한 시나리오에서 작동하는 방법입니다.

https://dev.azure.com/{{your_user_name}}/{{project_name}}/_apis/git/repositories/{{repo_name_encoded}}/items?scopePath={{path_to_your_file}}&api-version=6.0

이것은 Github에서 제공하는 "raw" url과 정확히 일치합니다.

첨부 파일 창에서 파일 이름을 끌어 다른 MS 응용 프로그램에 떨어뜨려 원시 URL 또는 연결된 파일 이름을 가져옵니다.

검색 중인 특정 파일의 원시 URL을 빨리 가져오려면 다음과 같은 방법이 유용할 수 있습니다.

  • "Undisposition"이라는 이름의 브라우저 확장을 설치합니다.
  • 도트 메뉴(오른쪽 위)에서 "다운로드"를 선택합니다. 파일은 URL을 복사할 수 있는 새 브라우저 탭에서 열립니다.

(edit: 안타깝게도 브라우저가 여는 방법을 알고 있는 파일 형식에서만 작동합니다. 그렇지 않으면 다운로드를 계속 제공합니다...)

저는 이것에 대해 상당히 생소하며 Azure DevOps Repo의 원시 파일에 액세스하는 데 문제가 있었습니다.Github에서는 간단합니다.

컬을 사용하여 CMD와 BASH의 파일을 다운로드하고 싶었습니다.먼저 브라우저에서 파일 내용을 찾아 굵은 부분을 메모합니다. https://dev.azure.com/**myOrg**/_git/**myProjectName**?path=%2F**MyFileName.ps1**

그런 다음 위에 @Zach가 올린 것과 유사한 URL을 구성했습니다.

https://dev.azure.com/**myOrg**/**myProjectName**/_apis/sourceProviders/TfsGit/filecontents?repository=**myProjectName**&commitOrBranch=**master**&api-version=5.0-preview.1&path=%2F**MyFileName.ps1**

이제 위의 URL을 브라우저에 붙여넣으면 GitHub와 유사한 RAW 형태로 콘텐츠가 표시됩니다.차이점은 My Azure DevOps 계정에서 PAT(개인 액세스 토큰)를 설정한 다음 아래의 DOS/BASH 예제에서 URL을 인증해야 한다는 것입니다.

curl -u "<username>:<password>" "https://dev.azure.com/myOrg/myProjectName/_apis/sourceProviders/TfsGit/filecontents?repository=myProjectName&commitOrBranch=master&api-version=5.0-preview.1&path=%2FMyFileName.ps1" -# -L -o MyFileName.ps1

언급URL : https://stackoverflow.com/questions/54137998/is-it-possible-to-have-a-link-to-raw-content-of-file-in-azure-devops

반응형