¿Cómo acceder a la fuente completa de la confirmación anterior en BitBucket?

227

No puedo entender ni encontrar la documentación sobre cómo acceder a la fuente de una confirmación anterior en el nuevo formato Bit Bucket. ¿Es esto posible?

Ser Pounce
fuente
1
¿Qué nuevo formato? ¿Estás usando Mercurial o Git? Solo use clientes Mercurial o Git para actualizar a una versión anterior.
Erno

Respuestas:

369

Entiendo que desea descargar una versión anterior a través de la interfaz web de BitBucket sin usar un cliente Mercurial / Git.

Verifique esta pregunta relacionada . En los comentarios, alguien dice que no hay forma de hacerlo. Afortunadamente, eso no es del todo cierto.

Al navegar en las páginas del proyecto BitBucket, no encontré ningún enlace para descargar una versión arbitraria. Hay enlaces para descargar etiquetas específicas, en el formato:

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

Pero ajustando un poco la URL anterior, cambiando el nombre de la etiqueta por el hash de confirmación, como:

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

De hecho, puede descargar una versión específica.

Como lo menciona Rakka Rage en un comentario, también se reemplaza .tar.gzpor .zipobras.

Rudy Matela
fuente
¿Puedo usar el enlace de arriba en el terminal de Android Studio para clonar un commit? Si es así, ¿podría proporcionar el código de terminal básico?
tccpg288
1
Desearía que mostraran esto en su sitio web, así que era obvio.
llega
1
¿Por qué no es relevante? Lo probé nuevamente (2018-08-06) y aún funciona. ¿Quizás sea un problema con los servidores BitBucket "internos"? Probé esto en el servidor bitbucket.org .
Rudy Matela
debería ser api.bitbucket.orgahora
Alexander Mills
1
Puedo confirmar que todavía funciona con solobitbucket.org
Vely
202

Estaba tratando de averiguar si es posible navegar por el código de una confirmación anterior como puedes en GitHub y me trajo aquí. Utilicé la información que encontré aquí, y después de jugar con las URL, en realidad también encontré una manera de buscar el código de las confirmaciones antiguas.

Cuando navega por su código, la URL es algo así como:

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

y agregando un hash de confirmación al final como este:

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

Puede examinar el código en el punto de esa confirmación. No entiendo por qué no hay un cuadro desplegable para elegir una confirmación directamente, la función ya está allí. Extraño.

Hein Andre Grønnestad
fuente
2
Esto es exactamente lo que necesitaba. Falta un enlace directo desde el sitio de Bitbucket a esta URL.
Johnny Oshika
Por desgracia, esto no funciona. O más bien trabajar, pero parcialmente. Por ejemplo, se puede navegar https://bitbucket.org/lyro/evil/src/8cbfd51, pero si se introduce hg clone https://bitbucket.org/lyro/evil/src/8cbfd51, se obtendría alguna revisión al azar, tal vez la última.
Hola Ángel, el
Encontró una solución, eshg clone -r8cbfd51 https://bitbucket.org/lyro/evil/src/
Hola-Ángel
3
Para aquellos a los que no les gusta copiar + pegar: busque un determinado commit, la URL será algo así https://bitbucket.org/user/project/commits/0000000000000000000000000000000000000000?at=master. Ahora, solo cambie commitsla url a srcy está navegando por la fuente completa en este commit.
Peter
176

Paso 1

Paso 1


Paso 2

Paso 2


Paso 3

Paso 3


Paso 4

Paso 4


Último paso

Último paso

Askar
fuente
2
@ManojG Aquí hay uno de mí. Por lo tanto, aparentemente hay una manera de llegar al árbol completo en un determinado compromiso, aunque de una manera bastante confusa.
Malcolm
2
Me encanta esta respuesta. Nota: también puede ir al archivo y usar el menú desplegable. ¡GRACIAS!
mattdlockyer
3
Más sorprendente que esta respuesta es el hecho de que no podemos hacerlo con un clic de botón ... algunas cosas son realmente increíbles ...
Nuno Gonçalves
este paso no se resolvió para mí, lo que dio resultados: la respuesta de @mattdlockyer, seleccione un archivo, haga clic en el menú desplegable, seleccione una confirmación anterior y luego regrese al enlace base del repositorio como la última imagen de la publicación de
Oscar
1
Todo esto funciona, pero cuando lo descarga, siempre es el último commit. ¿Lo estoy haciendo mal o es así?
Jay Mehta
29

En caso de que alguien esté en mi bote donde ninguna de estas respuestas funcionó exactamente, esto es lo que hice.

Quizás nuestro servidor interno de Bitbucket esté configurado de manera un poco diferente a la mayoría, pero aquí está la URL a la que normalmente iría solo para ver los archivos en la rama maestra:

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

Si selecciono una rama diferente a la maestra del menú desplegable, obtengo esto:

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

Así que intenté hacer esto y funcionó:

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

Ahora puedo navegar por todo el repositorio tal como estaba en el momento de esa confirmación.

Brent212
fuente
66
Esta respuesta es la única que realmente funciona. Los más populares parecen referirse a versiones anteriores de Bitbucket
Klas Mellbourn
9

Grandes respuestas de hace un par de años. Ahora Bitbucket lo ha hecho más fácil.

Etiquete el Compromiso que desea descargar (como se menciona en la respuesta de Rudy Matela).

Luego dirígete a Descargas y haz clic en la pestaña "Etiquetas" y obtendrás múltiples opciones para descargar.

Descargas de etiquetas

LMSingh
fuente
1
Este fue fácilmente el camino más sencillo. Para aquellos que no han podido obtener problemas con las etiquetas, haga clic en una confirmación específica y en la parte superior derecha verá la fuente de la vista, la rama, la confirmación y las etiquetas. Agregue su etiqueta allí, luego vaya a descargarla.
PGMacDesign
8

Para el registro, también puede jugar con las URL de esta manera:

Al navegar por la última fuente, tiene algo como: https://bitbucket.org/my/repo/src/latestcommithash/my.file?at=master

Simplemente cambie el hash de confirmación y elimine el parámetro GET: https://bitbucket.org/my/repo/src/wantedcommithash/my.file

Llegué a +1 @Hein A. Grønnestad arriba: todo funciona, realmente me pregunto por qué no hay nada en la GUI para usarlo.

neemzy
fuente
1

Puede ver la fuente del archivo hasta una confirmación particular agregando ?until=<sha-of-commit>en la URL (después del nombre del archivo).

Eugen
fuente
1

Sé que es demasiado tarde, pero con API 2.0 puedes hacer

desde la línea de comando con:

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

o en php con:

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

entonces tiene el historial de su archivo (desde la confirmación más reciente hasta la más antigua):

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

donde values> links> selfproporciona el archivo en el momento de la historia, que se puede recuperar con curl <link>o file_get_contents(<link>).

Eventualmente, desde la línea de comando puede filtrar con:

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

en php, solo haz un foreachbucle en la matriz $data.

Nota: si <path_file>tiene un /tiene que convertirlo %2F.

Vea el documento aquí: https://developer.atlassian.com/bitbucket/api/2/reference/resource/repositories/%7Busername%7D/%7Brepo_slug%7D/filehistory/%7Bnode%7D/%7Bpath%7D

tormec
fuente