Skip to content
Snippets Groups Projects
  1. Mar 22, 2014
    • Katsunori FUJIWARA's avatar
      localrepo: omit ".hgsubstate" also from "added" files · ca5dd216cb62
      Katsunori FUJIWARA authored
      Before this patch, "localrepository.commit()" omits ".hgsubstate" from
      "modified" (changes[0]) and "removed" (changes[2]) file list before
      checking subrepositories, but leaves one in "added" (changes[1]) as it
      is.
      
      Then, "localrepository.commit()" adds ".hgsubstate" into "modified" or
      "removed" list forcibly, according to subrepository statuses.
      
      If "added" contains ".hgsubstate", the committed context will contain
      two ".hgsubstate" in its "files": one from "added" (not omitted one),
      and another from "modified" or "removed" (newly added one).
      
      How many times ".hgsubstate" appears in "files" changes node hash,
      even though revision content is same, because node hash calculation
      uses the specified "files" directly (without duplication check or so).
      
      This means that node hash of committed revision changes according to
      existence of ".hgsubstate" in "added" at "localrepository.commit()".
      
      ".hgsubstate" is treated as "added", not only in accidental cases, but
      also in the case of "qpush" for the patch adding ".hgsubstate".
      
      This patch omits ".hgsubstate" also from "added" files before checking
      subrepositories. This patch also omits ".hgsubstate" exclusion in
      "qnew"/"qrefresh" introduced by changeset d666da075b91, because this
      patch makes them meaningless.
      
      "hg parents --template '{files}\n'" newly added to "test-mq-subrepo.t"
      enhances checking unexpected multiple appearances of ".hgsubstate" in
      "files" of created/refreshed MQ revisions.
      ca5dd216cb62
    • Matt Mackall's avatar
      help: allow -k to find debug commands · 3879ac3858ff
      Matt Mackall authored
      3879ac3858ff
  2. Mar 15, 2014
  3. Feb 28, 2014
  4. Mar 18, 2014
    • Mads Kiilerich's avatar
      repo: rephrase the "missing requirement" error message · f8e531a3a77c
      Mads Kiilerich authored
      Unknown requirements will now be reported as:
        abort: repository requires features unknown to this Mercurial: largefiles!
        (see http://mercurial.selenic.com/wiki/MissingRequirement for more information)
      
      Some features of this phrasing:
      * avoid double ':' in abort message
      * make it more clear who requires and knows what
      * don't quote the requirement names - it is not something the user entered or
        need the exact spelling of ... and it is "identifiers" that are unambiguous
        anyway
      * remove double hint by removing "(upgrade Mercurial)" comment
      * don't mention upgrading Mercurial without mentioning enabling the feature -
        instead, just refer to wiki page for both
      * don't just talk about "details", talk about "more information"
      f8e531a3a77c
  5. Mar 21, 2014
  6. Mar 19, 2014
  7. Mar 18, 2014
  8. Mar 20, 2014
  9. Mar 19, 2014
  10. Mar 13, 2014
    • David Soria Parra's avatar
      histedit: select the lowest rev when looking for a root in a revset (bc) · d66862b87ae6
      David Soria Parra authored
      When we specify a revision or a revset we just get the last element from the
      list. For revsets this can lead to unintended effects where you specify a
      revset like only() but instead histedit selects the highest revision in the
      set as root. Therefore we should always use the lowest revision number as
      root.
      d66862b87ae6
  11. Mar 18, 2014
  12. Mar 19, 2014
  13. Mar 18, 2014
    • Pierre-Yves David's avatar
      bundle2: make sure the unbundler refuse non bundle2 stream · 88db3e615319
      Pierre-Yves David authored
      We now make use of the magic string at the beginning of the file.
      88db3e615319
    • Pierre-Yves David's avatar
      bundle2: a very first version of bundle2 unbundler · 520df53ad26a
      Pierre-Yves David authored
      This changeset introduce an unbundler class to match the bundle2 bundler. It is
      currently able to unbundle an empty bundle2 only and will gain more feature at
      the same pace than the bundler.
      
      It also comes with its special extension command in test.
      520df53ad26a
    • Pierre-Yves David's avatar
      bundle2: very first version of a bundle2 bundler · 9c5183cb9bca
      Pierre-Yves David authored
      This changeset is the very first of a long series. It create a new bundle2
      module and add a simple class that generate and empty bundle2 container.
      
      The module is documented with the current state of the implementation. For
      information about the final goal you may want to consult the mercurial wiki
      page:
      
          http://mercurial.selenic.com/wiki/BundleFormat2
      
      The documentation of the module will be updated with later patches adding more and
      more feature to the format.
      
      This patches also introduce a test case. This test case build and use its own
      small extension that use the new bundle2 module. Since the new format is unable
      to do anything right now, we could not use real mercurial code to test it.
      Moreover, some advanced feature of the bundle2 spec will not be used by core
      mercurial at all. So we need to have them tested.
      9c5183cb9bca
  14. Mar 21, 2014
  15. Mar 20, 2014
  16. Mar 19, 2014
  17. Mar 18, 2014
    • Siddharth Agarwal's avatar
      sshpeer: only print out 'running ssh' messages in debug mode (BC) · 8b0e3a8982ea
      Siddharth Agarwal authored
      Previously, if another command was run with --verbose, and for whatever reason
      that invoked sshpeer, we'd get a 'running ssh' message from sshpeer. This extra
      line would interfere with that command's output and cause dumb parsers to
      break.
      
      For example, hg annotate can be run with --verbose to get full usernames. This,
      combined with the third-party remotefilelog extension which can cause ssh
      connections to be created, leads to an extra 'running ssh' line that breaks
      most parsers.
      
      This patch is (BC) because hg pull --verbose will no longer print out exactly
      what ssh command it is running.
      
      No tests are affected by this change.
      8b0e3a8982ea
    • Mads Kiilerich's avatar
      60c175c1e708
  18. Feb 28, 2014
  19. Feb 24, 2014
  20. Mar 19, 2014
    • Mads Kiilerich's avatar
      config: set a 'source' in most cases where config don't come from file but code · 49f2d5644f04
      Mads Kiilerich authored
      Some extensions set configuration settings that showed up in 'hg showconfig
      --debug' with 'none' as source. That was confusing.
      
      Instead, they will now tell which extension they come from.
      
      This change tries to be consistent and specify a source everywhere - also where
      it perhaps is less relevant.
      49f2d5644f04
    • Mads Kiilerich's avatar
      config: don't set source when no source is specified - don't overwrite with '' · d19c9bdbbf35
      Mads Kiilerich authored
      This prevents ui.fixconfig from overwriting the source of paths and it will
      thus show up in showconfig --debug.
      d19c9bdbbf35
    • Mads Kiilerich's avatar
      config: give a useful hint of source for the most common command line settings · f144928dd058
      Mads Kiilerich authored
      'hg showconfig --debug' will instead of:
        none: ui.verbose=False
      give the better hint:
        --verbose: ui.verbose=False
      f144928dd058
    • Mads Kiilerich's avatar
    • Katsunori FUJIWARA's avatar
      mq: omit ".hgsubstate" from qnew/qrefresh target list for consistent node hash · d666da075b91
      Katsunori FUJIWARA authored
      Before this patch, even if specified file patterns and -I/-X options
      cause listing ".hgsubstate" up in the target list, qnew/qrefresh put
      ".hgsubstate" into the target list individually and forcibly.
      
      This changes how many times ".hgsubstate" appear in the target list
      according to run-time conditions, and causes inconsistent node hash,
      even though revision content is same, because node hash calculation
      uses the specified target list directly (without duplication check or
      so).
      
      This patch always omits ".hgsubstate" from qnew/qrefresh target list
      for consistent node hash.
      
      This omitting doesn't miss including ".hgsubstate" changes, because:
      
        - "localrepository.commit()" puts ".hgsubstate" into the target list
          for "commitctx()" forcibly if needed
      
        - "mq.putsubstate2changes()" puts ".hgsubstate" into the target list
          for "patch.diff()" if it is not yet listed up
      d666da075b91
    • Katsunori FUJIWARA's avatar
      qnew: omit meaningless and harmful putting subrepositories into target list · 7f7c8ef31c5d
      Katsunori FUJIWARA authored
      Before this patch, qnew puts updated subrepositories into target list
      forcibly, if any of -I, -X or patterns are specified.
      
      But this is meaningless and harmful, because:
      
        - putting subrepositories into target list doesn't affect the result
          of "localrepository.status()"
      
          "dirstate.status()" invoked via "localrepository.status()" always
          omits subrepositories from the result of it
      
        - any -I/-X opts and empty "pats" causes unexpected failure
      
          when any -I/-X opts are specified, "inclsubs" are always added to
          "pats", even if "pats" is empty.
      
          but this changes meaning of "pats" from "including all to be
          included" to "including only listed subrepositories"
      
          this may exclude ".hgsub" and cause unexpected exception raising
          ("can't commit subrepos without .hgsub" ).
      
        - qnew at other than repository root (with -I, -X or any patterns)
          causes unexpected failure
      
          "scmutil.match()" treats pattern without syntax type as 'relpath'
          type (= one rooted at cwd).
      
          but qnew puts subrepository paths rooted at the repository root,
          and it causes unexpected exception raising ("SUBREPO not under
          root ROOT" in "pathutil.canonpath()"), if "hg qnew" is executed at
          other than repository root with -I, -X or any patterns.
      
      This patch omits meaningless and harmful putting subrepositories into
      target list.
      
      This omitting doesn't miss including updated subrepositories, because
      subrepositories are specified to "scmutil.matchfiles()" directly, to
      get "match" object for "localrepository.commit()".
      7f7c8ef31c5d
Loading