D6256: copies: inline _computenonoverlap() in mergecopies()
This revision was automatically updated to reflect the committed changes. Closed by commit rHGd69bc8ffbe6f: copies: inline _computenonoverlap() in mergecopies() (authored by martinvonz, committed by ). REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D6256?vs=14965&id=14977 REVISION DETAIL https://phab.mercurial-scm.org/D6256 AFFECTED FILES hgext/remotefilelog/__init__.py mercurial/copies.py tests/test-remotefilelog-sparse.t CHANGE DETAILS diff --git a/tests/test-remotefilelog-sparse.t b/tests/test-remotefilelog-sparse.t --- a/tests/test-remotefilelog-sparse.t +++ b/tests/test-remotefilelog-sparse.t @@ -98,12 +98,5 @@ $ clearcache $ hg prefetch -r '. + .^' -I x -I z 4 files fetched over 1 fetches - (4 misses, 0.00% hit ratio) over * (glob) -Originally this was testing that the rebase doesn't fetch pointless -blobs. Right now it fails because core's sparse can't load a spec from -the working directory. Presumably there's a fix, but I'm not sure what it is. $ hg rebase -d 2 --keep rebasing 1:876b1317060d "x2" (foo) - transaction abort! - rollback completed - abort: cannot parse sparse patterns from working directory - [255] diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -353,26 +353,6 @@ return _chain(x, y, _backwardrenames(x, a, match=match), _forwardcopies(a, y, match=match)) -def _computenonoverlap(repo, c1, c2, addedinm1, addedinm2, debug=True): -"""Computes, based on addedinm1 and addedinm2, the files exclusive to c1 -and c2. This is its own function so extensions can easily wrap this call -to see what files mergecopies is about to process. - -Even though c1 and c2 are not used in this function, they are useful in -other extensions for being able to read the file nodes of the changed files. -""" -u1 = sorted(addedinm1 - addedinm2) -u2 = sorted(addedinm2 - addedinm1) - -if debug: -header = " unmatched files in %s" -if u1: -repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) -if u2: -repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) - -return u1, u2 - def mergecopies(repo, c1, c2, base): """ Finds moves and copies between context c1 and c2 that are relevant for @@ -555,7 +535,14 @@ # find interesting file sets from manifests addedinm1 = m1.filesnotin(mb, repo.narrowmatch()) addedinm2 = m2.filesnotin(mb, repo.narrowmatch()) -u1, u2 = _computenonoverlap(repo, c1, c2, addedinm1, addedinm2) +u1 = sorted(addedinm1 - addedinm2) +u2 = sorted(addedinm2 - addedinm1) + +header = " unmatched files in %s" +if u1: +repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) +if u2: +repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) fullcopy = copies1.copy() fullcopy.update(copies2) diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py +++ b/hgext/remotefilelog/__init__.py @@ -487,37 +487,6 @@ return orig(repo, matcher, added, removed, *args, **kwargs) extensions.wrapfunction(scmutil, '_findrenames', findrenames) -# prefetch files before mergecopies check -def computenonoverlap(orig, repo, c1, c2, *args, **kwargs): -u1, u2 = orig(repo, c1, c2, *args, **kwargs) -if isenabled(repo): -m1 = c1.manifest() -m2 = c2.manifest() -files = [] - -sparsematch1 = repo.maybesparsematch(c1.rev()) -if sparsematch1: -sparseu1 = set() -for f in u1: -if sparsematch1(f): -files.append((f, hex(m1[f]))) -sparseu1.add(f) -u1 = sparseu1 - -sparsematch2 = repo.maybesparsematch(c2.rev()) -if sparsematch2: -sparseu2 = set() -for f in u2: -if sparsematch2(f): -files.append((f, hex(m2[f]))) -sparseu2.add(f) -u2 = sparseu2 - -# batch fetch the needed files from the server -repo.fileservice.prefetch(files) -return u1, u2 -extensions.wrapfunction(copies, '_computenonoverlap', computenonoverlap) - # prefetch files before pathcopies check def computeforwardmissing(orig, a, b, match=None): missing = orig(a, b, match=match) To: martinvonz, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D6256: copies: inline _computenonoverlap() in mergecopies()
martinvonz updated this revision to Diff 14965. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D6256?vs=14944&id=14965 REVISION DETAIL https://phab.mercurial-scm.org/D6256 AFFECTED FILES hgext/remotefilelog/__init__.py mercurial/copies.py tests/test-remotefilelog-sparse.t CHANGE DETAILS diff --git a/tests/test-remotefilelog-sparse.t b/tests/test-remotefilelog-sparse.t --- a/tests/test-remotefilelog-sparse.t +++ b/tests/test-remotefilelog-sparse.t @@ -98,12 +98,5 @@ $ clearcache $ hg prefetch -r '. + .^' -I x -I z 4 files fetched over 1 fetches - (4 misses, 0.00% hit ratio) over * (glob) -Originally this was testing that the rebase doesn't fetch pointless -blobs. Right now it fails because core's sparse can't load a spec from -the working directory. Presumably there's a fix, but I'm not sure what it is. $ hg rebase -d 2 --keep rebasing 1:876b1317060d "x2" (foo) - transaction abort! - rollback completed - abort: cannot parse sparse patterns from working directory - [255] diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -353,26 +353,6 @@ return _chain(x, y, _backwardrenames(x, a, match=match), _forwardcopies(a, y, match=match)) -def _computenonoverlap(repo, c1, c2, addedinm1, addedinm2, debug=True): -"""Computes, based on addedinm1 and addedinm2, the files exclusive to c1 -and c2. This is its own function so extensions can easily wrap this call -to see what files mergecopies is about to process. - -Even though c1 and c2 are not used in this function, they are useful in -other extensions for being able to read the file nodes of the changed files. -""" -u1 = sorted(addedinm1 - addedinm2) -u2 = sorted(addedinm2 - addedinm1) - -if debug: -header = " unmatched files in %s" -if u1: -repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) -if u2: -repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) - -return u1, u2 - def mergecopies(repo, c1, c2, base): """ Finds moves and copies between context c1 and c2 that are relevant for @@ -555,7 +535,14 @@ # find interesting file sets from manifests addedinm1 = m1.filesnotin(mb, repo.narrowmatch()) addedinm2 = m2.filesnotin(mb, repo.narrowmatch()) -u1, u2 = _computenonoverlap(repo, c1, c2, addedinm1, addedinm2) +u1 = sorted(addedinm1 - addedinm2) +u2 = sorted(addedinm2 - addedinm1) + +header = " unmatched files in %s" +if u1: +repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) +if u2: +repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) fullcopy = copies1.copy() fullcopy.update(copies2) diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py +++ b/hgext/remotefilelog/__init__.py @@ -487,37 +487,6 @@ return orig(repo, matcher, added, removed, *args, **kwargs) extensions.wrapfunction(scmutil, '_findrenames', findrenames) -# prefetch files before mergecopies check -def computenonoverlap(orig, repo, c1, c2, *args, **kwargs): -u1, u2 = orig(repo, c1, c2, *args, **kwargs) -if isenabled(repo): -m1 = c1.manifest() -m2 = c2.manifest() -files = [] - -sparsematch1 = repo.maybesparsematch(c1.rev()) -if sparsematch1: -sparseu1 = set() -for f in u1: -if sparsematch1(f): -files.append((f, hex(m1[f]))) -sparseu1.add(f) -u1 = sparseu1 - -sparsematch2 = repo.maybesparsematch(c2.rev()) -if sparsematch2: -sparseu2 = set() -for f in u2: -if sparsematch2(f): -files.append((f, hex(m2[f]))) -sparseu2.add(f) -u2 = sparseu2 - -# batch fetch the needed files from the server -repo.fileservice.prefetch(files) -return u1, u2 -extensions.wrapfunction(copies, '_computenonoverlap', computenonoverlap) - # prefetch files before pathcopies check def computeforwardmissing(orig, a, b, match=None): missing = orig(a, b, match=match) To: martinvonz, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D6256: copies: inline _computenonoverlap() in mergecopies()
martinvonz updated this revision to Diff 14944. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D6256?vs=14810&id=14944 REVISION DETAIL https://phab.mercurial-scm.org/D6256 AFFECTED FILES hgext/remotefilelog/__init__.py mercurial/copies.py tests/test-remotefilelog-sparse.t CHANGE DETAILS diff --git a/tests/test-remotefilelog-sparse.t b/tests/test-remotefilelog-sparse.t --- a/tests/test-remotefilelog-sparse.t +++ b/tests/test-remotefilelog-sparse.t @@ -98,12 +98,5 @@ $ clearcache $ hg prefetch -r '. + .^' -I x -I z 4 files fetched over 1 fetches - (4 misses, 0.00% hit ratio) over * (glob) -Originally this was testing that the rebase doesn't fetch pointless -blobs. Right now it fails because core's sparse can't load a spec from -the working directory. Presumably there's a fix, but I'm not sure what it is. $ hg rebase -d 2 --keep rebasing 1:876b1317060d "x2" (foo) - transaction abort! - rollback completed - abort: cannot parse sparse patterns from working directory - [255] diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -353,26 +353,6 @@ return _chain(x, y, _backwardrenames(x, a, match=match), _forwardcopies(a, y, match=match)) -def _computenonoverlap(repo, c1, c2, addedinm1, addedinm2, debug=True): -"""Computes, based on addedinm1 and addedinm2, the files exclusive to c1 -and c2. This is its own function so extensions can easily wrap this call -to see what files mergecopies is about to process. - -Even though c1 and c2 are not used in this function, they are useful in -other extensions for being able to read the file nodes of the changed files. -""" -u1 = sorted(addedinm1 - addedinm2) -u2 = sorted(addedinm2 - addedinm1) - -if debug: -header = " unmatched files in %s" -if u1: -repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) -if u2: -repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) - -return u1, u2 - def mergecopies(repo, c1, c2, base): """ Finds moves and copies between context c1 and c2 that are relevant for @@ -550,7 +530,14 @@ # find interesting file sets from manifests addedinm1 = m1.filesnotin(mb, repo.narrowmatch()) addedinm2 = m2.filesnotin(mb, repo.narrowmatch()) -u1, u2 = _computenonoverlap(repo, c1, c2, addedinm1, addedinm2) +u1 = sorted(addedinm1 - addedinm2) +u2 = sorted(addedinm2 - addedinm1) + +header = " unmatched files in %s" +if u1: +repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) +if u2: +repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) fullcopy = copies1.copy() fullcopy.update(copies2) diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py +++ b/hgext/remotefilelog/__init__.py @@ -487,37 +487,6 @@ return orig(repo, matcher, added, removed, *args, **kwargs) extensions.wrapfunction(scmutil, '_findrenames', findrenames) -# prefetch files before mergecopies check -def computenonoverlap(orig, repo, c1, c2, *args, **kwargs): -u1, u2 = orig(repo, c1, c2, *args, **kwargs) -if isenabled(repo): -m1 = c1.manifest() -m2 = c2.manifest() -files = [] - -sparsematch1 = repo.maybesparsematch(c1.rev()) -if sparsematch1: -sparseu1 = set() -for f in u1: -if sparsematch1(f): -files.append((f, hex(m1[f]))) -sparseu1.add(f) -u1 = sparseu1 - -sparsematch2 = repo.maybesparsematch(c2.rev()) -if sparsematch2: -sparseu2 = set() -for f in u2: -if sparsematch2(f): -files.append((f, hex(m2[f]))) -sparseu2.add(f) -u2 = sparseu2 - -# batch fetch the needed files from the server -repo.fileservice.prefetch(files) -return u1, u2 -extensions.wrapfunction(copies, '_computenonoverlap', computenonoverlap) - # prefetch files before pathcopies check def computeforwardmissing(orig, a, b, match=None): missing = orig(a, b, match=match) To: martinvonz, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D6256: copies: inline _computenonoverlap() in mergecopies()
martinvonz updated this revision to Diff 14810. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D6256?vs=14805&id=14810 REVISION DETAIL https://phab.mercurial-scm.org/D6256 AFFECTED FILES hgext/remotefilelog/__init__.py mercurial/copies.py tests/test-remotefilelog-sparse.t CHANGE DETAILS diff --git a/tests/test-remotefilelog-sparse.t b/tests/test-remotefilelog-sparse.t --- a/tests/test-remotefilelog-sparse.t +++ b/tests/test-remotefilelog-sparse.t @@ -98,12 +98,5 @@ $ clearcache $ hg prefetch -r '. + .^' -I x -I z 4 files fetched over 1 fetches - (4 misses, 0.00% hit ratio) over * (glob) -Originally this was testing that the rebase doesn't fetch pointless -blobs. Right now it fails because core's sparse can't load a spec from -the working directory. Presumably there's a fix, but I'm not sure what it is. $ hg rebase -d 2 --keep rebasing 1:876b1317060d "x2" (foo) - transaction abort! - rollback completed - abort: cannot parse sparse patterns from working directory - [255] diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -353,26 +353,6 @@ return _chain(x, y, _backwardrenames(x, a, match=match), _forwardcopies(a, y, match=match)) -def _computenonoverlap(repo, c1, c2, addedinm1, addedinm2, debug=True): -"""Computes, based on addedinm1 and addedinm2, the files exclusive to c1 -and c2. This is its own function so extensions can easily wrap this call -to see what files mergecopies is about to process. - -Even though c1 and c2 are not used in this function, they are useful in -other extensions for being able to read the file nodes of the changed files. -""" -u1 = sorted(addedinm1 - addedinm2) -u2 = sorted(addedinm2 - addedinm1) - -if debug: -header = " unmatched files in %s" -if u1: -repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) -if u2: -repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) - -return u1, u2 - def mergecopies(repo, c1, c2, base): """ Finds moves and copies between context c1 and c2 that are relevant for @@ -550,7 +530,14 @@ # find interesting file sets from manifests addedinm1 = m1.filesnotin(mb, repo.narrowmatch()) addedinm2 = m2.filesnotin(mb, repo.narrowmatch()) -u1, u2 = _computenonoverlap(repo, c1, c2, addedinm1, addedinm2) +u1 = sorted(addedinm1 - addedinm2) +u2 = sorted(addedinm2 - addedinm1) + +header = " unmatched files in %s" +if u1: +repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) +if u2: +repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) fullcopy = copies1.copy() fullcopy.update(copies2) diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py +++ b/hgext/remotefilelog/__init__.py @@ -487,37 +487,6 @@ return orig(repo, matcher, added, removed, *args, **kwargs) extensions.wrapfunction(scmutil, '_findrenames', findrenames) -# prefetch files before mergecopies check -def computenonoverlap(orig, repo, c1, c2, *args, **kwargs): -u1, u2 = orig(repo, c1, c2, *args, **kwargs) -if isenabled(repo): -m1 = c1.manifest() -m2 = c2.manifest() -files = [] - -sparsematch1 = repo.maybesparsematch(c1.rev()) -if sparsematch1: -sparseu1 = set() -for f in u1: -if sparsematch1(f): -files.append((f, hex(m1[f]))) -sparseu1.add(f) -u1 = sparseu1 - -sparsematch2 = repo.maybesparsematch(c2.rev()) -if sparsematch2: -sparseu2 = set() -for f in u2: -if sparsematch2(f): -files.append((f, hex(m2[f]))) -sparseu2.add(f) -u2 = sparseu2 - -# batch fetch the needed files from the server -repo.fileservice.prefetch(files) -return u1, u2 -extensions.wrapfunction(copies, '_computenonoverlap', computenonoverlap) - # prefetch files before pathcopies check def computeforwardmissing(orig, a, b, match=None): missing = orig(a, b, match=match) To: martinvonz, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D6256: copies: inline _computenonoverlap() in mergecopies()
martinvonz updated this revision to Diff 14805. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D6256?vs=14785&id=14805 REVISION DETAIL https://phab.mercurial-scm.org/D6256 AFFECTED FILES hgext/remotefilelog/__init__.py mercurial/copies.py tests/test-remotefilelog-sparse.t CHANGE DETAILS diff --git a/tests/test-remotefilelog-sparse.t b/tests/test-remotefilelog-sparse.t --- a/tests/test-remotefilelog-sparse.t +++ b/tests/test-remotefilelog-sparse.t @@ -98,12 +98,5 @@ $ clearcache $ hg prefetch -r '. + .^' -I x -I z 4 files fetched over 1 fetches - (4 misses, 0.00% hit ratio) over * (glob) -Originally this was testing that the rebase doesn't fetch pointless -blobs. Right now it fails because core's sparse can't load a spec from -the working directory. Presumably there's a fix, but I'm not sure what it is. $ hg rebase -d 2 --keep rebasing 1:876b1317060d "x2" (foo) - transaction abort! - rollback completed - abort: cannot parse sparse patterns from working directory - [255] diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -353,26 +353,6 @@ return _chain(x, y, _backwardrenames(x, a, match=match), _forwardcopies(a, y, match=match)) -def _computenonoverlap(repo, c1, c2, addedinm1, addedinm2, debug=True): -"""Computes, based on addedinm1 and addedinm2, the files exclusive to c1 -and c2. This is its own function so extensions can easily wrap this call -to see what files mergecopies is about to process. - -Even though c1 and c2 are not used in this function, they are useful in -other extensions for being able to read the file nodes of the changed files. -""" -u1 = sorted(addedinm1 - addedinm2) -u2 = sorted(addedinm2 - addedinm1) - -if debug: -header = " unmatched files in %s" -if u1: -repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) -if u2: -repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) - -return u1, u2 - def mergecopies(repo, c1, c2, base): """ Finds moves and copies between context c1 and c2 that are relevant for @@ -558,7 +538,14 @@ # find interesting file sets from manifests addedinm1 = m1.filesnotin(mb, repo.narrowmatch()) addedinm2 = m2.filesnotin(mb, repo.narrowmatch()) -u1, u2 = _computenonoverlap(repo, c1, c2, addedinm1, addedinm2) +u1 = sorted(addedinm1 - addedinm2) +u2 = sorted(addedinm2 - addedinm1) + +header = " unmatched files in %s" +if u1: +repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) +if u2: +repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) fullcopy = copies1.copy() fullcopy.update(copies2) diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py +++ b/hgext/remotefilelog/__init__.py @@ -487,37 +487,6 @@ return orig(repo, matcher, added, removed, *args, **kwargs) extensions.wrapfunction(scmutil, '_findrenames', findrenames) -# prefetch files before mergecopies check -def computenonoverlap(orig, repo, c1, c2, *args, **kwargs): -u1, u2 = orig(repo, c1, c2, *args, **kwargs) -if isenabled(repo): -m1 = c1.manifest() -m2 = c2.manifest() -files = [] - -sparsematch1 = repo.maybesparsematch(c1.rev()) -if sparsematch1: -sparseu1 = set() -for f in u1: -if sparsematch1(f): -files.append((f, hex(m1[f]))) -sparseu1.add(f) -u1 = sparseu1 - -sparsematch2 = repo.maybesparsematch(c2.rev()) -if sparsematch2: -sparseu2 = set() -for f in u2: -if sparsematch2(f): -files.append((f, hex(m2[f]))) -sparseu2.add(f) -u2 = sparseu2 - -# batch fetch the needed files from the server -repo.fileservice.prefetch(files) -return u1, u2 -extensions.wrapfunction(copies, '_computenonoverlap', computenonoverlap) - # prefetch files before pathcopies check def computeforwardmissing(orig, a, b, match=None): missing = orig(a, b, match=match) To: martinvonz, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D6256: copies: inline _computenonoverlap() in mergecopies()
martinvonz updated this revision to Diff 14785. martinvonz edited the summary of this revision. REPOSITORY rHG Mercurial CHANGES SINCE LAST UPDATE https://phab.mercurial-scm.org/D6256?vs=14784&id=14785 REVISION DETAIL https://phab.mercurial-scm.org/D6256 AFFECTED FILES hgext/remotefilelog/__init__.py mercurial/copies.py tests/test-remotefilelog-sparse.t CHANGE DETAILS diff --git a/tests/test-remotefilelog-sparse.t b/tests/test-remotefilelog-sparse.t --- a/tests/test-remotefilelog-sparse.t +++ b/tests/test-remotefilelog-sparse.t @@ -98,12 +98,5 @@ $ clearcache $ hg prefetch -r '. + .^' -I x -I z 4 files fetched over 1 fetches - (4 misses, 0.00% hit ratio) over * (glob) -Originally this was testing that the rebase doesn't fetch pointless -blobs. Right now it fails because core's sparse can't load a spec from -the working directory. Presumably there's a fix, but I'm not sure what it is. $ hg rebase -d 2 --keep rebasing 1:876b1317060d "x2" (foo) - transaction abort! - rollback completed - abort: cannot parse sparse patterns from working directory - [255] diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -353,26 +353,6 @@ return _chain(x, y, _backwardrenames(x, a, match=match), _forwardcopies(a, y, match=match)) -def _computenonoverlap(repo, c1, c2, addedinm1, addedinm2, debug=True): -"""Computes, based on addedinm1 and addedinm2, the files exclusive to c1 -and c2. This is its own function so extensions can easily wrap this call -to see what files mergecopies is about to process. - -Even though c1 and c2 are not used in this function, they are useful in -other extensions for being able to read the file nodes of the changed files. -""" -u1 = sorted(addedinm1 - addedinm2) -u2 = sorted(addedinm2 - addedinm1) - -if debug: -header = " unmatched files in %s" -if u1: -repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) -if u2: -repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) - -return u1, u2 - def mergecopies(repo, c1, c2, base): """ Finds moves and copies between context c1 and c2 that are relevant for @@ -558,7 +538,14 @@ # find interesting file sets from manifests addedinm1 = m1.filesnotin(mb, repo.narrowmatch()) addedinm2 = m2.filesnotin(mb, repo.narrowmatch()) -u1, u2 = _computenonoverlap(repo, c1, c2, addedinm1, addedinm2) +u1 = sorted(addedinm1 - addedinm2) +u2 = sorted(addedinm2 - addedinm1) + +header = " unmatched files in %s" +if u1: +repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) +if u2: +repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) fullcopy = copies1.copy() fullcopy.update(copies2) diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py +++ b/hgext/remotefilelog/__init__.py @@ -487,37 +487,6 @@ return orig(repo, matcher, added, removed, *args, **kwargs) extensions.wrapfunction(scmutil, '_findrenames', findrenames) -# prefetch files before mergecopies check -def computenonoverlap(orig, repo, c1, c2, *args, **kwargs): -u1, u2 = orig(repo, c1, c2, *args, **kwargs) -if isenabled(repo): -m1 = c1.manifest() -m2 = c2.manifest() -files = [] - -sparsematch1 = repo.maybesparsematch(c1.rev()) -if sparsematch1: -sparseu1 = set() -for f in u1: -if sparsematch1(f): -files.append((f, hex(m1[f]))) -sparseu1.add(f) -u1 = sparseu1 - -sparsematch2 = repo.maybesparsematch(c2.rev()) -if sparsematch2: -sparseu2 = set() -for f in u2: -if sparsematch2(f): -files.append((f, hex(m2[f]))) -sparseu2.add(f) -u2 = sparseu2 - -# batch fetch the needed files from the server -repo.fileservice.prefetch(files) -return u1, u2 -extensions.wrapfunction(copies, '_computenonoverlap', computenonoverlap) - # prefetch files before pathcopies check def computeforwardmissing(orig, a, b, match=None): missing = orig(a, b, match=match) To: martinvonz, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
D6256: copies: inline _computenonoverlap() in mergecopies()
martinvonz created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY We now call pathcopies() from the base to each of the commits, and that calls _computeforwardmissing(), which does file prefetching (in the remotefilelog override). So the call to _computenonoverlap() is now pointless (the sets of files from _computenonoverlap() are subsets of the sets of files from _computeforwardmissing()). REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D6256 AFFECTED FILES hgext/remotefilelog/__init__.py mercurial/copies.py CHANGE DETAILS diff --git a/mercurial/copies.py b/mercurial/copies.py --- a/mercurial/copies.py +++ b/mercurial/copies.py @@ -353,26 +353,6 @@ return _chain(x, y, _backwardrenames(x, a, match=match), _forwardcopies(a, y, match=match)) -def _computenonoverlap(repo, c1, c2, addedinm1, addedinm2, debug=True): -"""Computes, based on addedinm1 and addedinm2, the files exclusive to c1 -and c2. This is its own function so extensions can easily wrap this call -to see what files mergecopies is about to process. - -Even though c1 and c2 are not used in this function, they are useful in -other extensions for being able to read the file nodes of the changed files. -""" -u1 = sorted(addedinm1 - addedinm2) -u2 = sorted(addedinm2 - addedinm1) - -if debug: -header = " unmatched files in %s" -if u1: -repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) -if u2: -repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) - -return u1, u2 - def mergecopies(repo, c1, c2, base): """ Finds moves and copies between context c1 and c2 that are relevant for @@ -558,7 +538,14 @@ # find interesting file sets from manifests addedinm1 = m1.filesnotin(mb, repo.narrowmatch()) addedinm2 = m2.filesnotin(mb, repo.narrowmatch()) -u1, u2 = _computenonoverlap(repo, c1, c2, addedinm1, addedinm2) +u1 = sorted(addedinm1 - addedinm2) +u2 = sorted(addedinm2 - addedinm1) + +header = " unmatched files in %s" +if u1: +repo.ui.debug("%s:\n %s\n" % (header % 'local', "\n ".join(u1))) +if u2: +repo.ui.debug("%s:\n %s\n" % (header % 'other', "\n ".join(u2))) fullcopy = copies1.copy() fullcopy.update(copies2) diff --git a/hgext/remotefilelog/__init__.py b/hgext/remotefilelog/__init__.py --- a/hgext/remotefilelog/__init__.py +++ b/hgext/remotefilelog/__init__.py @@ -487,37 +487,6 @@ return orig(repo, matcher, added, removed, *args, **kwargs) extensions.wrapfunction(scmutil, '_findrenames', findrenames) -# prefetch files before mergecopies check -def computenonoverlap(orig, repo, c1, c2, *args, **kwargs): -u1, u2 = orig(repo, c1, c2, *args, **kwargs) -if isenabled(repo): -m1 = c1.manifest() -m2 = c2.manifest() -files = [] - -sparsematch1 = repo.maybesparsematch(c1.rev()) -if sparsematch1: -sparseu1 = set() -for f in u1: -if sparsematch1(f): -files.append((f, hex(m1[f]))) -sparseu1.add(f) -u1 = sparseu1 - -sparsematch2 = repo.maybesparsematch(c2.rev()) -if sparsematch2: -sparseu2 = set() -for f in u2: -if sparsematch2(f): -files.append((f, hex(m2[f]))) -sparseu2.add(f) -u2 = sparseu2 - -# batch fetch the needed files from the server -repo.fileservice.prefetch(files) -return u1, u2 -extensions.wrapfunction(copies, '_computenonoverlap', computenonoverlap) - # prefetch files before pathcopies check def computeforwardmissing(orig, a, b, match=None): missing = orig(a, b, match=match) To: martinvonz, #hg-reviewers Cc: mercurial-devel ___ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel