diff --git a/reviewboard/scmtools/core.py b/reviewboard/scmtools/core.py
index 2fe0861970fe192093800ed1a2df7d7fc303aa29..bc69d0a24ccf47211a168c64de14fa2008e85e9e 100644
--- a/reviewboard/scmtools/core.py
+++ b/reviewboard/scmtools/core.py
@@ -22,7 +22,7 @@ from reviewboard.ssh import utils as sshutils
 from reviewboard.ssh.errors import SSHAuthenticationError
 
 
-class ChangeSet:
+class ChangeSet(object):
     def __init__(self):
         self.changenum = None
         self.summary = ""
@@ -64,6 +64,10 @@ class Branch(object):
                 self.commit == other.commit and
                 self.default == other.default)
 
+    def __repr__(self):
+        return ('<Branch %s (commit=%s: default=%r)>'
+                % (self.name, self.commit, self.default))
+
 
 class Commit(object):
     def __init__(self, author_name='', id='', date='', message='', parent='',
@@ -86,6 +90,10 @@ class Commit(object):
                 self.message == other.message and
                 self.parent == other.parent)
 
+    def __repr__(self):
+        return ('<Commit %r (author=%s; date=%s; parent=%r)>'
+                % (self.id, self.author_name, self.date, self.parent))
+
     def split_message(self):
         """Get a split version of the commit message.
 
