I don't see how test cases would fix this either. The attacker can break the test case just as easily as they can insert a backdoor.
I don't see how test cases would fix this either. The attacker can break the test case just as easily as they can insert a backdoor.
To clarify: You can, e.g., use interactive rebase to remove a commit from a branch. But that creates a new HEAD with a different SHA - this is why rebasing published branches is such a bad thing.
The parent was implying you could change history without anyone noticing. This implies modifying a previous commit whilst keeping the current HEAD the same, which can't be done.
I started to sign all my commits in bzr, hg and git since more than 1 year, and it's very easy to do it: you should try to do it as well
(I disagree with Linus and other people who argue that you should just sign the merge commits, since otherwise you'd be "inflationing"/reducing the value of signatures if you'd sign everything: it would be like only signing the very important messages with gpg, and not doing it for the remaining majority: it's fine if you want to have deniability for your unsigned messages, but that's not what I want for my commits: ideally I'd want all of the changes to be auditable)