Comment accéder à la source complète de l'ancien commit dans BitBucket?


227

Je ne peux pas comprendre ou trouver la documentation sur la façon d'accéder à la source d'un ancien commit dans le nouveau format Bit Bucket. Est-ce encore possible?


1
Quel nouveau format? Utilisez-vous Mercurial ou Git? Utilisez simplement les clients Mercurial ou Git pour passer à une ancienne version.
Erno

Réponses:


369

Je comprends que vous souhaitez télécharger une ancienne version via l'interface Web BitBucket sans utiliser de client Mercurial / Git.

Vérifiez cette question connexe . Sur les commentaires, quelqu'un dit qu'il n'y a aucun moyen de le faire. Heureusement, ce n'est pas entièrement vrai.

En naviguant sur les pages du projet BitBucket, je n'ai trouvé aucun lien pour télécharger une version arbitraire. Il existe des liens pour télécharger des balises spécifiques, au format:

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

Mais en ajustant un peu l'URL ci-dessus, en changeant le nom de la balise par le hachage de validation, comme:

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

Vous pouvez en fait télécharger une version spécifique.

Comme mentionné par Rakka Rage dans un commentaire, le remplacement .tar.gzpar des .ziptravaux aussi.


Puis-je utiliser le lien ci-dessus dans le terminal Android Studio pour cloner un commit? Si oui, pourriez-vous fournir le code de terminal de base?
tccpg288

1
J'aimerais qu'ils le montrent sur leur site Web, donc c'était évident.
roule

1
Pourquoi n'est-ce pas pertinent? Je viens de le tester à nouveau (2018-08-06) et cela fonctionne toujours. Peut-être que c'est un problème avec les serveurs BitBucket "en interne"? J'ai testé cela sur le serveur bitbucket.org .
Rudy Matela

devrait être api.bitbucket.orgmaintenant
Alexander Mills

1
Peut confirmer que cela fonctionne toujours avecbitbucket.org
Vely

202

J'essayais de comprendre s'il était possible de parcourir le code d'un commit précédent comme vous le pouvez sur GitHub et cela m'a amené ici. J'ai utilisé les informations que j'ai trouvées ici, et après avoir tripoté les URL, j'ai également trouvé un moyen de parcourir le code des anciens commits.

Lorsque vous parcourez votre code, l'URL ressemble à ceci:

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

et en ajoutant un hachage de validation à la fin comme ceci:

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

Vous pouvez parcourir le code au point de cette validation. Je ne comprends pas pourquoi il n'y a pas de liste déroulante pour choisir directement un commit, la fonctionnalité est déjà là. Étrange.


2
C'est exactement ce dont j'avais besoin. Un lien direct du site de Bitbucket vers cette URL manque cruellement.
Johnny Oshika

Hélas, cela ne fonctionne pas. Ou plutôt travailler, mais partiellement. Par exemple, vous pouvez parcourir, https://bitbucket.org/lyro/evil/src/8cbfd51mais si vous entrez hg clone https://bitbucket.org/lyro/evil/src/8cbfd51, vous obtiendrez une révision aléatoire, peut-être la dernière.
Hi-Angel

Trouvé une solution de contournement, c'esthg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
Hi-Angel

3
Pour ceux qui n'aiment pas copier / coller: accédez à un certain commit, l'url ressemblera à quelque chose https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master. Maintenant, changez simplement commitsl'URL en srcet vous parcourez la source complète à ce commit!
Peter

176

Étape 1

Étape 1


Étape 2

Étape 2


Étape 3

Étape 3


Étape 4

Étape 4


Dernière étape

Dernière étape


2
@ManojG En voici un de moi. Donc, apparemment, il existe un moyen d'accéder à tout l'arbre à un certain commit, bien que d'une manière assez confuse.
Malcolm

2
AIMEZ CETTE RÉPONSE. Remarque: vous pouvez également accéder au fichier et utiliser le menu déroulant. MERCI!
mattdlockyer

