When compiling and replicating a git installation elsewhere, I realized that most (but not all) git's binaries were hard links to a common binary. That means that where an installation weighs 17MB, it might end up weighing 250MB. Not nice for a DVCS that claims avoiding bloat.

This happens because few replication utilities keep hard links (rsync has an option for it), and even if it does the target filesystem might not support hard links. So what's left to do ? Actually, it is simple enough: when compiling git, telling it to use symbolic links instead of hard links.

Go look into the Makefile, and replace the following lines ("- line" is replace by "+ line"):
- $(QUIET_BUILT_IN)$(RM) $@ && ln git$X $@
+ $(QUIET_BUILT_IN)$(RM) $@ && ln -s git$X $@
- ln -f '$(DESTDIR_SQ)$(bindir_SQ)/git$X' \
+ ln -sf '$(DESTDIR_SQ)$(bindir_SQ)/git$X' \
- $(foreach p,$(BUILT_INS), $(RM) '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' && ln '$(DESTDIR_SQ)$(gitexecdir_SQ)/git$X' $(DESTDIR_SQ)$(gitexecdir_SQ)/$p' ;)
+ $(foreach p,$(BUILT_INS), $(RM) '$(DESTDIR_SQ)$(gitexecdir_SQ)/$p' && ln -s 'git$X' $(DESTDIR_SQ)$(gitexecdir_SQ)/$p' ;)

If the makefile show slightly different lines, you get the idea: look for "ln" in the Makefile and add the "-s" option. Now the compilation/installation will produce symbolic links. Note that the last change is a small optimization so as to point to git in the same directory instead of using an absolute link.

So far it works OK, though I am clearly not a Git guru.