-
Notifications
You must be signed in to change notification settings - Fork 365
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
Feature/versioning WIP #1350
Feature/versioning WIP #1350
Conversation
I think it is better. Go ahead |
* Fix windows path limitation link * removed no longer working link
As a possible disadvantage, it requires the consumers to explicitly modify the recipes | ||
to use updated versions, which could be tedious or difficult to scale for large projects | ||
with many dependencies, in which those dependencies are frequently modified, and | ||
it is desired to move the whole project forward to those updated dependencies. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it is desired to move the whole project forward to those updated dependencies. | |
it is desired to move the whole project forward to those updated dependencies. | |
To mitigate that issue, especially while developing the packages, you can use fixed versions with `package revisions` (see below) to resolve automatically the latest revisions for a given fixed version. |
|
||
- :command:`--lockfile` argument in :command:`install/create/export/info` | ||
|
||
If the command builds a package, it can modify its reference. Even if teh version is not changed, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the command builds a package, it can modify its reference. Even if teh version is not changed, | |
If the command builds a package, it can modify its reference. Even if the version is not changed, |
|
||
.. code-block:: bash | ||
|
||
$ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
?
|
||
$ cd PkgB | ||
$ cp ../PkgE/conan.lock . # Do a copy of the lockfile | ||
$ conan create PkgB/1.1@user/testing --lockfile |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do the graph clean here?
The *conan.lock* file contains more information than the versions of the dependencies, it contains: | ||
|
||
- The "effective" profile that has been used to compute this lockfile. The effective profile is the | ||
combination of the profile files that could have been passed in the command line, pluse any |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
combination of the profile files that could have been passed in the command line, pluse any | |
combination of the profile files that could have been passed in the command line, plus any |
- The options values at each package. As downstream consumers can define options values, it is | ||
important that this information is also stored, so it is also possible to build intermediate nodes | ||
of the graph leading to the same result. | ||
- Other kind of requirements like python_requires. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Other kind of requirements like python_requires. | |
- Another kind of requirements like python_requires. |
|
||
This command will generate a *conan.lock* file. It behaves like :command:`conan install` command, | ||
(this will also generate a lockfile by default), but without needing to actually install the | ||
binaries, so it will be faster. In that regard it is equal to :command:`conan info` that can also |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
binaries, so it will be faster. In that regard it is equal to :command:`conan info` that can also | |
binaries, so it will be faster. In that regard, it is equal to :command:`conan info` that can also |
|
||
- :command:`conan graph build-order` | ||
|
||
Takes a lockfile as argument, and return a list of lists indicating the order in which packages |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Takes a lockfile as argument, and return a list of lists indicating the order in which packages | |
Takes a lockfile as an argument, and return a list of lists indicating the order in which packages |
One of the applications of lockfiles is to be able to propagate changes done in one package | ||
belonging to a dependency graph downstream its affected consumers. | ||
|
||
Lets say that we have the following scenario in which one developer does some changes to PkgB, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lets say that we have the following scenario in which one developer does some changes to PkgB, | |
Let's say that we have the following scenario in which one developer does some changes to PkgB, |
|
||
.. image:: ../images/lockfile_ci_1.png | ||
|
||
The next step is to know which dependants need to be built, because they are affected by the new |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The next step is to know which dependants need to be built, because they are affected by the new | |
The next step is to know which dependants need to be built because they are affected by the new |
NOT FINISHED, but to gather quick feedback about the structure and the moving of version ranges and package revisions.