| 283 | full workspace. |
| 284 | """ |
| 285 | mb = run(["git", "merge-base", base, head]) |
| 286 | old_rev = mb.stdout.strip() if mb.returncode == 0 and mb.stdout.strip() else base |
| 287 | old = _lock_packages(old_rev) |
| 288 | new = _lock_packages(head) |
| 289 | if old is None or new is None: |
| 290 | return None |
| 291 | old_format, old_fingerprints, old_deps = old |
| 292 | new_format, new_fingerprints, new_deps = new |
| 293 | if old_format != new_format: |
| 294 | return None |
| 295 | changed = old_fingerprints.keys() ^ new_fingerprints.keys() |
| 296 | changed |= { |
| 297 | pid |
| 298 | for pid in old_fingerprints.keys() & new_fingerprints.keys() |
| 299 | if old_fingerprints[pid] != new_fingerprints[pid] |
| 300 | } |
| 301 | affected = set() |
| 302 | # Removed entries matter to the old graph's dependents, added entries to |