Skip to content
Snippets Groups Projects
  1. May 01, 2016
  2. Apr 07, 2016
  3. May 01, 2016
  4. Apr 30, 2016
    • Sean Farley's avatar
      builddeb: use codename in version · 52f71214
      Sean Farley authored
      Apparently, this is needed to allow ppas to be built for multiple distros.
      52f71214
    • Pierre-Yves David's avatar
      rebase: restrict rebase destination to the pulled set (issue5214) · 261c2537
      Pierre-Yves David authored
      Before this patch, `hg pull --rebase` would be a strict sequence of `hg pull`
      followed by `hg rebase` if anything was pulled.
      
      Now that rebase pick his default destination the same way than merge, than
      `hg rebase` step would abort in the case the repo already had multiple anonymous
      heads (because of the ambiguity). (changed in fac3a24be50e)
      
      The intend of the user with `hg pull --rebase` is clearly to rebase on pulled
      content. This used to be (mostly) enforced by the former default destination for
      rebase, "tipmost changeset of the branch" as the tipmost would likely a
      changeset that just got pulled. But this intended was no longer enforced with
      the new defaul destination (unified with merge).
      
      This changeset makes use of the '_destspace' mechanism introduced in the previous
      changeset to enforce this.
      
      This partially fixes issue5214 as no change at all have been made to the new
      handling of the case with bookmark (unified with merge).
      261c2537
    • Pierre-Yves David's avatar
      destutil: add the ability to specify a search space for rebase destination · cf7de4ae
      Pierre-Yves David authored
      In the 'hg pull --rebase', we don't want to pick a rebase destination unrelated
      to the pull, we lay down basic infrastructure to allow such restriction on
      stable (before 3.8 release) in this case. See issue 5214 for details.
      
      Actual usage and test will be in the next patch.
      cf7de4ae
    • Gregory Szorc's avatar
      sslutil: restore old behavior not requiring a hostname argument (issue5210) · 693b856a
      Gregory Szorc authored
      This effectively backs out changeset 1fde84d42f9c.
      
      The http library behind ui.http2=true isn't specifying the hostname.
      It is the day before the expected 3.8 release and we don't want to ship
      a regression.
      
      I'll try to restore this requirement in the 3.9 release cycle as part
      of planned improvements to Mercurial's SSL/TLS interactions.
      693b856a
  5. Apr 28, 2016
    • Matt Mackall's avatar
      tests: test a variety of cache invariants · b962ae0a
      Matt Mackall authored
      We've historically had a problem maintaining the expected invariants
      on our caches, especially when introducing new caches. This tests
      documents the invariants and exercises them across most of our
      existing cache files.
      b962ae0a
    • Matt Mackall's avatar
      repoview: ignore unwritable hidden cache · a4dc5fe7
      Matt Mackall authored
      The atomictemp.close() file attempts to do a rename, which can fail.
      Moving the close inside the exception handler fixes it.
      
      This doesn't fit well with the with: pattern, as it's the finalizer
      that's failing.
      a4dc5fe7
    • Matt Mackall's avatar
      tags: silence hgtagsfnodes reading failures · e3055b46
      Matt Mackall authored
      tryread() doesn't handle "is a directory" errors and presumably
      others. We might not want to globally swallow such tryread errors, so
      we replace with our own try/except handling.
      
      An upcoming test will use directories as a portable stand-in for
      various bizarre circumstances that cache read/write code should be
      robust to.
      e3055b46
    • Matt Mackall's avatar
      tags: silence cache parsing errors · a9dd92c4
      Matt Mackall authored
      Follow our standard STFU cache-handling pattern
      a9dd92c4
  6. May 01, 2016
  7. Apr 27, 2016
  8. Apr 28, 2016
    • Adam Simpkins's avatar
      graft: fix printing of --continue command · 224dd889
      Adam Simpkins authored
      Properly shell quote arguments, to avoid printing commands that won't work when
      run literally.  For example, a date string with timestamp needs to be quoted:
      --date '1456953053 28800'
      224dd889
  9. Apr 29, 2016
  10. Apr 27, 2016
    • Kevin Bullock's avatar
      osx: create a modern package including manpages · db5084d2
      Kevin Bullock authored
      Instead of using bdist_mpkg, we use the modern Apple-provided tools to
      build an OS X Installer package directly. This has several advantages:
      
      * Avoids bdist_mpkg which seems to be barely maintained and is hard to
        use.
      * Creates a single unified .pkg instead of a .mpkg.
      * The package we produce is in the modern, single-file format instead of
        a directory bundle that we have to zip up for download.
      
      In addition, this way of building the package now correctly:
      
      * Installs the manpages, bringing the `make osx`-generated package in
        line with the official Mac packages we publish on the website.
      * Installs files with the correct permissions instead of encoding the
        UID of the user who happened to build the package.
      
      Thanks to Augie for updating the test expectations.
      db5084d2
    • Augie Fackler's avatar
      80f15aa3
  11. Apr 19, 2016
  12. Apr 28, 2016
    • Matt Harbison's avatar
      verify: don't init subrepo when missing one is referenced (issue5128) (API) · 92d37fb3
      Matt Harbison authored
      Initializing a subrepo when one doesn't exist is the right thing to do when the
      parent is being updated, but in few other cases.  Unfortunately, there isn't
      enough context in the subrepo module to distinguish this case.  This same issue
      can be caused with other subrepo aware commands, so there is a general issue
      here beyond the scope of this fix.
      
      A simpler attempt I tried was to add an '_updating' boolean to localrepo, and
      set/clear it around the call to mergemod.update() in hg.updaterepo().  That
      mostly worked, but doesn't handle the case where archive will clone the subrepo
      if it is missing.  (I vaguely recall that there may be other commands that will
      clone if needed like this, but certainly not all do.  It seems both handy, and a
      bit surprising for what should be a read only operation.  It might be nice if
      all commands did this consistently, but we probably need Angel's subrepo caching
      first, to not make a mess of the working directory.)
      
      I originally handled 'Exception' in order to pick up the Aborts raised in
      subrepo.state(), but this turns out to be unnecessary because that is called
      once and cached by ctx.sub() when iterating the subrepos.
      
      It was suggested in the bug discussion to skip looking at the subrepo links
      unless -S is specified.  I don't really like that idea because missing a subrepo
      or (less likely, but worse) a corrupt .hgsubstate is a problem of the parent
      repo when checking out a revision.  The -S option seems like a better fit for
      functionality that would recurse into each subrepo and do a full verification.
      
      Ultimately, the default value for 'allowcreate' should probably be flipped, but
      since the default behavior was to allow creation, this is less risky for now.
      92d37fb3
    • Gregory Szorc's avatar
      setup: detect Python DLL filename from loaded DLL · ee2e4a2c
      Gregory Szorc authored
      Attempting to build Mercurial from source using MinGW from
      msys2 on Windows produces a hg.exe that attempts to load e.g.
      python27.dll. MinGW prefixes its library name with "lib" and
      adds a period between the major and minor versions. e.g.
      "libpython2.7.dll."
      
      Before this patch, hg.exe files in a MinGW environment would
      either fail to find a Python DLL or would attempt to load a
      non-MinGW DLL, which would summarily explode. Either way,
      hg.exe wouldn't work.
      
      This patch improves the code that determines the Python DLL
      filename to actually use the loaded Python DLL instead of
      inferring it. Basically we take the handle of the loaded DLL
      from sys.dllhandle and call a Windows API to try to resolve
      that handle to a filename.
      ee2e4a2c
  13. Apr 27, 2016
    • Gregory Szorc's avatar
      exewrapper: add .dll to LoadLibrary() argument · 210bb28c
      Gregory Szorc authored
      LoadLibrary() changes behavior depending on whether the argument
      passed to it contains a period. From the MSDN docs:
      
      If no file name extension is specified in the lpFileName parameter,
      the default library extension .dll is appended. However, the file name
      string can include a trailing point character (.) to indicate that the
      module name has no extension. When no path is specified, the function
      searches for loaded modules whose base name matches the base name of
      the module to be loaded. If the name matches, the load succeeds.
      Otherwise, the function searches for the file.
      
      As the subsequent patch will show, some environments on Windows
      define their Python library as e.g. "libpython2.7.dll." The existing
      code would pass "libpython2.7" into LoadLibrary(). It would assume
      "7" was the file extension and look for a "libpython2.dll" to load.
      
      By passing ".dll" into LoadLibrary(), we force it to search for the
      exact basename we want, even if it contains a period.
      210bb28c
    • Martin von Zweigbergk's avatar
      update: correct description of --check option · 602cc9bf
      Martin von Zweigbergk authored
      The old "update across branches if no uncommitted changes" made
      it sound like updating across branches (with no uncommitted changes)
      was allowed only with this option, which was not true. Also, the option
      did not care whether it was linear or across branches. Instead, it
      checked that there were no uncommitted changes. Let's explain what it
      does instead of trying to suggest what happens without it.
      602cc9bf
  14. Apr 26, 2016
    • Adam Simpkins's avatar
      util: fix race in makedirs() · 07be8682
      Adam Simpkins authored
      Update makedirs() to ignore EEXIST in case someone else has already created the
      directory in question.  Previously the ensuredirs() function existed, and was
      nearly identical to makedirs() except that it fixed this race.  Unfortunately
      ensuredirs() was only used in 3 places, and most code uses the racy makedirs()
      function.  This fixes makedirs() to be non-racy, and replaces calls to
      ensuredirs() with makedirs().
      
      In particular, mercurial.scmutil.origpath() used the racy makedirs() code,
      which could cause failures during "hg update" as it tried to create backup
      directories.
      
      This does slightly change the behavior of call sites using ensuredirs():
      previously ensuredirs() would throw EEXIST if the path existed but was a
      regular file instead of a directory.  It did this by explicitly checking
      os.path.isdir() after getting EEXIST.  The makedirs() code did not do this and
      swallowed all EEXIST errors.  I kept the makedirs() behavior, since it seemed
      preferable to avoid the extra stat call in the common case where this directory
      already exists.  If the path does happen to be a file, the caller will almost
      certainly fail with an ENOTDIR error shortly afterwards anyway.  I checked
      the 3 existing call sites of ensuredirs(), and this seems to be the case for
      them.
      07be8682
  15. Apr 24, 2016
  16. Apr 22, 2016
    • Matt Mackall's avatar
      bdiff: further restrain potential quadratic performance · 87d4a6c5
      Matt Mackall authored
      This causes the longest_match search to limit itself to a window of
      30000 lines during search (roughly 1MB), thus avoiding a full O(N*M)
      search that might occur in repetitive structured inputs. For a
      particular class of many MB pathological test cases, this generated
      the following timings:
      
      size    before      after
      10x     1.25s       1.24s
      100x    57s         33s
      1000x   >8400s      400s
      
      The times on the right quickly become much faster and appear more linear.
      
      While windowing means deltas are no longer "optimal", the resulting
      deltas were within a couple percent of expected size. While we've yet
      to have a report of a file with the level of repetition necessary to
      hit this case, some JSON/XML database dump scenario is fairly likely
      to hit it.
      
      This may also slightly improve the average-case performance for deltas
      of large binaries.
      87d4a6c5
    • Matt Mackall's avatar
      bdiff: balance recursion to avoid quadratic behavior (issue4704) · f1ca2496
      Matt Mackall authored
      For highly structured files like JSON or XML dumps with large numbers
      of duplicate lines (eg braces) and isolated matching lines, bdiff
      could find large numbers of equally good spans. Because it prefers
      earlier matches, this would result in pathologically unbalance
      recursion that resulted in quadratic performance.
      
      This patch makes it prefer matches closer to the middle that tend to
      balance recursion. This change improves the speed of a pathological
      test case from 1100s to 9s.
      
      Included is a smaller test that has a roughly 50x safety margin on the
      performance it accepts. It's likely to fail on pure builds because
      difflib also has a recursion-balancing problem.
      f1ca2496
Loading