On noticing a field order change in stack.yaml.lock
I added one source
repository package extra dependency to a stack project generated using:
stack new lock-yaml-field-order new-template --bare
diff --git a/stack.yaml b/stack.yaml
index c39389f..6e7ee06 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -1,3 +1,6 @@
resolver: lts-20.12
packages:
-- .
\ No newline at end of file
+- .
+extra-deps:
+ - git: git@github.com:bitnomial/prometheus.git
+ commit: 1fde661d897c500534769960584b29e8c39e8abb
Using ghcup, I regenerated the lock file implicitly (explicitly with
--stack-yaml=stack.yaml
yields the same results).
With stack versions 2.7.3 and 2.7.5 the field order is:
packages:
- completed:
name: prometheus
version: 2.2.2
git: git@github.com:bitnomial/prometheus.git
pantry-tree:
size: 1969
sha256: 904843022ed0eabaf4e3dfc8f36e28e7365788c91e1d471b1eba56e1fca7511d
commit: 1fde661d897c500534769960584b29e8c39e8abb
original:
git: git@github.com:bitnomial/prometheus.git
commit: 1fde661d897c500534769960584b29e8c39e8abb
snapshots:
- completed:
size: 649133
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/12.yaml
sha256: af5d667f6096e535b9c725a72cffe0f6c060e0568d9f9eeda04caee70d0d9d2d
original: lts-20.12
With stack versions 2.9.1 and 2.9.3 the field order is:
packages:
- completed:
commit: 1fde661d897c500534769960584b29e8c39e8abb
git: git@github.com:bitnomial/prometheus.git
name: prometheus
pantry-tree:
sha256: 904843022ed0eabaf4e3dfc8f36e28e7365788c91e1d471b1eba56e1fca7511d
size: 1969
version: 2.2.2
original:
commit: 1fde661d897c500534769960584b29e8c39e8abb
git: git@github.com:bitnomial/prometheus.git
snapshots:
- completed:
sha256: af5d667f6096e535b9c725a72cffe0f6c060e0568d9f9eeda04caee70d0d9d2d
size: 649133
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/12.yaml
original: lts-20.12
If storing the lock file in source control this will result in large git diffs but not semantic diffs if using a YAML-aware diff tool such as graphtage.
git diff --no-index stack.implicit-v275.lock stack.implicit-v291.lock
diff --git a/stack.implicit-v275.lock b/stack.implicit-v291.lock
index c1313fc..02ea2fe 100644
--- a/stack.implicit-v275.lock
+++ b/stack.implicit-v291.lock
@@ -5,19 +5,19 @@
packages:
- completed:
- name: prometheus
- version: 2.2.2
+ commit: 1fde661d897c500534769960584b29e8c39e8abb
git: git@github.com:bitnomial/prometheus.git
+ name: prometheus
pantry-tree:
- size: 1969
sha256: 904843022ed0eabaf4e3dfc8f36e28e7365788c91e1d471b1eba56e1fca7511d
- commit: 1fde661d897c500534769960584b29e8c39e8abb
+ size: 1969
+ version: 2.2.2
original:
- git: git@github.com:bitnomial/prometheus.git
commit: 1fde661d897c500534769960584b29e8c39e8abb
+ git: git@github.com:bitnomial/prometheus.git
snapshots:
- completed:
+ sha256: af5d667f6096e535b9c725a72cffe0f6c060e0568d9f9eeda04caee70d0d9d2d
size: 649133
url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/20/12.yaml
- sha256: af5d667f6096e535b9c725a72cffe0f6c060e0568d9f9eeda04caee70d0d9d2d
original: lts-20.12
The commands I used for this test, run like this:
$ ghcup set stack 2.7.5
$ rm stack.yaml.lock
$ stack build --dry-run
$ cp stack.yaml.lock stack.implicit-v275.lock
$ ghcup set stack 2.9.1
$ rm stack.yaml.lock
$ stack build --dry-run
$ cp stack.yaml.lock stack.implicit-v291.lock