¿Hay una manera simple de "describir git" un repository remoto?

Quiero ejecutar el siguiente command en un server remoto:

git archive --prefix="$tag/" --remote="ssh://$gitserver/var/git/$repo" "$tag" | tar -xvf- 

El problema es que no sé qué $tag es. Debería ser el resultado de git describe --abbrev=0 en un clon actualizado, pero no sé cómo get esa información sin hacer un clon local del repository. ¿Es posible hacer esto sin hacer un clon local?

La única forma en que podría comenzar a analizar su label, sin agregar demasiado a su disco local, sería:

  • hacer un repository vacío
  • agregue la dirección remota de su repository remoto
  • testing un git fetch --dry-run

Sin embargo, eso cargará los files del package del repository remoto.
No creo que puedas consultar esta información sin download algo .

Lo he hecho para un repository de gitolite, por ejemplo:

 VonC@NETVONC /c/prog/git $ git init g2 Initialized empty Git repository in c:/prog/git/g2/.git/ VonC@NETVONC /c/prog/git $ cd g2 VonC@NETVONC /c/prog/git/g2 (master) $ git remote add origin https://github.com/sitaramc/gitolite.git VonC@NETVONC /c/prog/git/g2 (master) $ git fetch --dry-run remote: Counting objects: 5114, done. remote: Compressing objects: 100% (1919/1919), done. remote: Total 5114 (delta 3548), reused 4664 (delta 3142) Receiving objects: 100% (5114/5114), 1.81 MiB | 722 KiB/s, done. Resolving deltas: 100% (3548/3548), done. From https://github.com/sitaramc/gitolite * [new branch] bp-v2.0.3 -> origin/bp-v2.0.3 * [new branch] fedora-temp -> origin/fedora-temp * [new branch] gh-pages -> origin/gh-pages * [new branch] master -> origin/master * [new branch] pu -> origin/pu * [new branch] temp-br--data-dumper-problem-demo -> origin/temp-br--data-dumper-problem-demo * [new branch] vrs -> origin/vrs * [new tag] v2.1 -> v2.1 From https://github.com/sitaramc/gitolite * [new tag] v0.50 -> v0.50 * [new tag] v0.55 -> v0.55 [...] * [new tag] v2.0rc2 -> v2.0rc2 * [new tag] v2.1 -> v2.1 ^^^^ | --- could be the tag you need 

Como se mencionó anteriormente, los únicos rastros son los files del package, por lo que al less puede limpiarlos fácilmente una vez que tenga su información:

 VonC@NETVONC /c/prog/git/g2 (master) $ l .git/objects/pack/ total 1000 drwxr-xr-x 4 VonC Administ 0 Nov 8 19:45 .. -r--r--r-- 1 VonC Administ 1898987 Nov 8 19:46 pack-c70771bc8a5ecc099ed88da0c3f631f84b34fe9d.pack -r--r--r-- 1 VonC Administ 144264 Nov 8 19:46 pack-c70771bc8a5ecc099ed88da0c3f631f84b34fe9d.idx drwxr-xr-x 2 VonC Administ 4096 Nov 8 19:46 . 
 #!/usr/bin/awk -f BEGIN { FS = "[ /^]+" while ("git ls-remote " ARGV[1] "| sort -Vk2" | getline) { if (!sha) sha = substr($0, 1, 7) tag = $3 } while ("curl -s " ARGV[1] "/releases/tag/" tag | getline) if ($3 ~ "commits") com = $2 printf com ? "%s-%sg%s\n" : "%s\n", tag, com, sha } 

Muestra de salida

 $ git-describe-remote.awk https://github.com/stedolan/jq jq-1.4-148-g89791a0