web-dev-qa-db-fra.com

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

Je déteste devoir poser cette question à la volée, mais pour ma vie, je n'arrive 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? Tellement frustré!

218
Ser Pounce

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

Vérifiez ceci question connexe . Sur les commentaires, quelqu'un dit qu'il n'y a aucun moyen de le faire. Heureusement, ce n'est pas tout à fait 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 tags spécifiques, au format:

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

Mais en modifiant un peu l’URL ci-dessus, en changeant le nom de la balise par le hash de commit, comme ceci:

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

Vous pouvez réellement télécharger une version spécifique.

Comme mentionné par Rakka Rage dans un commentaire, remplacer .tar.gz par .Zip fonctionne également.

361
Rudy Matela

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

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

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

et en ajoutant un hash à la fin, comme ceci:

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

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

193

Étape 1

Step 1


Étape 2

Step 2


Étape 3

Step 3


Étape 4

Step 4


Dernière étape

Final Step

168
Askar

Juste au cas où quelqu'un est dans mon bateau où aucune de ces réponses ne fonctionne exactement, voici ce que j'ai fait.

Notre serveur Bitbucket interne est peut-être configuré un peu différemment, mais voici l'URL à laquelle je voudrais normalement accéder uniquement pour afficher les fichiers de la branche principale:

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

Si je sélectionne une autre branche que master dans le menu déroulant, je reçois ceci:

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

Alors j'ai essayé de faire ça et ça a marché:

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

Maintenant, je peux parcourir tout le rapport tel qu'il était au moment de ce commit.

19
Brent212

Excellentes réponses d'il y a quelques années. Maintenant, Bitbucket a facilité les choses.

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

Rendez-vous ensuite dans Téléchargements et cliquez sur l'onglet "Tags" pour obtenir plusieurs options de téléchargement.

Tag Downloads

10
LMSingh

Pour mémoire, vous pouvez également manipuler les URL de cette manière:

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

Il faut que +1 @Hein A. Grønnestad ci-dessus: tout fonctionne, on se demande vraiment pourquoi il n'y a rien dans l'interface graphique pour l'utiliser.

8
neemzy
  1. Le plus simple est de cliquer sur ce commit et d’ajouter une balise à ce commit. J'ai inclus la balise 'last_commit' avec ce commit

  2. Ensuite, cliquez sur téléchargements dans le coin gauche de la barre de navigation latérale. Cliquez sur télécharger dans le côté gauche

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

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

1
Eugen

Je sais qu'il est trop tard, mais avec 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 plus récent commit 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> self fournit le fichier au moment de l'historique dans lequel 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, il suffit de faire une boucle foreach sur le tableau $data.

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

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

1
tormec