El comando que desea es el git ls-remote
que le permite obtener información sobre repositorios remotos, pero no puede mostrar el historial o listar directorios ni nada de ese nivel: esencialmente solo le permite ver los objetos remotos en un nivel muy alto (puede ver el HEADs y etiquetas actuales, por ejemplo).
La única forma real de hacer lo que quiere (si lo entiendo correctamente) sería usar ssh para ejecutar un comando remoto y devolver los resultados, por ejemplo:
ssh me@otherhost "cd repo && git log -n 10"
Lo que querría sería una funcionalidad encantadora si pudieran agregarla, pero por lo que leí no es muy fácil ya que obtener el historial, etc.necesita mucha información para ser local en git, y en ese momento es posible que haya hecho un git fetch .
git clone
embargo, una cosa que puede hacer es obtener solo una revisión pasando--depth 1
. Esto evita obtener grandes cantidades de historial y sería suficiente para responder preguntas como "¿qué archivos están presentes en la revisiónabcdef1234567890
?"Git es un sistema de control de versiones distribuido , mientras que Subversion es un sistema de control de versiones centralizado (cliente-servidor). Funcionan de manera diferente; acostumbrarse a eso. Lea mi respuesta que explica las consecuencias de esa diferencia para git equivalente a la
svn status -u
pregunta en StackOverflow.Repitiendo un poco: en un sistema de control de versiones centralizado (como CVS o Subversion) casi todos los comandos se procesan en el servidor e involucran a la red. Muy pocos comandos se ejecutan localmente. Tenga en cuenta que para tener un buen rendimiento de "svn status" y "svn diff", Subversion almacena una 'copia prístina' de la versión extraída en el cliente, para no tener que involucrar la transferencia de red para esas operaciones comunes (esto significa que Subversion checkout = 2 x tamaño del directorio de trabajo al menos).
En el sistema de control de versiones distribuido (como Git, Mercurial o Bazaar), donde tiene una copia local (clon) de un repositorio completo, casi todos los comandos se ejecutan en el cliente . Muy pocos comandos requieren una conexión de red a otro repositorio (al servidor).
La cantidad de comandos que puede realizar en el servidor es limitada.
" git archive --remote = <URL> HEAD".
" git clone --depth = 1 <URL>".
fuente
Eche un vistazo a http://git-scm.com/book/en/Git-Internals-Transfer-Protocols para obtener información sobre cómo hacer esto en algunos protocolos de transporte. Tenga en cuenta que esto no funcionará para git estándar sobre SSH.
Para git sobre SSH, un git del lado del servidor actualizado debería permitirle git-archive directamente desde el control remoto, que luego podría, por ejemplo, canalizar a "tar t" para obtener una lista de todos los archivos en una determinada confirmación.
fuente
GitHub es compatible con svn, por lo que puede usar svn ls
BitBucket admite archivos git para que pueda descargar archivos tar y enumerar archivos archivados. No es muy eficiente pero funciona:
fuente
No exactamente, sino una forma de evitarlo.
Utilice la API de desarrollador de GitHub
Al abrir esto, obtendrá las confirmaciones recientes.
https://api.github.com/repos/learningequality/ka-lite/commits
Puede obtener los detalles de confirmación específicos adjuntando el hash de confirmación al final de la URL anterior.
Todos los archivos (necesitas sha para el árbol principal)
https://api.github.com/repos/learningequality/ka-lite/git/trees/7b698a988683b161bdcd48a949b01e2b336b4c01
Espero que esto pueda ayudar.
fuente
Esto probablemente sea considerado sucio por algunos, pero una solución muy práctica en el caso de repositorios github es simplemente hacer un script, por ejemplo, "git-ls":
Hacerlo ejecutable y se puede llegar por supuesto:
chmod a+x git-ls; sudo cp git-ls /usr/local/bin
. Ahora, ejecútelo como desee:También sepa que existe una
git instaweb
utilidad para sus archivos locales. Tener la capacidad de mostrar archivos y tener un servidor como ese, en mi opinión, no destruye ninguna de las características descentralizadas inherentes de git.fuente
curl -s https://github.com/Itseez/opencv | grep js-directory-link | sed 's|.* title="\(.*\)".*|\1|'
si conoce la sucursal remota que desea verificar, puede averiguar la última a través de:
fuente