comparison hgext/largefiles/overrides.py @ 45298:a3cd63d6005b

largefiles: introduce a constant for 'lfmr' action It's better to use a dedicated constant instead of a string which makes pretty less sense. Differential Revision: https://phab.mercurial-scm.org/D8836
author Pulkit Goyal <7895pulkit@gmail.com>
date Sat, 25 Jul 2020 14:44:29 +0530
parents ab57793dec5b
children 4c6004afd836
comparison
equal deleted inserted replaced
45297:ab57793dec5b 45298:a3cd63d6005b
49 ) 49 )
50 50
51 eh = exthelper.exthelper() 51 eh = exthelper.exthelper()
52 52
53 lfstatus = lfutil.lfstatus 53 lfstatus = lfutil.lfstatus
54
55 MERGE_ACTION_LARGEFILE_MARK_REMOVED = b'lfmr'
54 56
55 # -- Utility functions: commonly/repeatedly needed functionality --------------- 57 # -- Utility functions: commonly/repeatedly needed functionality ---------------
56 58
57 59
58 def composelargefilematcher(match, manifest): 60 def composelargefilematcher(match, manifest):
493 orig(ui, fakerepo, *pats, **opts) 495 orig(ui, fakerepo, *pats, **opts)
494 else: 496 else:
495 orig(ui, repo, *pats, **opts) 497 orig(ui, repo, *pats, **opts)
496 498
497 499
498 # Register the `lfmr` merge action in emptyactions() return type 500 # Register the MERGE_ACTION_LARGEFILE_MARK_REMOVED in emptyactions() return type
499 @eh.wrapfunction(merge, b'emptyactions') 501 @eh.wrapfunction(merge, b'emptyactions')
500 def overrideemptyactions(origfn): 502 def overrideemptyactions(origfn):
501 ret = origfn() 503 ret = origfn()
502 ret[b'lfmr'] = [] 504 ret[MERGE_ACTION_LARGEFILE_MARK_REMOVED] = []
503 return ret 505 return ret
504 506
505 507
506 # Before starting the manifest merge, merge.updates will call 508 # Before starting the manifest merge, merge.updates will call
507 # _checkunknownfile to check if there are any files in the merged-in 509 # _checkunknownfile to check if there are any files in the merged-in
621 mresult.addfile(standin, b'k', None, b'replaces standin') 623 mresult.addfile(standin, b'k', None, b'replaces standin')
622 else: 624 else:
623 # "lfile" should be marked as "removed" without 625 # "lfile" should be marked as "removed" without
624 # removal of itself 626 # removal of itself
625 mresult.addfile( 627 mresult.addfile(
626 lfile, b'lfmr', None, b'forget non-standin largefile', 628 lfile,
629 MERGE_ACTION_LARGEFILE_MARK_REMOVED,
630 None,
631 b'forget non-standin largefile',
627 ) 632 )
628 633
629 # linear-merge should treat this largefile as 're-added' 634 # linear-merge should treat this largefile as 're-added'
630 mresult.addfile(standin, b'a', None, b'keep standin') 635 mresult.addfile(standin, b'a', None, b'keep standin')
631 else: # pick remote normal file 636 else: # pick remote normal file
637 return mresult 642 return mresult
638 643
639 644
640 @eh.wrapfunction(mergestatemod, b'recordupdates') 645 @eh.wrapfunction(mergestatemod, b'recordupdates')
641 def mergerecordupdates(orig, repo, actions, branchmerge, getfiledata): 646 def mergerecordupdates(orig, repo, actions, branchmerge, getfiledata):
642 if b'lfmr' in actions: 647 if MERGE_ACTION_LARGEFILE_MARK_REMOVED in actions:
643 lfdirstate = lfutil.openlfdirstate(repo.ui, repo) 648 lfdirstate = lfutil.openlfdirstate(repo.ui, repo)
644 for lfile, args, msg in actions[b'lfmr']: 649 for lfile, args, msg in actions[MERGE_ACTION_LARGEFILE_MARK_REMOVED]:
645 # this should be executed before 'orig', to execute 'remove' 650 # this should be executed before 'orig', to execute 'remove'
646 # before all other actions 651 # before all other actions
647 repo.dirstate.remove(lfile) 652 repo.dirstate.remove(lfile)
648 # make sure lfile doesn't get synclfdirstate'd as normal 653 # make sure lfile doesn't get synclfdirstate'd as normal
649 lfdirstate.add(lfile) 654 lfdirstate.add(lfile)