diff -r be0fcbb1c92f -r fc530080013b mercurial/localrepo.py --- a/mercurial/localrepo.py Sun Aug 26 00:27:44 2012 +0200 +++ b/mercurial/localrepo.py Sun Aug 26 00:28:56 2012 +0200 @@ -1992,7 +1992,7 @@ if nr in self: cr = self[nr] cl = self[nl] - if cl in cr.descendants(): + if bookmarks.validdest(self, cr, cl): r = remote.pushkey('bookmarks', k, nr, nl) if r: self.ui.status(_("updating bookmark %s\n") % k)