Show More
@@ -664,7 +664,28 def revert(repo, node, choose): | |||
|
664 | 664 | |
|
665 | 665 | def verify(repo): |
|
666 | 666 | """verify the consistency of a repository""" |
|
667 |
ret |
|
|
667 | ret = verifymod.verify(repo) | |
|
668 | ||
|
669 | # Broken subrepo references in hidden csets don't seem worth worrying about, | |
|
670 | # since they can't be pushed/pulled, and --hidden can be used if they are a | |
|
671 | # concern. | |
|
672 | ||
|
673 | # pathto() is needed for -R case | |
|
674 | revs = repo.revs("filelog(%s)", | |
|
675 | util.pathto(repo.root, repo.getcwd(), '.hgsubstate')) | |
|
676 | ||
|
677 | if revs: | |
|
678 | repo.ui.status(_('checking subrepo links\n')) | |
|
679 | for rev in revs: | |
|
680 | ctx = repo[rev] | |
|
681 | try: | |
|
682 | for subpath in ctx.substate: | |
|
683 | ret = ctx.sub(subpath).verify() or ret | |
|
684 | except Exception: | |
|
685 | repo.ui.warn(_('.hgsubstate is corrupt in revision %s\n') % | |
|
686 | node.short(ctx.node())) | |
|
687 | ||
|
688 | return ret | |
|
668 | 689 | |
|
669 | 690 | def remoteui(src, opts): |
|
670 | 691 | 'build a remote ui from ui or repo and opts' |
@@ -572,6 +572,12 class abstractsubrepo(object): | |||
|
572 | 572 | def shortid(self, revid): |
|
573 | 573 | return revid |
|
574 | 574 | |
|
575 | def verify(self): | |
|
576 | '''verify the integrity of the repository. Return 0 on success or | |
|
577 | warning, 1 on any error. | |
|
578 | ''' | |
|
579 | return 0 | |
|
580 | ||
|
575 | 581 | @propertycache |
|
576 | 582 | def wvfs(self): |
|
577 | 583 | """return vfs to access the working directory of this subrepository |
@@ -1011,6 +1017,24 class hgsubrepo(abstractsubrepo): | |||
|
1011 | 1017 | def shortid(self, revid): |
|
1012 | 1018 | return revid[:12] |
|
1013 | 1019 | |
|
1020 | def verify(self): | |
|
1021 | try: | |
|
1022 | rev = self._state[1] | |
|
1023 | ctx = self._repo.unfiltered()[rev] | |
|
1024 | if ctx.hidden(): | |
|
1025 | # Since hidden revisions aren't pushed/pulled, it seems worth an | |
|
1026 | # explicit warning. | |
|
1027 | ui = self._repo.ui | |
|
1028 | ui.warn(_("subrepo '%s' is hidden in revision %s\n") % | |
|
1029 | (self._relpath, node.short(self._ctx.node()))) | |
|
1030 | return 0 | |
|
1031 | except error.RepoLookupError: | |
|
1032 | # A missing subrepo revision may be a case of needing to pull it, so | |
|
1033 | # don't treat this as an error. | |
|
1034 | self._repo.ui.warn(_("subrepo '%s' not found in revision %s\n") % | |
|
1035 | (self._relpath, node.short(self._ctx.node()))) | |
|
1036 | return 0 | |
|
1037 | ||
|
1014 | 1038 | @propertycache |
|
1015 | 1039 | def wvfs(self): |
|
1016 | 1040 | """return own wvfs for efficiency and consitency |
@@ -129,6 +129,7 test with "/" URI (issue747) and subrepo | |||
|
129 | 129 | crosschecking files in changesets and manifests |
|
130 | 130 | checking files |
|
131 | 131 | 3 files, 1 changesets, 3 total revisions |
|
132 | checking subrepo links | |
|
132 | 133 | $ cat a |
|
133 | 134 | a |
|
134 | 135 | $ hg paths |
@@ -106,4 +106,19 check that --hidden is propagated to the | |||
|
106 | 106 | $ hg --hidden cat subrepo/a |
|
107 | 107 | foo |
|
108 | 108 | |
|
109 | verify will warn if locked-in subrepo revisions are hidden or missing | |
|
110 | ||
|
111 | $ hg ci -m "amended subrepo (again)" | |
|
112 | $ hg --config extensions.strip= --hidden strip -R subrepo -qr 'tip' | |
|
113 | $ hg verify | |
|
114 | checking changesets | |
|
115 | checking manifests | |
|
116 | crosschecking files in changesets and manifests | |
|
117 | checking files | |
|
118 | 2 files, 5 changesets, 5 total revisions | |
|
119 | checking subrepo links | |
|
120 | subrepo 'subrepo' is hidden in revision a66de08943b6 | |
|
121 | subrepo 'subrepo' is hidden in revision 674d05939c1e | |
|
122 | subrepo 'subrepo' not found in revision a7d05d9055a4 | |
|
123 | ||
|
109 | 124 | $ cd .. |
General Comments 0
You need to be logged in to leave comments.
Login now