Mercurial > hg
comparison mercurial/scmutil.py @ 45482:9a99ab8217bd
scmutil: introduce filterrequirements() to split reqs into wc and store ones
In upcoming patches where we try to implement requirements in store, we will
need a mechanism to split all requirements on some basis and decide which one
goes to `.hg/requires` and which one goes to `.hg/store/requires`.
This patch introduce a separate function for that. Filtering logic for now is
put under an `if False:`. In upcoming patches it will be removed.
Differential Revision: https://phab.mercurial-scm.org/D8913
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Fri, 07 Aug 2020 16:11:19 +0530 |
parents | a03c177a4679 |
children | d252f51ab032 |
comparison
equal
deleted
inserted
replaced
45481:bddc4f2ef317 | 45482:9a99ab8217bd |
---|---|
36 obsutil, | 36 obsutil, |
37 pathutil, | 37 pathutil, |
38 phases, | 38 phases, |
39 policy, | 39 policy, |
40 pycompat, | 40 pycompat, |
41 requirements as requirementsmod, | |
41 revsetlang, | 42 revsetlang, |
42 similar, | 43 similar, |
43 smartset, | 44 smartset, |
44 url, | 45 url, |
45 util, | 46 util, |
1468 src = None | 1469 src = None |
1469 ds.copy(src, dst) | 1470 ds.copy(src, dst) |
1470 repo._quick_access_changeid_invalidate() | 1471 repo._quick_access_changeid_invalidate() |
1471 | 1472 |
1472 | 1473 |
1474 def filterrequirements(requirements): | |
1475 """ filters the requirements into two sets: | |
1476 | |
1477 wcreq: requirements which should be written in .hg/requires | |
1478 storereq: which should be written in .hg/store/requires | |
1479 | |
1480 Returns (wcreq, storereq) | |
1481 """ | |
1482 if False: | |
1483 wc, store = set(), set() | |
1484 for r in requirements: | |
1485 if r in requirementsmod.WORKING_DIR_REQUIREMENTS: | |
1486 wc.add(r) | |
1487 else: | |
1488 store.add(r) | |
1489 return wc, store | |
1490 return requirements, None | |
1491 | |
1492 | |
1473 def writereporequirements(repo, requirements=None): | 1493 def writereporequirements(repo, requirements=None): |
1474 """ writes requirements for the repo to .hg/requires """ | 1494 """ writes requirements for the repo to .hg/requires """ |
1475 if requirements: | 1495 if requirements: |
1476 repo.requirements = requirements | 1496 repo.requirements = requirements |
1477 writerequires(repo.vfs, repo.requirements) | 1497 wcreq, storereq = filterrequirements(repo.requirements) |
1498 if wcreq is not None: | |
1499 writerequires(repo.vfs, wcreq) | |
1500 if storereq is not None: | |
1501 writerequires(repo.svfs, storereq) | |
1478 | 1502 |
1479 | 1503 |
1480 def writerequires(opener, requirements): | 1504 def writerequires(opener, requirements): |
1481 with opener(b'requires', b'w', atomictemp=True) as fp: | 1505 with opener(b'requires', b'w', atomictemp=True) as fp: |
1482 for r in sorted(requirements): | 1506 for r in sorted(requirements): |