Wie kann ich in BitBucket auf die vollständige Quelle des alten Commits zugreifen?

226

Ich kann die Dokumentation zum Zugriff auf die Quelle eines alten Commits im neuen Bit Bucket-Format nicht herausfinden oder finden. Ist das überhaupt noch möglich?

Ser Pounce
quelle
1
Welches neue Format? Verwenden Sie Mercurial oder Git? Verwenden Sie einfach Mercurial- oder Git-Clients, um auf eine alte Version zu aktualisieren.
Erno

Antworten:

369

Ich verstehe, dass Sie eine ältere Version über die BitBucket-Weboberfläche herunterladen möchten, ohne einen Mercurial / Git-Client zu verwenden.

Überprüfen Sie diese verwandte Frage . In den Kommentaren sagt jemand, dass es keine Möglichkeit gibt, dies zu tun. Zum Glück stimmt das nicht ganz.

Beim Navigieren auf den BitBucket-Projektseiten habe ich keinen Link zum Herunterladen einer beliebigen Version gefunden. Es gibt Links zum Herunterladen bestimmter Tags im folgenden Format:

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

Aber indem Sie die obige URL ein wenig anpassen, ändern Sie den Tag-Namen durch den Commit-Hash wie:

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

Sie können tatsächlich eine bestimmte Version herunterladen.

Wie von Rakka Rage in einem Kommentar erwähnt, ersetzt er auch .tar.gzdurch .zipWerke.

Rudy Matela
quelle
Kann ich den obigen Link im Android Studio-Terminal verwenden, um ein Commit zu klonen? Wenn ja, können Sie den grundlegenden Terminalcode angeben?
tccpg288
1
Ich wünschte, sie würden dies auf ihrer Website zeigen, also war es offensichtlich.
rollt
1
Warum ist es nicht relevant? Ich habe es gerade noch einmal getestet (2018-08-06) und es funktioniert immer noch. Vielleicht ist es ein Problem mit "internen" BitBucket-Servern? Ich habe dies auf dem Server von bitbucket.org getestet .
Rudy Matela
sollte api.bitbucket.orgjetzt sein
Alexander Mills
1
Kann bestätigen, dass es immer noch mit nurbitbucket.org
Vely
202

Ich habe versucht herauszufinden, ob es möglich ist, den Code eines früheren Commits wie auf GitHub zu durchsuchen, und es hat mich hierher gebracht. Ich habe die Informationen verwendet, die ich hier gefunden habe, und nachdem ich mit den URLs herumgespielt habe, habe ich tatsächlich einen Weg gefunden, auch den Code alter Commits zu durchsuchen.

Wenn Sie Ihren Code durchsuchen, lautet die URL wie folgt:

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

und indem Sie am Ende einen Commit-Hash wie folgt hinzufügen:

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

Sie können den Code an der Stelle dieses Commits durchsuchen. Ich verstehe nicht, warum es kein Dropdown-Feld für die direkte Auswahl eines Commits gibt. Die Funktion ist bereits vorhanden. Seltsam.

Hein Andre Grønnestad
quelle
2
Genau das brauchte ich. Ein direkter Link von Bitbuckets Website zu dieser URL fehlt schmerzlich.
Johnny Oshika
Leider funktioniert das nicht. Oder eher arbeiten, aber teilweise. Sie können beispielsweise surfen, https://bitbucket.org/lyro/evil/src/8cbfd51aber wenn Sie eingeben hg clone https://bitbucket.org/lyro/evil/src/8cbfd51, erhalten Sie eine zufällige Überarbeitung, möglicherweise die neueste.
Hi-Angel
Gefunden eine Abhilfe, es isthg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
Hallo-Angel
3
Für diejenigen, die nicht gerne kopieren + einfügen: Navigieren Sie zu einem bestimmten Commit, die URL ist so etwas wie https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master. Ändern Sie jetzt einfach commitsdie URL in srcund Sie durchsuchen die vollständige Quelle bei diesem Commit!
Peter
176

Schritt 1

Schritt 1


Schritt 2

Schritt 2


Schritt 3

Schritt 3


Schritt 4

Schritt 4


Letzter Schritt

Letzter Schritt

