Enumera todas las confirmaciones desde la última versión cuando la label apunta a una confirmación en otra twig

Necesito enumerar todas las confirmaciones hechas a la twig master desde mi último lanzamiento. Tengo que implementar esta funcionalidad usando pygit2 . Pero la situación es un poco diferente aquí.

El lanzamiento se realiza en la twig master utilizando una tag en una confirmación a other twig. El enfoque ingenuo sería encontrar el sha de la última tagged commit y avanzar por el historial desde HEAD hasta este sha . Pero esta tagged commit no se realiza en la twig master en mi caso, sino en other twig. Curiosamente, el siguiente da el resultado correcto cuando se ejecuta sobre la twig master :

 $ git log sometag..HEAD --oneline 

Aquí, una sometag señala el compromiso hecho en la other twig. Entonces, quiero saber cómo podría implementar esto programáticamente, si tengo una list de todas las confirmaciones hechas en la twig master .

Una solución que me viene a la mente es encontrar la timestamp de timestamp del tagged commit y filtrar mi list de compromisos. ¿Cómo git log está haciendo esto? ¿ git log idea?

Creo que esto te ayudará: primero, usamos Repository.walk() para get un Walker (iterador de compromiso), y luego lo modificamos ( Walker.hide() ) para excluir todas las confirmaciones accesibles desde sometag :

 from pygit2 import Repository from pygit2 import GIT_SORT_TIME repo = Repository('.git') start = repo.revparse_single('refs/heads/master') release_tag = repo.revparse_single('refs/tags/sometag') walker = repo.walk(start.id, GIT_SORT_TIME) walker.hide(release_tag.id) for commit in walker: print commit.message