Characterizing and identifying reverted commits