changeset 25368:ae38370fe282

pull: document the race condition with bookmark name It seems valuable to document this in-place to help the next poor soul looking at this code to understand what kind of beast he is currently facing.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 28 May 2015 14:01:53 -0700
parents d0f1d8b4de57
children 02defdb1b628
files mercurial/commands.py
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Thu May 28 13:55:03 2015 -0700
+++ b/mercurial/commands.py	Thu May 28 14:01:53 2015 -0700
@@ -5123,6 +5123,10 @@
         if opts.get('bookmark'):
             if not revs:
                 revs = []
+            # The list of bookmark used here is not the one used to actually
+            # update the bookmark name. This can result in the revision pulled
+            # not ending up with the name of the bookmark because of a race
+            # condition on the server. (See issue 4689 for details)
             remotebookmarks = other.listkeys('bookmarks')
             for b in opts['bookmark']:
                 if b not in remotebookmarks:
@@ -5131,6 +5135,9 @@
 
         if revs:
             try:
+                # When 'rev' is a bookmark name, we cannot guarantee that it
+                # will be updated with that name because of a race condition
+                # server side. (See issue 4689 for details)
                 revs = [other.lookup(rev) for rev in revs]
             except error.CapabilityError:
                 err = _("other repository doesn't support revision lookup, "