{"push_id":1089098065,"size":2,"distinct_size":2,"ref":"refs/heads/stable","head":"718e90a06944b2e7c0747418e05c883333a2b08f","before":"6ffa3cf71c4f5b749a87734e5ee97216c3c9fbae","commits":[{"sha":"c68a06376c9683d0c22d6f97e23a7dafc8e112e7","author":{"email":"efd6533d67e4f5f7475374599c7a04a50dab6989@fb.com","name":"Adam Simpkins"},"message":"util: fix race in makedirs()\n\nUpdate makedirs() to ignore EEXIST in case someone else has already created the\ndirectory in question.  Previously the ensuredirs() function existed, and was\nnearly identical to makedirs() except that it fixed this race.  Unfortunately\nensuredirs() was only used in 3 places, and most code uses the racy makedirs()\nfunction.  This fixes makedirs() to be non-racy, and replaces calls to\nensuredirs() with makedirs().\n\nIn particular, mercurial.scmutil.origpath() used the racy makedirs() code,\nwhich could cause failures during \"hg update\" as it tried to create backup\ndirectories.\n\nThis does slightly change the behavior of call sites using ensuredirs():\npreviously ensuredirs() would throw EEXIST if the path existed but was a\nregular file instead of a directory.  It did this by explicitly checking\nos.path.isdir() after getting EEXIST.  The makedirs() code did not do this and\nswallowed all EEXIST errors.  I kept the makedirs() behavior, since it seemed\npreferable to avoid the extra stat call in the common case where this directory\nalready exists.  If the path does happen to be a file, the caller will almost\ncertainly fail with an ENOTDIR error shortly afterwards anyway.  I checked\nthe 3 existing call sites of ensuredirs(), and this seems to be the case for\nthem.\n\n--HG--\nbranch : stable","distinct":true,"url":"https://api.github.com/repos/dscho/hg/commits/c68a06376c9683d0c22d6f97e23a7dafc8e112e7"},{"sha":"718e90a06944b2e7c0747418e05c883333a2b08f","author":{"email":"efe9a872bcf008f3e03ada5660d40f3164417d62@google.com","name":"Martin von Zweigbergk"},"message":"update: correct description of --check option\n\nThe old \"update across branches if no uncommitted changes\" made\nit sound like updating across branches (with no uncommitted changes)\nwas allowed only with this option, which was not true. Also, the option\ndid not care whether it was linear or across branches. Instead, it\nchecked that there were no uncommitted changes. Let's explain what it\ndoes instead of trying to suggest what happens without it.\n\n--HG--\nbranch : stable","distinct":true,"url":"https://api.github.com/repos/dscho/hg/commits/718e90a06944b2e7c0747418e05c883333a2b08f"}]}