BitBucket에서 이전 커밋의 전체 소스에 액세스하는 방법은 무엇입니까?


226

새로운 Bit Bucket 형식의 이전 커밋 소스에 액세스하는 방법에 대한 설명서를 찾거나 찾을 수 없습니다. 더 이상 가능합니까?


1
어떤 새로운 형식입니까? Mercurial 또는 Git을 사용하고 있습니까? Mercurial 또는 Git 클라이언트를 사용하여 이전 버전으로 업데이트하십시오.
Erno

답변:


369

Mercurial / Git 클라이언트를 사용하지 않고 BitBucket 웹 인터페이스를 통해 이전 버전을 다운로드하려고합니다.

관련 질문을 확인하십시오 . 의견에 따르면 누군가 그렇게 할 방법이 없다고 말합니다. 다행히도 그것은 사실이 아닙니다.

BitBucket 프로젝트 페이지를 탐색하여 임의 버전을 다운로드 할 수있는 링크가 없습니다. 다음과 같은 형식으로 특정 태그를 다운로드 할 수있는 링크가 있습니다.

https://bitbucket.org/owner/repository/get/v0.1.2.tar.gz

그러나 위의 URL을 약간 조정하여 커밋 해시로 태그 이름을 변경하면 다음과 같습니다.

https://bitbucket.org/owner/repository/get/A0B1C2D.tar.gz

실제로 특정 버전을 다운로드 할 수 있습니다.

에서 언급 한 바와 같이 락카 분노 교체, 코멘트에 .tar.gz의해 .zip너무 작품.


커밋을 복제하기 위해 Android Studio 터미널에서 위의 링크를 사용할 수 있습니까? 그렇다면 기본 터미널 코드를 제공 할 수 있습니까?
tccpg288

1
나는 그들이 그들의 웹 사이트에 이것을 보여 주었으면 좋겠다.

1
왜 관련이 없습니까? 방금 다시 테스트했으며 (2018-08-06) 여전히 작동합니다. "사내"BitBucket 서버에 문제가 있습니까? 나는 이것을 bitbucket.org 서버 에서 테스트했습니다 .
Rudy Matela

해야 api.bitbucket.org지금
알렉산더 밀스에게

1
그것이 여전히 작동하는지 확인할 수 있습니다bitbucket.org
Vely

202

GitHub에서 할 수있는 것처럼 이전 커밋 코드를 탐색 할 수 있는지 알아 내려고 노력 중입니다. 나는 여기에서 찾은 정보를 사용했고 URL을 찾은 후에 실제로 오래된 커밋 코드를 탐색하는 방법을 찾았습니다.

코드를 탐색 할 때 URL은 다음과 같습니다.

https://bitbucket.org/user/repo/src/

그리고 끝에 다음과 같이 commit hash를 추가하면 :

https://bitbucket.org/user/repo/src/a0328cb

해당 커밋 시점에서 코드를 찾아 볼 수 있습니다. 커밋을 직접 선택하기위한 드롭 다운 상자가없는 이유를 이해하지 못합니다.이 기능은 이미 있습니다. 이상한.


2
이것이 바로 내가 필요한 것입니다. Bitbucket 사이트에서이 URL로 직접 연결되는 링크가 없습니다.
Johnny Oshika

아아, 이것은 작동하지 않습니다. 또는 오히려 작동하지만 부분적으로. 예를 들어 탐색 할 수 https://bitbucket.org/lyro/evil/src/8cbfd51있지만을 입력 hg clone https://bitbucket.org/lyro/evil/src/8cbfd51하면 임의의 수정본, 아마도 최신 버전이 표시됩니다.
Hi-Angel

해결 방법을 찾았습니다.hg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
Hi-Angel

3
복사 + 붙여 넣기를 원하지 않는 사람들을 위해 : 특정 커밋을 탐색하면 URL은 다음과 같습니다 https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master. 이제 commitsURL을 변경 src하면이 커밋에서 전체 소스를 탐색하고 있습니다!
피터

176

1 단계

1 단계


2 단계

2 단계


3 단계

3 단계


4 단계

4 단계


마지막 단계

마지막 단계


2
@ManojG 여기 하나가 있습니다. 다소 혼란 스럽지만 특정 커밋에서 전체 트리에 도달하는 방법이 분명히 있습니다.
Malcolm

2
이 답변을 사랑하십시오. 참고 : 파일로 이동하여 드롭 다운을 사용할 수도 있습니다. 감사합니다!
mattdlockyer

3
이 답변보다 더 놀라운 것은 우리가 버튼 클릭으로 그것을 할 수 없다는 사실입니다 ... 몇 가지 정말 놀랍습니다 ....
Nuno Gonçalves

이 단계는 나를 위해 해결되지 않았습니다. 결과는 무엇입니까 : @mattdlockyer의 답변, 파일 선택, 드롭 다운을 클릭하고 이전 커밋을 선택한 다음 oscar post의 마지막 이미지와 같은 repo 기본 링크로 돌아가십시오
user2582318

