diff --git a/rhodecode/lib/vcs/backends/base.py b/rhodecode/lib/vcs/backends/base.py --- a/rhodecode/lib/vcs/backends/base.py +++ b/rhodecode/lib/vcs/backends/base.py @@ -628,7 +628,8 @@ class BaseCommit(object): return u'%s:%s' % (self.idx, self.short_id) def __eq__(self, other): - return self.raw_id == other.raw_id + same_instance = isinstance(other, self.__class__) + return same_instance and self.raw_id == other.raw_id def __json__(self): parents = [] diff --git a/rhodecode/tests/vcs/test_commits.py b/rhodecode/tests/vcs/test_commits.py --- a/rhodecode/tests/vcs/test_commits.py +++ b/rhodecode/tests/vcs/test_commits.py @@ -465,6 +465,19 @@ class TestCommits(BackendTestMixin): with pytest.raises(TypeError): self.repo.get_commits(start_id=1, end_id=2) + def test_commit_equality(self): + commit1 = self.repo.get_commit(self.repo.commit_ids[0]) + commit2 = self.repo.get_commit(self.repo.commit_ids[1]) + + assert commit1 == commit1 + assert commit2 == commit2 + assert commit1 != commit2 + assert commit2 != commit1 + assert commit1 != None + assert None != commit1 + assert 1 != commit1 + assert 'string' != commit1 + @pytest.mark.parametrize("filename, expected", [ ("README.rst", False),