Skip to content
Snippets Groups Projects
  1. Jun 28, 2017
  2. Jun 26, 2017
  3. Jun 29, 2017
  4. Jun 27, 2017
    • Pierre-Yves David's avatar
      rebase: backed out changeset cf8ad0e6c0e4 (issue5610) · a5abaa81fad6
      Pierre-Yves David authored
      Having a single transaction for rebase means the whole transaction gets rolled back
      on error. To work around this a small hack has been added to detect merge
      conflict and commit the work done so far before exiting. This hack works because
      there is nothing transaction related going on during the merge phase.
      
      However, if a hook blocks the rebase to create a changeset, it is too late to commit the
      work done in the transaction before the problematic changeset was created. This
      leads to the whole rebase so far being rolled back. Losing merge resolution and
      other work in the process. (note: rebase state will be fully lost too).
      
      Since issue5610 is a pretty serious regression and the next stable release is a
      couple day away, we are taking the backout route until we can figure out
      something better to do.
      a5abaa81fad6
    • Pierre-Yves David's avatar
      rebase: backed out changeset 2519994d25ca · b63351f6a246
      Pierre-Yves David authored
      In the process of fixing issue5610 in 4.2.2, we are trying to backout
      cf8ad0e6c0e4. This changeset is making changes that depend on cf8ad0e6c0e4,
      so we need to back it out first.
      
      Since issue5610 is pretty serious regression and the next stable release is a
      couple of days away, we are taking the backout route until we can figure out
      something better to do.
      b63351f6a246
  5. Jun 25, 2017
    • Jun Wu's avatar
      rebase: clean up rebasestate from active transaction · 2312e70cf78b
      Jun Wu authored
      Previously, rebase assumes the following pattern:
      
          rebase:
              with transaction as tr: # top-level
                  ...
              tr.__close__ writes rebasestate
              unlink('rebasestate')
      
      However it's possible that "rebase" was called inside a transaction:
      
          with transaction as tr1:
              rebase:
                  with transaction as tr2: # not top-level
                      ...
                  tr2.__close__ does not write rebasestate
                  unlink('rebasestate')
          tr1.__close__ writes rebasestate
      
      That leaves a rebasestate on disk incorrectly.
      
      This patch adds "removefilegenerator" to notify transaction code that the
      state file is no longer needed therefore fixes the issue.
      2312e70cf78b
  6. Jun 19, 2017
  7. Jun 18, 2017
  8. Jun 01, 2017
  9. May 28, 2017
  10. May 20, 2017
  11. May 14, 2017
  12. May 18, 2017
  13. Jan 09, 2016
  14. May 09, 2017
    • Durham Goode's avatar
      obsolete: add operation metadata to rebase/amend/histedit obsmarkers · 3546a771e376
      Durham Goode authored
      By recording what operation created the obsmarker, we can show very intuitive
      messages to the user in various UIs. For instance, log output could have
      messages like "Amended as XXX" to show why a commit is old and has an 'x' on it.
      
           @  ac28e3  durham
          /   First commit
         |
         | o  d4afe7 durham
         | |  Second commit
         | |
         | x  8e9a5d (Amended as ac28e3)  durham
         |/   First commit
         |
      3546a771e376
  15. May 18, 2017
  16. Feb 11, 2017
  17. May 11, 2017
    • Martin von Zweigbergk's avatar
      rebase: allow rebase even if some revisions need no rebase (BC) (issue5422) · 78496ac30025
      Martin von Zweigbergk authored
      This allows you to do e.g. "hg rebase -d @ -r 'draft()'" even if some
      drafts are already based off of @. You'd still need to exclude
      obsolete and troubled revisions, though. We will deal with those cases
      later.
      
      Implemented by treating state[rev]==rev as "no need to rebase". I
      considered adding another fake revision number like revdone=-6. That
      would make the code clearer in a few places, but would add extra code
      in other places.
      
      I moved the existing test out of test-rebase-base.t and into a new
      file and added more tests there, since not all are using --base.
      78496ac30025
  18. May 12, 2017
  19. Mar 11, 2017
  20. Apr 30, 2017
    • Katsunori FUJIWARA's avatar
      help: apply bulk fixes for indentation and literal blocking issues · 091d6b9157da
      Katsunori FUJIWARA authored
      There are some paragraphs, which aren't rendered in online help as
      expected because of indentation and literal blocking issues.
      
      - hgext/rebase.py
      
        - paragraph before example code ends with ":", which treats
          subsequent indented paragraphs as normal block
      
          => replace ":" with "::" to treat subsequent paragraphs as literal block
      
      - help/pager.txt
      
        - paragraph before a list of --pager option values ends with "::",
          which treats subsequent indented paragraphs as literal block
      
          => replace "::" with ":" to treat subsequent paragraphs as normal block
      
        - the second line of explanation for no/off --pager option value is
          indented incorrectly (this also causes failure of "make" in doc)
      
          => indent correctly
      
      - help/revisions.txt
      
        - explanation following example code of "[revsetalias]" section
          isn't suitable for literal block
      
          => un-indent explanation paragraph to treat it as normal block
      
        - indentation of "For example" before example of tag() revset
          predicate matching is meaningless
      
        - descriptive text for tag() revset predicate matching isn't
          suitable for literal block
      
          => un-indent concatenated two paragraphs to treat them as normal block
      091d6b9157da
    • Katsunori FUJIWARA's avatar
      rebase: fix incorrect configuration example · 1c911adebf48
      Katsunori FUJIWARA authored
      This configuration example doesn't make rebase require a destination,
      even though help document wants to show such example.
      1c911adebf48
  21. Mar 30, 2017
  22. Mar 24, 2017
  23. Mar 12, 2017
    • Durham Goode's avatar
      rebase: move state serialization to use unfiltered repo · 91ddb33deea5
      Durham Goode authored
      Now that rebasestate is serialized as part of the transaction, the repo state it
      sees is the version at the end of the transaction, which may have hidden nodes.
      Therefore, it's possible parts of the rebase commit set are no longer visible by
      the time the transaction is closing, which causes a filtered revision error in
      this code. I don't think state serialization should be blocked from accessing
      commits it knows exist, especially if all it's trying to do is get the hex of
      them, so let's use an unfiltered repo here.
      
      Unfortunately, the only known repro is with the fbamend Facebook extension, so
      I'm not sure how to repro it in core Mercurial for a test.
      91ddb33deea5
  24. Mar 22, 2017
    • Martin von Zweigbergk's avatar
      plain: ignore [commands] config · 37a0ad669051
      Martin von Zweigbergk authored
      We only have commands.{update,rebase}.requiredest so far. We should
      clearly ignore those two if HGPLAIN is in effect, and it seems like we
      should ignore any future config that will be added in [commands] since
      that is about changing the behavior of commands.
      
      Thanks to Yuya for suggesting to centralize the code in ui.py.
      
      While at it, remove the unnecessary False values passed to
      ui.configbool() for the aforementioned config options.
      37a0ad669051
  25. Mar 15, 2017
    • Ryan McElroy's avatar
      rebase: add flag to require destination · 13dc00c233b7
      Ryan McElroy authored
      In some mercurial workflows, the default destination for rebase does not
      always work well and can lead to confusing behavior. With this flag enabled,
      every rebase command will require passing an explicit destination, eliminating
      this confusion.
      13dc00c233b7
  26. Mar 19, 2017
    • Durham Goode's avatar
      rebase: use one dirstateguard for entire rebase · 2519994d25ca
      Durham Goode authored
      Recently we switched rebases to run the entire rebase inside a single
      transaction, which dramatically improved the speed of rebases in repos with
      large working copies. Let's also move the dirstate into a single dirstateguard
      to get the same benefits. This let's us avoid serializing the dirstate after
      each commit.
      
      In a large repo, rebasing 27 commits is sped up by about 20%.
      
      I believe the test changes are because us touching the dirstate gave the
      transaction something to actually rollback.
      2519994d25ca
  27. Mar 16, 2017
  28. Mar 15, 2017
  29. Mar 13, 2017
  30. Mar 12, 2017
    • kiilerix's avatar
      rebase: allow rebasing children of wd to wd if a new branch has been set (BC) · 65d93d712777
      kiilerix authored
      The named branch of the leaf changeset can be changed by updating to it,
      setting the branch, and amending.
      
      But previously, there was no good way to *just* change the branch of several
      linear changes. If rebasing changes with another parent to '.', it would pick
      up a pending branch change up. But when rebasing changes that have the same
      parent, it would fail with 'nothing to rebase', even when the branch name was
      set differently.
      
      To fix this, allow rebasing to same parent when a branch has been set.
      65d93d712777
  31. Mar 11, 2017
  32. Mar 08, 2017
    • Durham Goode's avatar
      rebase: move actual rebase into a single transaction · cf8ad0e6c0e4
      Durham Goode authored
      Previously, rebasing would open several transaction over the course of rebasing
      several commits. Opening a transaction can have notable overhead (like copying
      the dirstate) which can add up when rebasing many commits.
      
      This patch adds a single large transaction around the actual commit rebase
      operation, with a catch for intervention which serializes the current state if
      we need to drop back to the terminal for user intervention. Amazingly, almost
      all the tests seem to pass.
      
      On large repos with large working copies, this can speed up rebasing 7 commits
      by 25%. I'd expect the percentage to be a bit larger for rebasing even more
      commits.
      
      There are minor test changes because we're rolling back the entire transaction
      during unexpected exceptions instead of just stopping mid-rebase, so there's no
      more backup bundle. It also leave an unknown file in the working copy, since our
      clean up 'hg update' doesn't delete unknown files.
      cf8ad0e6c0e4
Loading