Skip to content
Snippets Groups Projects
  1. Oct 17, 2017
    • Boris Feld's avatar
      pull: retrieve bookmarks through the binary part when possible · 44b8b5ad30eb
      Boris Feld authored
      This makes pull consistent with the part used by push and provide us with a
      more compact representation of bookmarks.
      
      In addition, this opens the way for smarter bookmark exchanges (e.g. filtering
      by names or only sending the bookmark relevant to the pulled set, etc).
      44b8b5ad30eb
    • Boris Feld's avatar
      getbundle: add support for 'bookmarks' boolean argument · cb4dcd7fabe7
      Boris Feld authored
      This new argument requests a 'bookmarks' part from the server. It is meant to
      be used instead of the "listkeys" request.
      cb4dcd7fabe7
    • Boris Feld's avatar
      bundle2: support a 'records' mode for the 'bookmarks' part · 496154e41968
      Boris Feld authored
      In this mode, the bookmarks changes are record in the 'bundleoperation' records
      instead of inflicted to the repository. This is necessary to use the part when
      pulling.
      496154e41968
    • Boris Feld's avatar
      bundle2: add a 'modes' dictionary to the bundle operation · 1f30cbac34b6
      Boris Feld authored
      This new attribute allows the codes requesting an unbundling to pass important
      information to individual part handlers. The current target use case is to
      allow for receiving 'bookmarks' part without directly updating local
      repository, but just recording the received data instead. This is necessary
      for pull where the remote bookmarks are processed locally. I expect the
      concept to be beneficial to other parts in the future.
      
      To clarify the bookmark behavior on pull, the remote bookmark value are not just
      taken -as-is- into the local repository. There is an extra step to detect
      bookmark divergence. The remote bookmarks data are stored until this processing
      happens.
      1f30cbac34b6
    • Boris Feld's avatar
      bookmark: use the 'bookmarks' bundle2 part to push bookmark update (issue5165) · a1e70c1dbec0
      Boris Feld authored
      We use the new binary parts we introduced earlier to exchange bookmark. The
      payload is a bit more compact since we use binary and the length of bookmarks
      is no longer constrained to 255.
      
      .. fix:: Issue 5165
      
         Bookmark, whose name is longer than 255, can again be exchanged again
         between 4.4+ client and servers.
      a1e70c1dbec0
    • Boris Feld's avatar
      bookmark: introduce in advance a variant of the exchange test · ae79d878702b
      Boris Feld authored
      We are about to introduce a new way to push bookmark to server. We introduce
      the test variant before actually updating the exchange to help the output
      changes to stand out when it happens.
      ae79d878702b
  2. Oct 15, 2017
  3. Oct 17, 2017
    • Boris Feld's avatar
      bookmark: add pushkey hook compatiblity to the bundle2 part · f392066d127c
      Boris Feld authored
      Currently, pushing a bookmark update triggers a pushkey hooks. It is likely
      that users in the wild use such hooks to control bookmark movement. Using a non
      push-key mechanism to exchange bookmark means these hooks are no longer called,
      possibly breaking existing users setup. So we add explicit call to the pushkey
      hooks in the handling of the bundle2 part. This behavior can be disabled with a
      new config knob: 'server.bookmarks-pushkey-compat'.
      f392066d127c
  4. Oct 15, 2017
    • Boris Feld's avatar
      bookmark: introduce a 'bookmarks' part · af5507203d01
      Boris Feld authored
      This part can carry and apply bookmarks information. We start with adding the
      core behavior of the part. In its current form, the part is only suitable for
      push since it plain update the bookmark without consideration for the local
      state. Support of the behavior needed for pulling will be added in later
      changesets.
      af5507203d01
  5. Nov 13, 2017
    • Boris Feld's avatar
      push: include a 'check:bookmarks' part when possible · ad5f2b923b0d
      Boris Feld authored
      Before updating the actual bookmark update, we can start with updating the way
      we check for push race. Checking bookmarks state earlier is useful even if we
      still use pushkey. Aborting before the changegroup is added can save a lot of
      time.
      ad5f2b923b0d
  6. Oct 15, 2017
    • Boris Feld's avatar
      bookmark: add a 'check:bookmarks' bundle2 part · dbf868623daf
      Boris Feld authored
      This part checks that bookmarks are still at the node they are expected to be.
      This allows a pushing client to detect push race where the repository was
      updated between the time it discovered the server state and the time it managed
      to finish its push.
      
      Such checking already exists when pushing bookmark through pushkey. This new
      part can be inserted at the beginning of the bundle, triggering abort earlier.
      In addition, we would like to move away from pushey to push bookmark. A step
      useful to solve issue5165.
      dbf868623daf
    • Boris Feld's avatar
      bookmark: add methods to binary encode and decode bookmark values · 3340d46a5c3f
      Boris Feld authored
      Coming new bundle2 parts related to bookmark will use a binary encoding. It
      encodes a series of '(bookmark, node)' pairs. Bookmark name has a high enough
      size limit to not be affected by issue5165. (64K length, we are well covered)
      3340d46a5c3f
  7. Dec 06, 2017
  8. Dec 05, 2017
  9. Dec 06, 2017
  10. Dec 05, 2017
  11. Nov 30, 2017
  12. Nov 28, 2017
  13. Nov 23, 2017
  14. Dec 05, 2017
  15. Nov 09, 2017
  16. Oct 04, 2017
  17. Nov 10, 2017
  18. Oct 04, 2017
    • Pulkit Goyal's avatar
      remotenames: add functionality to store remotenames under .hg/hgremotenames/ · 8df8ce2cc5dd
      Pulkit Goyal authored
      This patch moves the functionality from remotenames extension to store
      remotenames to core.
      
      Storage format used by remotenames extension:
      
      A single file `.hg/remotenames` with an entry in each line where each line is of
      format:
      `node nametype remotepath/name`
      where nametype is either 'bookmarks' or 'branches'.
      
      This was not the best way to store data, so while moving to core the storage
      format was changed but yet not the final format. The storage format used by core
      after this patch will be:
      
      * A file for each type of name i.e. bookmarks and branches in .hg/remotenames/
        directory
      * A version number on the top of the file. The version for current format is 0.
      * An entry in each line where each line is of the format
      `node\0remotepath\0name`
      
      The logic to sync with existing remotenames file and saving journals and other
      related things will be moved to core in next patches incrementally.
      
      Thanks to Ryan, Augie and Durham for suggestions on storage format.
      
      Previously reviewed as D939.
      
      Differential Revision: https://phab.mercurial-scm.org/D1548
      8df8ce2cc5dd
    • Pulkit Goyal's avatar
      remotenames: move function to pull remotenames from the remoterepo to core · 5a62910948d2
      Pulkit Goyal authored
      This patch is the first patch of the series moving functionality from
      hgremotenames extension to core.
      
      There are lot of functionality in the extension which in the end enables us to
      store branch heads and bookmarks location on a server from which we are pulling
      or cloning from. This will help us in creating a better bookmark workflow where
      we can show user that a certain server has this bookmarks at this node. It will
      also introduce namespaces related to remote bookmarks and remote branches.
      
      This patch moves the functionality to pull branches and bookmarks from a
      server from which we are pulling to core behind config option
      `experimental.remotenames`.
      
      This patch adds a test which helps us to analyse whether things are working or
      not. We are currently writing things to ui, we will write information to files
      in upcoming patches.
      
      Previously reviewed as D937.
      
      Differential Revision: https://phab.mercurial-scm.org/D1547
      5a62910948d2
  19. Dec 05, 2017
  20. Nov 30, 2017
  21. Dec 03, 2017
  22. Dec 04, 2017
    • Gregory Szorc's avatar
      setup: only write some autogenerated files if they change · 61ff0d7d56fd
      Gregory Szorc authored
      Without this change, setup.py always writes some files on every
      invocation. This prevents some builds from being a no-op when they
      should. And, since times can sneak into generated .pyc files,
      this prevents file content from being deterministic between
      builds.
      
      As part of the refactor, we treat file content as bytes.
      
      The only potential regression from this would be if some tool
      is looking at mtimes of the changed files to determine if
      further action should be taken. But I don't think anything
      critically important is keyed off the mtimes of these specific files.
      
      Differential Revision: https://phab.mercurial-scm.org/D1580
      61ff0d7d56fd
Loading