Commits

Augie Fackler  committed d85c98f

remotebranches: avoid infinite recursion if a remote branch hash is missing

Includes a test.

  • Participants
  • Parent commits c700953

Comments (0)

Files changed (3)

File hg_remotebranches.py

                         line = line.strip()
                         if line:
                             hash, name = line.split(' ', 1)
-                            remotebranches[name] = olookup(hash)
+                            # look up the hash in the changelog directly
+                            # to avoid infinite recursion if the hash is bogus
+                            n = self.changelog._match(hash)
+                            if n:
+                                remotebranches[name] = n
                 return remotebranches
 
             def lookup(self, key):

File tests/test-remotebranches

 echo
 echo % graph shows tags for the branch heads of each path
 hg log --graph
+
+echo
+echo % make sure bogus revisions in .hg/remotebranches do not break hg
+echo deadbeefdeadbeefdeadbeefdeadbeefdeadbeef default/default > .hg/remotebranches
+hg parents

File tests/test-remotebranches.out

    date:        Thu Jan 01 00:00:00 1970 +0000
    summary:     add a
 
+
+% make sure bogus revisions in .hg/remotebranches do not break hg
+changeset:   6:ce61ec32ee23
+tag:         tip
+parent:      5:6d6442577283
+parent:      4:8948da77173b
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     merging stable
+