DVC "md5 ... changed" WARNING in CI
DVC recomputed the checksum of a tracked file and it differs from the md5 stored in the .dvc metadata, so it warns that the data changed. In CI this usually means the file was regenerated or altered after checkout.
What this error means
dvc status or a stage prints "WARNING: md5 ... changed" or lists tracked data as "modified", and downstream stages rerun or fail a consistency check.
dvc
WARNING: md5 of 'data/train.csv' changed, updating...
data/train.csv:
changed checksumCommon causes
The file was regenerated after checkout
A build step rewrote the tracked file, so its content hash no longer matches the committed .dvc record.
Line-ending or filter changes altered the bytes
A CRLF conversion or other filter changed the file on checkout, shifting its md5.
How to fix it
Pull instead of regenerating tracked data
- Do not rebuild data that DVC already tracks in CI; pull it instead.
- If the change is intentional,
dvc addand commit the new pointer. - Re-run so status is clean.
Terminal
dvc pull
dvc statusStop filters from altering tracked files
Treat tracked data as binary so line-ending filters do not change its hash.
.gitattributes
data/** -textHow to prevent it
- Pull DVC-tracked data in CI rather than regenerating it.
- Mark tracked data as binary to avoid filter-driven hash drift.
- Commit updated
.dvcpointers whenever data legitimately changes.
Related guides
DVC "dvc.lock ... does not match" in CIFix DVC "dvc.lock does not match" / stages out of date in CI - the committed dvc.lock is stale relative to dv…
DVC data shows as Git "modified" and not committed in CIFix a dirty Git tree from DVC in CI - dvc add/repro updated .dvc pointers or dvc.lock that were not committed…
DVC "dvc repro ... failed" pipeline stage in CIFix DVC "ERROR: failed to reproduce ... stage" in CI - a dvc repro pipeline stage command exited non-zero. Th…