Skip to content
Snippets Groups Projects
  1. Sep 03, 2012
  2. Sep 20, 2012
  3. Sep 03, 2012
    • Pierre-Yves David's avatar
      clfilter: split `revlog.headrevs` C call from python code · e69274f8
      Pierre-Yves David authored
      Make the pure python implementation of headrevs available to derived classes. It
      is important because filtering logic applied by `revlog` derived class won't
      have effect on `index`. We want to be able to bypass this C call to implement
      our own.
      e69274f8
    • Pierre-Yves David's avatar
      clfilter: handle non contiguous iteration in `revlov.headrevs` · d686c687
      Pierre-Yves David authored
      This prepares changelog level filtering.  We can't assume that any revision can
      be heads because filtered revisions need to be excluded.
      
      New algorithm:
      - All revisions now start as "non heads",
      - every revision we iterate over is made candidate head,
      - parents of iterated revisions are definitely not head.
      
      Filtered revisions are never iterated over and never considered as candidate
      head.
      d686c687
  4. Sep 20, 2012
    • Pierre-Yves David's avatar
      clfilter: make the revlog class responsible of all its iteration · 47404794
      Pierre-Yves David authored
      This prepares changelog level filtering. We need the algorithms used in revlog to
      work on a subset of revisions.  To achieve this, the use of explicit range of
      revision is banned. `range` and `xrange` calls are replaced by a `revlog.irevs`
      method. Filtered super class can then overwrite the `irevs` method to filter out
      revision.
      47404794
  5. Sep 03, 2012
    • Pierre-Yves David's avatar
      clfilter: introduce a `hassecret` function · fdd0fc04
      Pierre-Yves David authored
      We can only use copy clone if the cloned repo do not have any secret changeset.
      The current method for that is to run the "secret()" revset on the remote repo.
      But with proper filtering of hidden or unserved revision by the remote this
      revset won't return any revision even if some exist remotely. This changeset
      adds an explicit function to know if a repo have any secret revision or not.
      
      The other option would be to disable filtering for the query but I prefer the
      approach above, lighter both regarding code and performance.
      fdd0fc04
    • Pierre-Yves David's avatar
      filter: `updatebranchcache` during `addchangegroup` instead of after lock · 9dbd5fa6
      Pierre-Yves David authored
      The forced recomputation of the branch cache was introduced by `ee317dbfb9d0`.
      Back there, `addchangegroup` did not handle any lock logic.
      
      Later `ee1ed6afac21` introduced lock logic to `addchangegroup`. Its description
      does not explain why the `updatebranchcache` call is made outside locking. I
      believe that the lock was released there because it fit well with the transaction
      release already in the code.
      
      Finally `926a06f7a353` moved all "unlocked" code of `addchangegroup` to an
      `repo._afterlock` callback.
      
      I do not think that the call to `updatebranchcache()` requires to be done
      outside locking. That may even be a bad idea to do so. Bringing this call back
      in the `addchangegroup` function makes the flow simpler and eases the following
      up changelog level filtering business.
      9dbd5fa6
  6. Aug 02, 2012
  7. Sep 25, 2012
    • Sergey Kishchenko's avatar
      resolve: commit the changes after each item resolve (issue3638) · 28c43957
      Sergey Kishchenko authored
      At the moment the resolve command doesn't save progress during the resolve process. In example if you try to resolve 100 conflicting files and interrupt the process (e.g., you close the external merge tool) after resolving 50 files you'll end up with 100 unresolved conflicts. Saving the progress helps a lot with long going merges. It's easy to achieve same behavior with simple script that calls resolve command for each unresolved file but it makes sense to make such behavior a default
      28c43957
  8. Sep 22, 2012
    • Katsunori FUJIWARA's avatar
      bookmarks: rename arguments/variables for source code readability · 2b6a795f
      Katsunori FUJIWARA authored
      Before this patch, the argument bound to the source repository of
      incoming bookmarks for "bookmarks.diff()" is named as "remote".
      
      But in "hg outgoing" case, this argument is bound to local repository
      object.
      
      In addition to it, "local"/"remote" seem to mean not the direction of
      propagation of bookmarks, but just the location of cooperative
      repositories.
      
      To indicate the direction of propagation of bookmarks clearly on the
      source code, this patch uses "d(st)" and "s(rc)" combination instead
      of "l(ocal)" and "r(emote)" one.
      
        - "repo" and "remote" arguments are renamed to "dst" and "src"
        - "lmarks" and "rmarks" variables are renamed to "dmarsk" and "smarks"
      2b6a795f
  9. Sep 27, 2012
    • Pierre-Yves David's avatar
      histedit: move `continue` logic into a dedicated function · 5b6c8f2f
      Pierre-Yves David authored
      When histedit "continue", there is several complicated logic to apply in order to
      detect intermediate changeset and concluded pending operation.
      
      This changeset extract this logic in a dedicated function to lighten the main
      one. No alteration to the logic is done.
      5b6c8f2f
  10. Sep 26, 2012
  11. Sep 27, 2012
  12. Jul 31, 2012
    • Matt Harbison's avatar
      largefiles: enable islfilesrepo() prior to a commit (issue3541) · ae57920a
      Matt Harbison authored
      Previously, even if a file was added with --large, 'hg addremove' or 'hg ci -A'
      would add all files (including the previously added large files) as normal
      files.  Only after a commit where a file was added with --large would subsequent
      adds or 'ci -A' take into account the minsize or the pattern configuration.
      This change more closely follows the help for largefiles, which mentions that
      'add --large' is required to enable the configuration, but doesn't mention the
      previously required commit.
      
      Also, if 'hg add --large' was performed and then 'hg forget <file>' (both before
      a largefile enabling commit), the forget command would error out saying
      '.hglf/<file> not tracked'.  This is also fixed.
      
      This reports that a repo is largefiles enabled as soon as a file is added with
      --large, which enables 'add', 'addremove' and 'ci -A' to honor the config
      settings before the first commit.  Note that prior to the next commit, if all
      largefiles are forgotten, the repository goes back to reporting the repo as not
      largefiles enabled.
      
      It makes no sense to handle this by adding a --large option to 'addremove',
      because then it would also be needed for 'commit', but only when '-A' is
      specified.  While this gets around the awkwardness of having to add a largefile,
      then commit it, and then addremove the other files when importing an existing
      codebase (and preserving that extra commit in permanent history), it does still
      require finding and manually adding one of the files as --large.  Therefore it
      is probably desirable to have a --large option for init as well.
      ae57920a
    • Matt Harbison's avatar
      largefiles: handle commit -A properly, after a --large commit (issue3542) · a02c1ffd
      Matt Harbison authored
      Previous to this, 'commit -A' would add as normal files, files that were already
      committed as largefiles, resulting in files being listed twice by 'status -A'.
      It also missed when (only) a largefile was deleted, even though status reported
      it as '!'.  This also has the side effect of properly reporting the state of the
      affected largefiles in the post commit hook after a remove that also affected a
      normal file (the largefiles used to be 'R', now are properly absent).
      
      Since scmutil.addremove() is called both by the ui command (after some trivial
      argument validation) and during the commit process when -A is specified, it
      seems like a more appropriate method to wrap than the addremove command.
      
      Currently, a repo is only enabled to use largefiles after an add that explicitly
      identifies some file as large, and a subsequent commit.  Therefore, this patch
      only changes behavior after such a largefile enabling commit.
      
      Note that in the test, if the final commit had a '-v', 'removing large8' would
      be printed twice.  Both of these originate in removelargefiles().  The first
      print is in verbose mode after traversing remove + forget, the second is because
      the '_isaddremove' attr is set and 'after' is not.
      a02c1ffd
  13. Sep 25, 2012
  14. Sep 14, 2012
  15. Aug 30, 2012
  16. Aug 13, 2012
    • Katsunori FUJIWARA's avatar
      doc: add the tool to check section marks in help documents · 07f1ac17
      Katsunori FUJIWARA authored
      This patch adds "doc/check-seclevel.py" which checks below in help
      documents:
      
        - whether unknown or unavailable section marks are used or not
        - whether appropriate section mark is used at sub-sectioning
      
      It should be invoked in "doc" directory.
      
      It checks all help documents of Mercurial (topics, commands,
      extensions), if no file is specified by --file option.
      
      With --file option, it checks contents of the specified file as help
      document, for self testing purpose: -t/-c/-e/-C are used to specify
      what kind of help document contents of the specified file is.
      
      This checking is related to changeset 979b107eaea2.
      07f1ac17
  17. Sep 21, 2012
    • Pierre-Yves David's avatar
      histedit: replaces patching logic by merges · d34ba499
      Pierre-Yves David authored
      The old and fragile patching logic is replaced by smart merges (as rebase and
      graft do). This should prevents some conflicts and smoother human resolution.
      
      For this purpose the "foldchanges" function is renamed to "applychanges" and
      handle a single revision only.
      d34ba499
    • Pierre-Yves David's avatar
      histedit-test: ensure that non commute test will never commute · d44731a3
      Pierre-Yves David authored
      The previous version would commute if using merge algorithm (to be accurate,
      merge will cleanly prompt the user during the merge).
      
      The new version create and initial commit with some content for all involved
      files en ensure all changes are a content changes of the first lines. This lead
      to guaranteed conflict when commuted.
      d44731a3
    • Pierre-Yves David's avatar
      histedit: display action being processed in debug mode · 4721fc93
      Pierre-Yves David authored
      This is very useful when debugging histedit.
      4721fc93
    • Pierre-Yves David's avatar
      histedit: fold in memory · 9ae073f1
      Pierre-Yves David authored
      Update the folding code to works in memory instead of applying patches on the
      working directory. This is cleaner, faster and prepare the removal of the whole
      patching logic.
      
      This new collapse function will probably move into core sooner or later. A lot
      of other rewriting operation may benefit from it.
      9ae073f1
  18. Sep 20, 2012
  19. Sep 21, 2012
  20. Sep 20, 2012
  21. Sep 24, 2012
Loading