Askar
quelle
2
@ManojG Hier ist einer von mir. Anscheinend gibt es also eine Möglichkeit, bei einem bestimmten Commit zum gesamten Baum zu gelangen, wenn auch auf verwirrende Weise.
Malcolm
2
LIEBE DIESE ANTWORT. Hinweis: Sie können auch zur Datei gehen und das Dropdown-Menü verwenden. DANKE!
Mattdlockyer
3
Erstaunlicher als diese Antwort ist die Tatsache, dass wir es nicht auf Knopfdruck tun können ... einige Dinge sind wirklich erstaunlich ...
Nuno Gonçalves
Dieser Schritt wurde für mich nicht gelöst, was zu Ergebnissen führte: Die Antwort von @mattdlockyer, wählen Sie eine Datei aus, klicken Sie auf das Dropdown-Menü, wählen Sie ein älteres Commit aus und kehren Sie dann zum Repo-Basis-Link zurück, wie das letzte Bild von oscar post
user2582318
1
All dies funktioniert, aber beim Herunterladen ist es immer das neueste Commit. Mache ich es falsch oder ist es so?
Jay Mehta
29

Nur für den Fall, dass jemand in meinem Boot ist, in dem keine dieser Antworten genau funktioniert hat, habe ich Folgendes getan.

Vielleicht ist unser interner Bitbucket-Server etwas anders eingerichtet als die meisten anderen, aber hier ist die URL, unter der ich normalerweise nur die Dateien im Hauptzweig anzeigen würde:

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

Wenn ich aus dem Dropdown-Menü einen anderen Zweig als Master auswähle, wird Folgendes angezeigt:

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

Also habe ich es versucht und es hat funktioniert:

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

Jetzt kann ich das gesamte Repo so durchsuchen, wie es zum Zeitpunkt dieses Commits war.

Brent212
quelle
6
Diese Antwort ist die einzige, die tatsächlich funktioniert. Die populäreren scheinen sich auf ältere Versionen von Bitbucket zu beziehen
Klas Mellbourn
9

Tolle Antworten von vor ein paar Jahren. Jetzt hat Bitbucket es einfacher gemacht.

Kennzeichnen Sie das Commit, das Sie herunterladen möchten (wie in der Antwort von Rudy Matela erwähnt).

Gehen Sie dann zu Downloads und klicken Sie auf die Registerkarte "Tags". Sie erhalten mehrere Optionen zum Herunterladen.

Tag-Downloads

LMSingh
quelle
1
Dies war leicht der einfachste Weg. Wenn Sie keine Probleme mit Tags erhalten konnten, klicken Sie auf ein bestimmtes Commit. Oben rechts sehen Sie die Ansichtsquelle, den Zweig, das Commit und die Tags. Fügen Sie dort Ihr Tag hinzu und laden Sie es herunter.
PGMacDesign
8

Für die Aufzeichnung können Sie URLs auch folgendermaßen herumspielen:

Wenn Sie die neueste Quelle durchsuchen, haben Sie Folgendes: https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master

Ändern Sie einfach den Commit-Hash und entfernen Sie den GET-Parameter: https://bitbucket.org/my/repo/src/wantedcommithash/my.file

Ich habe oben +1 @Hein A. Grønnestad erreicht: Es funktioniert alles und ich frage mich wirklich, warum die GUI nichts enthält, um es zu verwenden.

neemzy
quelle
1

Sie können die Quelle der Datei bis zu einem bestimmten Commit anzeigen, indem Sie ?until=<sha-of-commit>die URL (nach dem Dateinamen) anhängen .

Eugen
quelle
1

Ich weiß, dass es zu spät ist, aber mit API 2.0 können Sie dies tun

von der Kommandozeile mit:

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

oder in PHP mit:

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

Dann haben Sie den Verlauf Ihrer Datei (vom letzten bis zum ältesten Commit):

{
"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
}

wo values> links> selfliefert die Datei zur Zeit in der Geschichte , die Sie mit abrufen können curl <link>oder file_get_contents(<link>).

Über die Befehlszeile können Sie schließlich filtern mit:

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

In PHP machen Sie einfach eine foreachSchleife auf dem Array $data.

Hinweis: Wenn a vorhanden <path_file>ist /, müssen Sie es konvertieren %2F.

Das Dokument finden Sie hier: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D

tormec
quelle