Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize lock file format for git merge conflicts #7070

Merged
merged 1 commit into from
Jul 23, 2019

Commits on Jul 23, 2019

  1. Optimize lock file format for git merge conflicts

    This commit is an attempt to refine Cargo's lock file format to generate
    less git merge conflicts for lock file updates as well as make it easier
    to manage lock file updates. The new lock file format has a few major changes:
    
    * The `[metadata]` table is no longer used to track checksums. The
      packages themselves now list `checksum` fields directly.
    
    * The entries in the `dependencies` key no longer unconditionally
      mention the version/source of the dependency. When unambiguous only
      the name or only the name/version are mentioned.
    
    As mentioned before the goal here is to reduce git merge conflict
    likelihood between two cargo updates to a lock file. By not using
    `[metadata]` the updates to package checksums should only happen on the
    package itself, not in a shared metadata table where it's easy to
    conflict with other updates. Additionally by making `dependencies`
    entries shorter it's hoped that updating a crate will only either add
    entries to a lock file or update lines related to just that package.
    It's theorized that the amount of updates necessary to a lock file are
    far less than today where the version has to be updated in many
    locations.
    
    As with all lock file format changes this new format is not turned on by
    default. Support is added so Cargo will preserve it if it sees it (and
    tests are added too), and then some time down the road we can flip the
    switch and turn this on by default.
    alexcrichton committed Jul 23, 2019
    Configuration menu
    Copy the full SHA
    34bca03 View commit details
    Browse the repository at this point in the history