Is there a particular problem here? common.h includes git-compat-util.h at the top so that it has access to standard libraries and possibly other compat utilities. git-compat-util.h includes common.h at the bottom so that other files don't have to also include common.h as well. Imagine if instead of having git-compat-util include common.h, we had a third file here: git-compat-common.h. It includes common.h and git-compat-util.h and every file includes that instead of git-compat-util.h. Now git-compat-util.h wouldn't include common.h, but this change can be circumvented by including common.h at the bottom.