Consulte http://git.or.cz/gitwiki/GitTips , sección "Cómo comparar dos repositorios locales" en "General".
En resumen, está utilizando la variable de entorno GIT_ALTERNATE_OBJECT_DIRECTORIES para tener acceso a la base de datos de objetos del otro repositorio, y está usando git rev-parse con --git-dir
/ GIT_DIR para convertir el nombre simbólico en otro repositorio al identificador SHA-1.
La versión moderna se vería así (suponiendo que se encuentre en 'repo_a'):
GIT_ALTERNATE_OBJECT_DIRECTORIES = .. / repo_b / .git / objects \
git diff $ (git --git-dir = .. / repo_b / .git rev-parse --verify HEAD) HEAD
donde ../repo_b/.git
está la ruta de acceso a la base de datos de objetos en repo_b (sería repo_b.git si fuera un repositorio simple). Por supuesto, puede comparar versiones arbitrarias, no solo HEADs.
Tenga en cuenta que si repo_a y repo_b son el mismo repositorio, podría tener más sentido colocarlos en el mismo repositorio, ya sea usando " git remote add -f ...
" para crear apodos para el repositorio para actualizaciones repetidas, u obedeciendo " git fetch ...
"; como se describe en otras respuestas.