¿Cómo se procesa el file .gitignore?

Estoy desarrollando un sistema para imitar la funcionalidad de gitignore. Agregaré ciertas reglas (formatting de patrón de gitignore) a un file y el file se ingresará en un file de script (perl), cuando haya algún compromiso, el file de script analizará las reglas y, si hay alguna regla que coincida, enviará un correo electrónico.

Para esto, necesito saber básicamente dónde encontrar el código fuente de gitignore y cómo se ha implementado en git para que pueda tener una implementación similar en mi proyecto.

Creo que el código para el procesamiento de gitignore está aquí en algún lugar: https://github.com/git/git/blob/master/builtin/check-ignore.c#L68