3
Plus étonnant que cette réponse est le fait que nous ne pouvons pas le faire sur un clic de bouton ... certaines choses sont vraiment incroyables ....
Nuno Gonçalves

cette étape n'a pas été résolue pour moi, ce qui a donné des résultats: la réponse de @mattdlockyer, sélectionnez un fichier, cliquez sur le menu déroulant, sélectionnez un commit plus ancien, puis revenez au lien de base du
référentiel

1
Tout cela fonctionne mais lors du téléchargement, c'est toujours le dernier commit. Suis-je en train de mal faire ou c'est comme ça
Jay Mehta

29

Juste au cas où quelqu'un se trouve dans mon bateau où aucune de ces réponses n'a fonctionné exactement, voici ce que j'ai fait.

Peut-être que notre serveur Bitbucket interne est configuré un peu différemment de la plupart, mais voici l'URL que j'irais normalement juste pour afficher les fichiers dans la branche principale:

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

Si je sélectionne une branche différente de master dans le menu déroulant, j'obtiens ceci:

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

J'ai donc essayé de faire cela et cela a fonctionné:

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

Maintenant, je peux parcourir l'ensemble du référentiel tel qu'il était au moment de ce commit.


6
Cette réponse est la seule qui fonctionne réellement. Les plus populaires semblent se référer aux anciennes versions de Bitbucket
Klas Mellbourn

9

Excellentes réponses d'il y a quelques années. Maintenant, Bitbucket a rendu la tâche plus facile.

Marquez le commit que vous souhaitez télécharger (comme mentionné dans la réponse de Rudy Matela).

Ensuite, rendez-vous sur Téléchargements et cliquez sur l'onglet "Tags" et vous aurez plusieurs options de téléchargement.

Téléchargements de balises


1
C'était facilement la voie la plus simple à suivre. Pour ceux qui n'ont pas pu obtenir de problèmes de tags, cliquez sur un commit spécifique et en haut à droite, vous verrez la source, la branche, le commit et les tags. Ajoutez-y votre tag, puis allez le télécharger.
PGMacDesign

8

Pour mémoire, vous pouvez également jouer avec les URL de cette façon:

Lorsque vous parcourez la dernière source, vous avez quelque chose comme: https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master

Modifiez simplement le hachage de validation et supprimez le paramètre GET: https://bitbucket.org/my/repo/src/wantedcommithash/my.file

Je suis arrivé à +1 @Hein A. Grønnestad ci-dessus: tout fonctionne, se demandant vraiment pourquoi il n'y a rien dans l'interface graphique pour l'utiliser.


3
  1. Le moyen le plus simple consiste à cliquer sur ce commit et à ajouter une balise à ce commit. J'ai inclus la balise 'last_commit' avec ce commit

  2. Ensuite, accédez aux téléchargements dans le coin gauche de la navigation latérale dans le compartiment de bits. Cliquez sur télécharger dans la partie gauche

  3. Maintenant, cliquez sur les balises dans la barre de navigation et téléchargez le zip depuis l'interface utilisateur. Trouvez votre tag et téléchargez le zip

1

Vous pouvez afficher la source du fichier jusqu'à un commit particulier en ajoutant ?until=<sha-of-commit>l'URL (après le nom du fichier).


1

Je sais qu'il est trop tard, mais avec l'API 2.0, vous pouvez le faire

depuis la ligne de commande avec:

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

ou en php avec:

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

alors vous avez l'historique de votre fichier (du commit le plus récent au plus ancien):

{
"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> selffournit le fichier au moment de l'histoire que vous pouvez le récupérer avec curl <link>ou file_get_contents(<link>).

Finalement, à partir de la ligne de commande, vous pouvez filtrer avec:

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

en php, faites juste une foreachboucle sur le tableau $data.

Remarque: si vous en avez <path_file>un, /vous devez le convertir %2F.

Voir le doc ici: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.