Skip to content

Commit 806c705

Browse files
committed
Redo the freezing workflows
1 parent 41ba495 commit 806c705

File tree

1 file changed

+28
-19
lines changed

1 file changed

+28
-19
lines changed

doc/how-to-freeze-versions.rst

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -186,33 +186,42 @@ Freezing workflows
186186
with. Alternatively, you can run ``cabal update
187187
--ignore-project``.
188188

189-
Freeze
190-
If the ``cabal.project.freeze`` file doesn't exist, generating one is a
191-
great way to see what versions of dependencies are currently being used even
192-
if you choose to discard the ``.freeze`` file after inspecting it.
189+
For the versions of all dependencies at once:
190+
191+
- To check solver-chosen versions - cold snap
192+
193+
With this workflow we freeze, inspect then discard ``cabal.project.freeze``,
194+
always leaving the solver free to choose other versions. This is great way
195+
to see what versions of dependencies are currently being used.
196+
197+
- To update versions of all dependencies - thaw and freeze
193198

194-
Thaw, Freeze
195199
If you changed the version ranges of any of the dependencies in any of your
196200
project's package descriptions, in any ``.cabal`` file, then delete the
197201
``cabal.project.freeze`` file if it already exists and run ``cabal freeze``
198-
to generate fresh version of ``cabal.project.freeze``.
202+
to generate fresh version of ``cabal.project.freeze``. The steps of this
203+
workflow are delete and freeze. The solver is let free to choose versions of
204+
all dependencies but once it has decided, those versions are immediately
205+
pinned.
199206

200-
Freeze, Freeze (Freezing Harder)
201-
You might in some cases want to skip deletion of ``cabal.project.freeze``,
202-
but keep in mind that in that case ``cabal freeze`` will use existing
203-
``cabal.project.freeze`` when resolving dependencies, therefore not updating
204-
any existing dependencies, only adding new ones.
207+
This is "thaw and freeze" workflow is the simplest way to work with a
208+
``cabal.project.freeze`` file committed to source control.
205209

206-
Partial Thaw, Freeze
207-
If you want to a pick up a different version of a single dependency, you can
208-
delete its constraint from ``cabal.project.freeze`` and then run ``cabal
209-
freeze`` again.
210+
For the version of a single dependency:
211+
212+
- To pin the version of a new dependency
210213

211-
.. Note::
214+
The steps of this workflow are add the new dependency and freeze. The solver
215+
is free to chose its version for the new dependency while retaining the
216+
already pinned versions for the rest of the dependencies.
217+
218+
- To update the version of one dependency
212219

213-
If not sure, pick the "thaw, freeze" workflow, as it is the safest, the
214-
simplest and the most common. Finally, you will always want to commit the
215-
changed ``cabal.project.freeze`` to version control.
220+
If you want to a pick up a different version of a single dependency, you can
221+
delete its constraint from ``cabal.project.freeze`` and then run ``cabal
222+
freeze`` again. The steps of this workflow are delete one line and freeze.
223+
It gives the solver the chance to choose another version for the unpinned
224+
dependency.
216225

217226
Ensuring everything is frozen
218227
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

0 commit comments

Comments
 (0)