Skip to content
Snippets Groups Projects
  1. Dec 19, 2017
    • Matt Harbison's avatar
      lfs: add note messages indicating what store holds the lfs blob · 02f54a1ec9eb
      Matt Harbison authored
      The following corruption related patches were written prior to adding the user
      level cache, and it took awhile to track down why the tests changed.  (It
      generally made things more resilient.)  But I think this will be useful to the
      end user as well.  I didn't make it --debug level, because there can be a ton of
      info coming out of clone/push/pull --debug.  The pointers are sorted for test
      stability.
      
      I opted for ui.note() instead of checking ui.verbose and then using ui.write()
      for convenience, but I see most of this extension does the latter.  I have no
      idea what the preferred form is.
      02f54a1ec9eb
  2. Dec 21, 2017
  3. Dec 19, 2017
  4. Dec 21, 2017
    • Anton Shestakov's avatar
      paper: minor adjustments to table styles · 6915f6a40283
      Anton Shestakov authored
      Adding a bit of padding to table columns on e.g. /log means content and headers
      are better aligned: headers already have this padding.
      
      Right margin is removed from #changesetEntry th because elements with display:
      table-cell (such as <th>) ignore margins anyway.
      6915f6a40283
  5. Dec 20, 2017
  6. Dec 21, 2017
  7. Dec 20, 2017
    • Jun Wu's avatar
      commandserver: unblock SIGCHLD · 3a119a423953
      Jun Wu authored
      This enables the SIGCHLD handler to work properly if some buggy program
      started chg server with SIGCHLD blocked.
      
      A test of this probably requires C code, but we don't have such kind of
      tests already. Since this is a simple and clear fix, I'm leaving it as
      "untested" but I did a manual test and there were no longer zombie workers.
      
      Differential Revision: https://phab.mercurial-scm.org/D1737
      3a119a423953
    • Jun Wu's avatar
      osutil: add a function to unblock signals · 8652ab4046e4
      Jun Wu authored
      Signals could be blocked by something like:
      
        #include <unistd.h>
        #include <signal.h>
        int main(int argc, char * const argv[]) {
          sigset_t set;
          sigfillset(&set);
          sigprocmask(SIG_BLOCK, &set, NULL);
          execv("/bin/hg", argv);
          return 0;
        }
      
      One of the problems is if SIGCHLD is blocked, chgserver would not reap
      zombie workers since it depends on SIGCHLD handler entirely.
      
      While it's the parent process to blame but it seems a good idea to just
      unblock the signal from hg. FWIW git does that for SIGPIPE already [1].
      
      Unfortunately Python 2 does not reset or provide APIs to change signal
      masks. Therefore let's add one in osutil. Note: Python 3.3 introduced
      `signal.pthread_sigmask` which solves the problem.
      
      `sigprocmask` is part of POSIX [2] so there is no feature testing in
      `setup.py`.
      
      [1]: https://github.com/git/git/commit/7559a1be8a0afb10df41d25e4cf4c5285a5faef1
      [2]: http://pubs.opengroup.org/onlinepubs/7908799/xsh/sigprocmask.html
      
      Differential Revision: https://phab.mercurial-scm.org/D1736
      8652ab4046e4
  8. Dec 18, 2017
  9. Dec 19, 2017
    • Yuya Nishihara's avatar
      log: make "slowpath" condition slightly more readable · 5bec509dc1ff
      Yuya Nishihara authored
      Before 8e0e334bad42 and 6c76c42a5893, the condition was "anypats() or
      (files() and --removed)". This can be read as "<match is actually slow>
      or <walk files including removed revs>". So "not always()" (i.e. walk
      file revs) seems more appropriate here.
      
      The logic should be unchanged:
      
        not anypats() => always() or isexact() or prefix()
        isexact()     => not always()
        prefix()      => not always()
      5bec509dc1ff
  10. Dec 18, 2017
  11. Jun 25, 2017
    • Jun Wu's avatar
      split: new extension to split changesets · 02ea370c2baa
      Jun Wu authored
      This diff introduces an experimental split extension to split changesets.
      
      The implementation is largely inspired by Laurent Charignon's implementation
      for mutable-history (changeset 9603aa1ecdfd54b0d86e262318a72e0a2ffeb6cc [1])
      
      This version contains various improvements:
      
        - Rebase by default.
          This is more friendly for new users. Split won't lead to merge conflicts
          so a rebase won't give the user more trouble.
          This has been on by default at Facebook for months now and seems to be a
          good UX improvement.
          The rebase skips obsoleted or orphaned changesets, which can avoid
          issues like allowdivergence, merge conflicts, etc. This is more flexible
          because the user can decide what to do next (see the last test case in
          test-split.t)
      
        - Remove "Done split? [y/n]" prompt.
          That could be detected by checking `repo.status()` instead.
      
        - Works with obsstore disabled.
          Without obsstore, split uses strip to clean up old nodes, and it can
          even handle split a non-head changeset with "allowunstable" disabled,
          since it runs a rebase to solve the "unstable" issue in a same
          transaction.
      
        - More friendly editor text.
          Put what has been already split into the editor text so users won't lost
          track about where they are.
      
      [1]: https://bitbucket.org/marmoute/mutable-history/commits/9603aa1ecdfd54b
      
      Differential Revision: https://phab.mercurial-scm.org/D1082
      02ea370c2baa
  12. Dec 19, 2017
  13. Dec 18, 2017
  14. Dec 17, 2017
    • Matt Harbison's avatar
      run-tests: use context managers for file descriptors · e31773898197
      Matt Harbison authored
      I've seen the following error a few times recently when running the tests with
      `yes | ./run-tests.py --local -j9 -i`:
      
      Errored test-add.t: Traceback (most recent call last):
        File "./run-tests.py", line 821, in run
          self.runTest()
        File "./run-tests.py", line 910, in runTest
          if self._result.addOutputMismatch(self, ret, out, self._refout):
        File "./run-tests.py", line 1774, in addOutputMismatch
          rename(test.errpath, test.path)
        File "./run-tests.py", line 571, in rename
          os.remove(src)
      WindowsError: [Error 32] The process cannot access the file because it is being
       used by another process: 'c:\\Users\\Matt\\projects\\hg\\tests\\test-add.t.err'
      
      This change doesn't fix the problem, but it seems like a simple enough
      improvement.
      e31773898197
  15. Dec 13, 2017
    • Matt Harbison's avatar
      run-tests: add substitution patterns for common '\' path output on Windows · 24528dba0e64
      Matt Harbison authored
      The goal is to reduce the amount of hand tuning of new/changed tests that is
      required on Windows.  Since the OS prints the proper paths everywhere else, this
      is limited to Windows.  These are based on the check-code rules that were
      dropped in 5feb782c7a95.
      
      There are some minor tweaks, because those were trying to detect '/' paths
      without a '(glob)' at the end, whereas these detect '\' paths. Also, it looks
      like the 'no changes made to subrepo' one was broke, because the path to the
      subrepo has been getting output but was not in the pattern.  End anchors are
      dropped because '(glob)' is no longer required, but '(feature !)' annotations
      are a possibility.
      
      The 'saved backup bundle' pattern dropped from run-tests.py was simply carrying
      over the first capture group.  The replace() method runs prior to evaluating
      '\1', but it wasn't doing anything because of the 'r' prefix on '\\'.
      
      The 'not recording move' entry is new, because I stumbled upon it searching for
      some of these patterns.  There are probably others.
      24528dba0e64
  16. Nov 27, 2017
  17. Dec 16, 2017
  18. Oct 21, 2017
  19. Dec 14, 2017
  20. Dec 12, 2017
  21. Dec 14, 2017
    • Matt Harbison's avatar
      lfs: add git to the User-Agent header for blob transfers · e7bb5fc4570c
      Matt Harbison authored
      As we were trying to transition off of the non production lfs-test-server for
      further experimenting, one of the problems we ran into was interoperability.  A
      coworker setup gitbucket[1] to act as the blob server, tested with git, and
      passed it off to me.  But push failed with a message saying "abort: LFS server
      returns invalid JSON:", and then proceeded to dump a huge HTML page to the
      screen.  It turns out that it is assuming that git is the only thing that wants
      to do a blob transfer, and everything else is a web browser wanting HTML.
      
      It's only a single data point, but I suspect other things may be doing this too.
      RFC7231 gives an example [2] of listing multiple products in decreasing order of
      significance.  Since the standard provides for this, and since it works with the
      one problematic server I found, I'm just enabling this by default for a better
      UX.
      
      There's nothing significant about the version of git chosen, other than it is
      the current version.
      
      [1] https://github.com/gitbucket/gitbucket/
      [2] https://tools.ietf.org/html/rfc7231#page-46
      e7bb5fc4570c
    • Hollis Blanchard's avatar
      outgoing: respect ":pushurl" paths (issue5365) · 0ebd94ac56d1
      Hollis Blanchard authored
      Make 'hg outgoing' respect "paths.default:pushurl" in addition to
      "paths.default-push".
      
      'hg outgoing' has always meant "what will happen if I run 'hg push'?" and it's
      still documented that way:
      
          Show changesets not found in the specified destination repository or the
          default push location. These are the changesets that would be pushed if a
          push was requested.
      
      If the user uses the now-deprecated "paths.default-push" path, it continues to
      work that way. However, as described at
      https://bz.mercurial-scm.org/show_bug.cgi?id=5365, it doesn't behave the same
      with "paths.default:pushurl".
      
      Why does it matter? Similar to the bugzilla reporter, I have a read-only mirror
      of a non-Mercurial repository:
      
        upstream -> imported mirror -> user clone
               ^-----------------------/
      
      Users push directly to upstream, and that content is then imported into the
      mirror. However, those repositories are not the same; it's possible that the
      mirroring has either broken completely, or an import process is running and not
      yet complete. In those cases, 'hg outgoing' will list changesets that have
      already been pushed.
      
      Mozilla's desired behavior described in bug 5365 can be accomplished through
      other means (e.g. 'hg outgoing default'), preserving the consistency and
      meaning of 'hg outgoing'.
      0ebd94ac56d1
  22. Dec 15, 2017
  23. Dec 14, 2017
    • Kostia Balytskyi's avatar
      sshpeer: allow for additional environment passing to ssh exe · 31d21309635b
      Kostia Balytskyi authored
      We already have the ability to customize the ssh command line arguments, let's
      add the ability to customize its environment as well.
      
      Example use-case is ssh.exe from Git on Windows. If `HOME` enviroment variable
      is present and has some non-empty value, ssh.exe will try to access that
      location for some stuff (for example, it seems for resolving `~` in
      `.ssh/config`). Git for Windows seems to sometimess set this variable to the
      value of `/home/username` which probably works under Git Bash, but does not
      work in a native `cmd.exe` or `powershell`. Whatever the root cause, setting
      `HOME` to be an empty string heals things. Therefore, some distributors
      might want to set `sshenv.HOME=` in the configuration (seems less intrusive
      that forcing everyone to tweak their env).
      
      Test Plan:
      - rt
      
      Differential Revision: https://phab.mercurial-scm.org/D1683
      31d21309635b
    • Martin von Zweigbergk's avatar
      unamend: allow unamending if allowunstable is set · f01101100043
      Martin von Zweigbergk authored
      I don't see why unamend should be disallowed when allowunstable is
      set. By switching to rewriteutil.precheck() we fix that and get more
      consistent error messages (and some additional ones).
      
      Differential Revision: https://phab.mercurial-scm.org/D1682
      f01101100043
  24. Dec 13, 2017
Loading