Identify sources by content hash

Signed-off-by: Michael Buesch <m@bues.ch>