Come accedere alla fonte completa del vecchio commit in BitBucket?


227

Non riesco a capire o trovare la documentazione su come accedere alla fonte di un vecchio commit nel nuovo formato Bit Bucket. È ancora più possibile?


1
Quale nuovo formato? Stai usando Mercurial o Git? Usa i client Mercurial o Git per aggiornare a una versione precedente.
Erno,

Risposte:


369

Comprendo che desideri scaricare una versione precedente tramite l'interfaccia Web di BitBucket senza utilizzare un client Mercurial / Git.

Controlla questa domanda correlata . Sui commenti, qualcuno dice che non c'è modo di farlo. Fortunatamente, non è del tutto vero.

Navigando sulle pagine del progetto BitBucket, non ho trovato alcun link per scaricare una versione arbitraria. Esistono collegamenti per scaricare tag specifici, nel formato:

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

Ma modificando un po 'l'URL sopra, cambiando il nome del tag con l'hash di commit, come:

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

Puoi effettivamente scaricare una versione specifica.

Come menzionato da Rakka Rage in un commento, sostituisce anche .tar.gzcon le .zipopere.


Posso usare il link sopra nel terminale Android Studio per clonare un commit? In tal caso, potresti fornire il codice terminale di base?
tccpg288,

1
Vorrei che lo mostrassero sul loro sito Web, quindi era ovvio.
lancia

1
Perché non è rilevante? L'ho appena provato di nuovo (06-08-2018) e funziona ancora. Forse è un problema con i server BitBucket "in casa"? Ho provato questo sul server bitbucket.org .
Rudy Matela,

dovrebbe essere api.bitbucket.orgora
Alexander Mills,

1
Posso confermare che funziona ancora solo conbitbucket.org
Vely

202

Stavo cercando di capire se è possibile sfogliare il codice di un commit precedente come puoi su GitHub e mi ha portato qui. Ho usato le informazioni che ho trovato qui, e dopo aver armeggiato con gli URL, ho effettivamente trovato un modo per sfogliare anche il codice dei vecchi commit.

Durante la navigazione del codice, l'URL è simile al seguente:

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

e aggiungendo un hash di commit alla fine in questo modo:

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

Puoi sfogliare il codice al punto di quel commit. Non capisco perché non esiste una casella a discesa per la scelta diretta di un commit, la funzione è già lì. Strano.


2
Questo è esattamente ciò di cui avevo bisogno. Manca un collegamento diretto dal sito di Bitbucket a questo URL.
Johnny Oshika,

Purtroppo, questo non funziona. O meglio funziona, ma parzialmente. Ad esempio puoi navigare https://bitbucket.org/lyro/evil/src/8cbfd51ma se entri hg clone https://bitbucket.org/lyro/evil/src/8cbfd51, otterrai una revisione casuale, forse l'ultima.
Ciao Angelo

Ho trovato una soluzione alternativahg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
Hi-Angel,

3
Per coloro a cui non piace copiare + incollare: cerca un certo commit, l'URL sarà qualcosa di simile https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master. Ora, basta cambiare commitsl'URL srce stai sfogliando la fonte completa a questo commit!
Peter,

176

Passo 1

Passo 1


Passo 2

Passo 2


Passaggio 3

Passaggio 3


Passaggio 4

Passaggio 4


Passo finale

Passo finale


2
@ManojG Eccone uno da me. Quindi a quanto pare c'è un modo per arrivare all'intero albero a un certo commit, anche se in modo piuttosto confuso.
Malcolm,

2
ADORO QUESTA RISPOSTA. Nota: puoi anche andare al file e utilizzare il menu a discesa. GRAZIE!
mattdlockyer,

3
Più sorprendente di questa risposta è il fatto che non possiamo farlo con un clic sul pulsante ... alcune cose sono davvero incredibili ....
Nuno Gonçalves,

questo passaggio non ha risolto per me, ciò che ha dato risultati: la risposta di @mattdlockyer, selezionare un file, fare clic sul menu a discesa, selezionare un commit precedente e quindi tornare al collegamento di base repository come l'ultima immagine da oscar post
user2582318

1
Tutto questo funziona ma quando lo scarica, è sempre l'ultimo commit. Sto sbagliando o è così?
Jay Mehta,

29

Nel caso in cui qualcuno sia nella mia barca in cui nessuna di queste risposte ha funzionato esattamente, ecco cosa ho fatto.

Forse il nostro server Bitbucket interno è impostato in modo leggermente diverso rispetto alla maggior parte, ma ecco l'URL che normalmente andrei solo per visualizzare i file nel ramo principale:

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

Se seleziono un ramo diverso dal master dal menu a discesa, ottengo questo:

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

Quindi ho provato a farlo e ha funzionato:

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

Ora posso sfogliare l'intero repository com'era al momento del commit.


6
Questa risposta è l'unica che funziona davvero. Le più popolari sembrano fare riferimento alle versioni precedenti di Bitbucket
Klas Mellbourn,

9

Grandi risposte da un paio d'anni fa. Ora Bitbucket ha reso più semplice.

Contrassegna il commit che desideri scaricare (come indicato nella risposta di Rudy Matela).

Quindi vai su Download e fai clic sulla scheda "Tag" e otterrai più opzioni per il download.

Download di tag


1
Questo era facilmente il modo più semplice di procedere. Per coloro che non sono stati in grado di ottenere problemi con i tag, fai clic su un commit specifico e in alto a destra vedrai la vista sorgente, il ramo, il commit e i tag. Aggiungi il tuo tag lì, quindi vai a scaricarlo.
PGMacDesign

8

Per la cronaca, puoi anche giocare attorno agli URL in questo modo:

Quando sfogli l'ultima fonte, hai qualcosa del tipo: https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master

Basta cambiare l'hash di commit e rimuovere il parametro GET: https://bitbucket.org/my/repo/src/wantedcommithash/my.file

Devo fare +1 su @Hein A. Grønnestad sopra: funziona tutto, chiedendosi davvero perché non ci sia nulla nella GUI per usarlo.



1

È possibile visualizzare l'origine del file fino a un determinato commit aggiungendo ?until=<sha-of-commit>l'URL (dopo il nome del file).


1

So che è troppo tardi, ma con API 2.0 puoi farlo

dalla riga di comando con:

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

o in php con:

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

allora hai la cronologia del tuo file (dal commit più recente al più vecchio):

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

dove values> links> selffornisce il file in questo momento della storia, che è possibile recuperare con curl <link>o file_get_contents(<link>).

Alla fine, dalla riga di comando puoi filtrare con:

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

in php, basta fare un foreachloop sull'array $data.

Nota: se <path_file>ha un /devi convertirlo in %2F.

Vedi il documento qui: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.