1
이 모든 것이 작동하지만 다운로드 할 때 항상 최신 커밋입니다. 내가 잘못하고 있거나 그런 식입니까?
Jay Mehta

29

이 답변 중 어느 것도 정확하게 작동하지 않은 사람이 내 보트에있는 경우를 대비하여 여기 내가 한 일이 있습니다.

아마도 우리의 사내 Bitbucket 서버는 대부분의 것과 약간 다르게 설정되지만 마스터 브랜치에서 파일을보기 위해 일반적으로 사용하는 URL은 다음과 같습니다.

https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse

드롭 다운 메뉴에서 master와 다른 지점을 선택하면 다음과 같이 나타납니다.

https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse?at=refs%2Fheads%2F<BRANCH_NAME>

그래서 나는 이것을 시도했고 효과가 있었다 :

https://<BITBUCKET_URL>/projects/<PROJECT_GROUP>/repos/<REPO_NAME>/browse?at=<COMMIT_ID>

이제 커밋 당시와 마찬가지로 전체 리포지토리를 찾아 볼 수 있습니다.


6
이 답변은 실제로 작동하는 유일한 답변입니다. 더 인기있는 것은 이전 버전의 Bitbucket
Klas Mellbourn의

9

몇 년 전에 큰 답변. 이제 Bitbucket이 더 쉬워졌습니다.

Rudy Matela의 답변에서 언급 한대로 다운로드하려는 커밋에 태그를 지정하십시오.

그런 다음 다운로드로 이동하여 "태그"탭을 클릭하면 여러 다운로드 옵션이 제공됩니다.

태그 다운로드


1
이것은 가장 쉬운 방법이었습니다. 태그 문제를 얻지 못한 사람들은 특정 커밋을 클릭하면 오른쪽 상단에 소스, 브랜치, 커밋 및 태그가 표시됩니다. 태그를 추가 한 다음 다운로드로 이동하십시오.
PGMacDesign

8

기록을 위해 다음과 같이 URL을 둘러 볼 수도 있습니다.

최신 소스를 탐색 할 때 다음과 같은 것이 있습니다. https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master

커밋 해시를 변경하고 GET 매개 변수를 제거하십시오. https://bitbucket.org/my/repo/src/wantedcommithash/my.file

위의 +1 @Hein A. Grønnestad로 가십시오 : GUI에서 왜 아무것도 사용하지 않는지 궁금합니다.



1

?until=<sha-of-commit>파일 이름 뒤에 URL 을 추가하여 특정 커밋까지 파일의 소스를 볼 수 있습니다 .


1

너무 늦었지만 API 2.0을 사용하면 할 수 있습니다.

명령 줄에서

curl https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>

또는 PHP에서 :

$data = json_decode(file_get_contents("https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>", true));

그런 다음 가장 최근의 커밋에서 가장 오래된 커밋까지 파일 히스토리가 있습니다.

{
"pagelen": 50,
"values": [
    {
      "links": {
        "self": {
          "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<hash>/<path_file>"
        },
        "meta": {
          "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<HEAD>/<path_file>?format=meta"
        },
        "history": {
          "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<HEAD>/<path_file>"
        }
      },
      "commit": {
        "hash": "<HEAD>",
        "type": "commit",
        "links": {
          "self": {
            "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/commit/<HEAD>"
          },
          "html": {
            "href": "https://bitbucket.org/<user>/<repo>/commits/<HEAD>"
          }
        }
      },
      "attributes": [],
      "path": "<path_file>",
      "type": "commit_file",
      "size": 31
    },
    {
      "links": {
        "self": {
          "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<HEAD~1>/<path_file>"
        },
        "meta": {
          "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/src/<HEAD~1>/<path_file>?format=meta"
        },
        "history": {
          "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<HEAD~1>/<path_file>"
        }
      },
      "commit": {
        "hash": "<HEAD~1>",
        "type": "commit",
        "links": {
          "self": {
            "href": "https://api.bitbucket.org/2.0/repositories/<user>/<repo>/commit/<HEAD~1>"
          },
          "html": {
            "href": "https://bitbucket.org/<user>/<repo>/commits/<HEAD~1>"
          }
        }
      },
      "attributes": [],
      "path": "<path_file>",
      "type": "commit_file",
      "size": 20
    }
  ],
  "page": 1
}

여기서 values> links>은 self역사의 순간에 파일을 제공합니다 당신이 그것을 검색 할 수있는 curl <link>또는file_get_contents(<link>) .

결국, 명령 행에서 다음을 사용하여 필터링 할 수 있습니다.

 curl https://api.bitbucket.org/2.0/repositories/<user>/<repo>/filehistory/<branch>/<path_file>?fields=values.links.self

PHP foreach에서 배열에 루프를 만듭니다.$data .

참고 : 경우 <path_file>가있는 /당신은 그것을 변환해야%2F .

다음 문서를 참조하십시오 : https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.