This instance will be upgraded to Heptapod 0.21.0rc2 on 2021-04-16 at 14:00 UTC+2 (a few minutes of down time)

  1. 22 Oct, 2020 1 commit
  2. 16 Nov, 2020 1 commit
  3. 22 Oct, 2020 1 commit
    • Martin von Zweigbergk's avatar
      errors: add config that lets user get more detailed exit codes · 21733e8c924f
      Martin von Zweigbergk authored
      This adds an experimental config that lets the user get more detailed
      exit codes. For example, there will be a specific error code for
      input/user errors. This is part of
      https://www.mercurial-scm.org/wiki/ErrorCategoriesPlan. I've made the
      config part of tweakdefaults.
      
      I've made the config enabled by default in tests. My reasoning is that
      we want to see that each specific error case gives the right exit code
      and we don't want to duplicate all error cases in the entire test
      suite. It also makes it easy to grep the `.t` files for `[255]` to
      find which cases we have left to fix. The logic for the current exit
      codes is quite simple, so I'm not too worried about regressions
      there. I've added a test case specifically for the "legacy" exit
      codes.
      
      I've set the detailed exit status only for the case of
      `InterventionRequired` and `SystemExit` for now (the cases where we
      currently return something other than 255), just to show that it
      works.
      
      Differential Revision: https://phab.mercurial-scm.org/D9238
      21733e8c924f
  4. 29 Oct, 2020 1 commit
    • Martin von Zweigbergk's avatar
      templates: include all non-branch namespaces in default one-line summary · e9555305c5c6
      Martin von Zweigbergk authored
      I left out branches and custom namespaces on purpose from D9252
      because I figured that people like us (Google) who have custom
      namespaces can also have custom configs. However, I just realized that
      this makes everyone with the topic extension lose the topic they've
      had in rebase output for a long time (ever since someone was nice
      enough to add it in D741). Sorry about the churn.
      
      The more generic template couldn't easily keep the "log.bookmark"
      label in the template because the namespace is called "bookmarks"
      (plural). That means that we can't be compatible with users' existing
      configs for "log.bookmark", so I decided to change the labels to be in
      a brand-new "oneline-summary" namespace.
      
      Differential Revision: https://phab.mercurial-scm.org/D9262
      e9555305c5c6
  5. 27 Oct, 2020 1 commit
  6. 13 Jul, 2020 1 commit
  7. 10 Sep, 2020 1 commit
    • Martin von Zweigbergk's avatar
      graphlog: use '%' only if there are *unresolved* conflicts · 85b03b1e4715
      Martin von Zweigbergk authored
      In 14d0e89520a2, I made graphlog use '%' for the "other" context when
      there's an existing merge state. However, that has confused many
      people because it shows up even if all conflicts are already resolved,
      which makes it show up even after e.g. `hg update -m` with
      automatically resolved conflicts. This patch makes it so we show the
      '%' only if there still unresolved conflicts.
      
      This patch replaces my earlier attempt in D8930, where I decided to
      automatically clear the mergestate if there are no remaining
      conflicts. That had the problem that it wouldn't let the user
      re-resolve the conflicts using `hg resolve`.
      
      Note that an in-progress "proper" merge (one that will result in a
      commit with two parents, such as after `hg merge`) will already have
      two dirstate parents before the commit happens. That means that both
      sides of the merge will get drawn as '@' in the graph, since "is
      dirstate parent" takes precedence over "is involved in merge
      conflict".
      
      Differential Revision: https://phab.mercurial-scm.org/D9007
      85b03b1e4715
  8. 13 Jan, 2020 1 commit
  9. 18 Dec, 2019 1 commit
    • Martin von Zweigbergk's avatar
      rebase: use rewriteutil.precheck() instead of reimplementing it · 71fee4564410
      Martin von Zweigbergk authored
      After this patch, there's still another place in `rebase.py`, in the
      `--stop` code path, that reimplements `rewriteutil.precheck()`. I
      couldn't fix that place because it `rewriteutil.precheck()` checks
      that there is only one dirstate parent, which fails because we have
      two parents at that point. I think it's incorrect that rebase leaves
      the user with two parents during conflicts, but changing that is way
      out of scope for this series.
      
      Differential Revision: https://phab.mercurial-scm.org/D7685
      71fee4564410
  10. 12 Mar, 2020 1 commit
  11. 10 Jan, 2019 1 commit
    • Boris Feld's avatar
      test: explicit a rebase source in test-rebase-collapse.t · c339a01acd9a
      Boris Feld authored
      At the time of the rebase, the current revision is `null` so this rebase
      should fail. However, a current bug in formatspec makes it pass, we fix rebase
      call of the "affected" test to express its actual intent before we fix the
      actual bug in a later changeset.
      c339a01acd9a
  12. 21 Mar, 2018 1 commit
    • Martin von Zweigbergk's avatar
      rebase: store rebase state after each commit · 98663bed146e
      Martin von Zweigbergk authored
      Before this patch, we stored the rebase state early in the processing
      of a node, before we updated the rebase state to indicate that the
      node was processed. This meant that we could redo the working copy
      merge and run into conflicts. However, this only happened in the
      --collapse case if the rebase was interrupted while editing the final
      commit message; in the case earlier interruptions, we would instead
      detect the in-process revision by finding two dirstate parents.
      
      This patch moves the writing of the rebase state to after we have
      completed the revision completely, and, importantly, after we have
      updated the rebase state to mark it done. This means we'll realize
      that all nodes have been rebased in the case mentioned above of
      editing the final commit message of a --collapse. See change to test
      case.
      
      I also moved the writing outside of the large if/elif block in
      _rebasenode(). This shouldn't matter much, but seems cleaner. One
      observable effect is if rebase was interrupted just after ignoring an
      obsolete node ("not rebasing ####, already in destination"), we used
      to come up with the same decision after --continue too, but after this
      patch we'll instead say "already rebased ###". This seems more
      consistent, since that's what we would do with obsolete nodes that had
      been marked done earlier in the process (not only just before the
      interruption).
      
      Differential Revision: https://phab.mercurial-scm.org/D2913
      98663bed146e
  13. 19 Mar, 2018 1 commit
  14. 18 Mar, 2018 1 commit
  15. 10 Jan, 2020 1 commit
    • Martin von Zweigbergk's avatar
      rebase: don't use rebased node as dirstate p2 (BC) · 9c9cfecd4600
      Martin von Zweigbergk authored
      When rebasing a node, we currently use the rebased node as p2 in the
      dirstate until just before we commit it (we then change to the desired
      parents). This p2 is visible to the user when the rebase gets
      interrupted because of merge conflicts. That can be useful to the user
      as a reminder of which commit is currently being rebased, but I
      believe it's incorrect for a few reasons:
      
       * I think the dirstate parents should be the ones that will be set
         when the commit is created.
      
       * I think having two parents means that you're merging those two
         commits, but when rebasing, you're generally grafting, not merging.
      
       * When rebasing a merge commit, we should use the two desired parents
         as dirstate parents (and we clearly can't have the rebased node as
         a third dirstate parent).
      
       * `hg graft` (and `hg update --merge`) sets only one parent and `hg
         rebase` should be consistent with that.
      
      I realize that this is a somewhat large user-visible change, but I
      think it's worth it because it will simplify things quite a bit.
      
      Differential Revision: https://phab.mercurial-scm.org/D7827
      9c9cfecd4600
  16. 29 Jan, 2020 1 commit
  17. 21 Jan, 2020 1 commit
  18. 07 Dec, 2018 2 commits
  19. 27 Jun, 2017 1 commit
    • 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.
      
      --HG--
      branch : stable
      b63351f6a246
  20. 11 Dec, 2017 2 commits
    • Matt Harbison's avatar
      tests: remove (glob) annotations that were only for '\' matches · 4441705b7111
      Matt Harbison authored
      # skip-blame because this was mechanically rewritten the following script.  I
      ran it on both *.t and *.py, but none of the *.py changes were proper.  All *.t
      ones appear to be, and they run without addition failures on both Windows and
      Linux.
      
        import argparse
        import os
        import re
      
        ap = argparse.ArgumentParser()
        ap.add_argument('path', nargs='+')
        opts = ap.parse_args()
      
        globre = re.compile(r'^(.*) \(glob\)(.*)$')
      
        for p in opts.path:
            tmp = p + '.tmp'
            with open(p, 'rb') as src, open(tmp, 'wb') as dst:
                for line in src:
                    m = globre.match(line)
                    if not m or '$LOCALIP' in line or '*' in line:
                        dst.write(line)
                        continue
                    if '?' in line[:-3] or ('?' in line[:-3] and line[-3:] != '(?)'):
                        dst.write(line)
                        continue
                    dst.write(m.group(1) + m.group(2) + '\n')
            os.unlink(p)
            os.rename(tmp, p)
      4441705b7111
    • Phil Cohen's avatar
      tests: add commit hashes to log commands in rebase tests · 469b06b4c3ca
      Phil Cohen authored
      Commit hashes are a useful way to ensure the content of commits made in the
      tests are not changing, even if we don't query every aspect of every commit.
      (And some properties, like extras, are rarely printed at all.)
      
      Many of the rebase log -G calls didn't show hashes; by adding hashes to places
      that weren't showing them we can help protect those tests from unwanted
      changes.
      
      Differential Revision: https://phab.mercurial-scm.org/D1650
      469b06b4c3ca
  21. 29 Aug, 2018 1 commit
    • Boris Feld's avatar
      phase: report number of non-public changeset alongside the new range · 89630d0b3e23
      Boris Feld authored
      When interacting with non-publishing repository or bundle, it is useful to
      have some information about the phase of the changeset we just pulled.
      
      This changeset updates the "new changesets MIN:MAX" output to also includes
      phases information for non-public changesets. Displaying extra data about
      non-public changesets means the output for exchange with publishing repository
      (the default) is unaffected.
      89630d0b3e23
  22. 08 Jul, 2017 1 commit
    • Jun Wu's avatar
      rebase: use scmutil.cleanupnodes (issue5606) (BC) · 3b7cb3d17137
      Jun Wu authored
      This patch migrates rebase to use scmutil.cleanupnodes API. It simplifies
      the code and makes rebase code reusable inside a transaction.
      
      This is a BC because the backup file is no longer strip-backup/*-backup.hg,
      but strip-backup/*-rebase.hg. The latter looks more reasonable since the
      directory name is "strip-backup" so there is no need to repeat "backup".
      
      I think the backup file name change is probably fine as a BC, since we have
      changed it before (aa4a1672583e) and didn't get complains. The end result
      of this series will be a much more consistent and unified backup names:
      
        command  | old backup file suffix       | new backup file suffix
        -------------------------------------------------------------------
        amend    | amend-backup.hg              | amend.hg
        histedit | backup.hg (could be 2 files) | histedit.hg (single file)
        rebase   | backup.hg                    | rebase.hg
        strip    | backup.hg                    | backup.hg
      
      (note: backup files are under .hg/strip-backup)
      
      It also fixes issue5606 as a side effect because the new "delayedstrip" code
      path will carefully examine nodes (safestriproots) to make sure orphaned
      changesets won't get stripped by accident.
      
      Some warning messages are changed to the new "warning: orphaned descendants
      detected, not stripping HASHES", which provides more information about
      exactly what changesets are left behind.
      
      Another minor behavior change is when there is an obsoleted changeset with a
      successor in the destination branch, bookmarks pointing to that obsoleted
      changeset will not be moved. I have commented in test-rebase-obsolete.t
      explaining why that is more desirable.
      3b7cb3d17137
  23. 19 Oct, 2015 1 commit
  24. 19 Nov, 2016 1 commit
    • Kostia Balytskyi's avatar
      conflicts: make spacing consistent in conflict markers · ce3a133f71b3
      Kostia Balytskyi authored
      The way default marker template was defined before this patch,
      the spacing before dash in conflict markes was dependent on
      whether changeset is a tip one or not. This is a relevant part
      of template:
          '{ifeq(tags, "tip", "", "{tags} "}'
      If revision is a tip revision with no other tags, this would
      resolve to an empty string, but for revisions which are not tip
      and don't have any other tags, this would resolve to a single
      space string. In the end this causes weirdnesses like the ones
      you can see in the affected tests.
      
      This is a not a big deal, but double spacing may be visually
      less pleasant.
      
      Please note that test changes where commit hashes change are
      the result of marking files as resolved without removing markers.
      ce3a133f71b3
  25. 17 Feb, 2016 1 commit
    • liscju's avatar
      rebase: adds storing collapse message (issue4792) · c7e8948627f3
      liscju authored
      Before this patch collapse message wasn't stored so when
      you ran into the merge conflict while rebasing, running
      rebase --continue didn't remember the message and
      always opened editor to fill commit message.
      
      This patch adds saving collapse message in
      .hg/last-message.txt and restoring it later
      when needed.
      c7e8948627f3
  26. 08 Feb, 2016 1 commit
    • Pierre-Yves David's avatar
      tests: add an explicit destination in some rebase tests · 79437fb352ce
      Pierre-Yves David authored
      As we will make 'rebase' behave more like 'merge', it will no longer pick
      'max(branch(.))' as the default destination. We have to hard code the expected
      destination is multiple tests where it matters. After a careful inspection none
      of theses tests really cares about the default destination behavior and just
      omitted one out of laziness.
      79437fb352ce
  27. 19 Mar, 2017 1 commit
    • 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
  28. 12 Oct, 2017 1 commit
    • Denis Laxalde's avatar
      transaction-summary: show the range of new revisions upon pull/unbundle (BC) · eb586ed5d8ce
      Denis Laxalde authored
      Upon pull or unbundle, we display a message with the range of new revisions
      fetched. This revision range could readily be used after a pull to look out
      what's new with 'hg log'. The algorithm takes care of filtering "obsolete"
      revisions that might be present in transaction's "changes" but should not be
      displayed to the end user.
      eb586ed5d8ce
  29. 20 Sep, 2017 1 commit
    • Martin von Zweigbergk's avatar
      rebase: also include other namespaces in changeset description · 4f969b9e0cf5
      Martin von Zweigbergk authored
      This makes use of the generic method of listing bookmarks and tags, so
      other extensions that add other namespaces will get their names added
      too.
      
      This does mean that bookmarks will come before tags, just like we
      apparently decided to order them in the "hg log" output. It doesn't
      seem like people would be parsing the rebase output anyway. We also
      did 79ab5369d55a (rebase: use _ctxdesc in one more place, 2017-08-29)
      recently, so now seems like a good time.
      
      Differential Revision: https://phab.mercurial-scm.org/D741
      4f969b9e0cf5
  30. 09 Jan, 2015 1 commit
    • Durham Goode's avatar
      bundles: do not overwrite existing backup bundles (BC) · aa4a1672583e
      Durham Goode authored
      Previously, a backup bundle could overwrite an existing bundle and cause user
      data loss. For instance, if you have A<-B<-C and strip B, it produces backup
      bundle B-backup.hg. If you then hg pull -r B B-backup.hg and strip it again, it
      overwrites the existing B-backup.hg and C is lost.
      
      The fix is to add a hash of all the nodes inside that bundle to the filename.
      Fixed up existing tests and added a new test in test-strip.t
      aa4a1672583e
  31. 10 Dec, 2014 1 commit
  32. 09 Dec, 2014 1 commit
  33. 07 Dec, 2014 1 commit
  34. 10 Oct, 2014 1 commit
  35. 15 Aug, 2014 1 commit
  36. 18 Mar, 2014 1 commit
    • Katsunori FUJIWARA's avatar
      rebase: use "commitforceeditor" instead of "ui.edit()" for "--collapse" · 95aab23a806b
      Katsunori FUJIWARA authored
      Before this patch, "rebase --collapse --edit" without "--message" and
      "--logfile" invokes editor twice unexpectedly:
      
        1. explicit "ui.edit()" invocation in rebase extension itself
      
        2. indirect invocation in "localrepository.commit()" with "editor =
           commitforceeditor" assigned by "--edit" option
      
      This patch uses indirect "commitforceeditor" invocation instead of
      "ui.edit()" for "--collapse" without "--message" and "--logfile" to:
      
        - suppress redundant the former invocation
        - ensure editor invocation even when "--edit" is not specified
      
      --HG--
      branch : stable
      95aab23a806b
  37. 02 Mar, 2014 1 commit
  38. 02 Nov, 2013 1 commit
    • Durham Goode's avatar
      rebase: fix working copy location after a --collapse (issue4080) · ea81f8b2364e
      Durham Goode authored
      Rebasing with --collapse would leave the working copy on the parent of the
      collapsed commit, instead of on the collapsed commit.  This fixes that.  Also
      fixes a few tests that already covered this area but had bad data.
      
      This also fixes issue3716 where bookmarks are not kept across rebases with
      --collapse. I updated the test to cover that case as well.
      
      --HG--
      branch : stable
      ea81f8b2364e